Update ncurses from version 5.7 to 5.9 on vendor branch
authorJohn Marino <draco@marino.st>
Fri, 11 May 2012 17:17:25 +0000 (19:17 +0200)
committerJohn Marino <draco@marino.st>
Fri, 11 May 2012 21:12:28 +0000 (23:12 +0200)
310 files changed:
contrib/ncurses/ANNOUNCE
contrib/ncurses/INSTALL
contrib/ncurses/MANIFEST
contrib/ncurses/NEWS
contrib/ncurses/README.DELETED [deleted file]
contrib/ncurses/README.DRAGONFLY [deleted file]
contrib/ncurses/TO-DO
contrib/ncurses/form/f_trace.c
contrib/ncurses/form/fld_arg.c
contrib/ncurses/form/fld_attr.c
contrib/ncurses/form/fld_current.c
contrib/ncurses/form/fld_def.c
contrib/ncurses/form/fld_dup.c
contrib/ncurses/form/fld_ftchoice.c
contrib/ncurses/form/fld_ftlink.c
contrib/ncurses/form/fld_info.c
contrib/ncurses/form/fld_just.c
contrib/ncurses/form/fld_link.c
contrib/ncurses/form/fld_max.c
contrib/ncurses/form/fld_move.c
contrib/ncurses/form/fld_newftyp.c
contrib/ncurses/form/fld_opts.c
contrib/ncurses/form/fld_pad.c
contrib/ncurses/form/fld_page.c
contrib/ncurses/form/fld_stat.c
contrib/ncurses/form/fld_type.c
contrib/ncurses/form/fld_user.c
contrib/ncurses/form/form.h
contrib/ncurses/form/form.priv.h
contrib/ncurses/form/frm_cursor.c
contrib/ncurses/form/frm_data.c
contrib/ncurses/form/frm_def.c
contrib/ncurses/form/frm_driver.c
contrib/ncurses/form/frm_hook.c
contrib/ncurses/form/frm_opts.c
contrib/ncurses/form/frm_page.c
contrib/ncurses/form/frm_post.c
contrib/ncurses/form/frm_req_name.c
contrib/ncurses/form/frm_scale.c
contrib/ncurses/form/frm_sub.c
contrib/ncurses/form/frm_user.c
contrib/ncurses/form/frm_win.c
contrib/ncurses/form/fty_alnum.c
contrib/ncurses/form/fty_alpha.c
contrib/ncurses/form/fty_enum.c
contrib/ncurses/form/fty_generic.c [new file with mode: 0644]
contrib/ncurses/form/fty_int.c
contrib/ncurses/form/fty_ipv4.c
contrib/ncurses/form/fty_num.c
contrib/ncurses/form/fty_regex.c
contrib/ncurses/include/Caps
contrib/ncurses/include/MKhashsize.sh [changed mode: 0644->0755]
contrib/ncurses/include/MKkey_defs.sh [changed mode: 0644->0755]
contrib/ncurses/include/MKncurses_def.sh [changed mode: 0644->0755]
contrib/ncurses/include/MKparametrized.sh [changed mode: 0644->0755]
contrib/ncurses/include/Makefile.in [deleted file]
contrib/ncurses/include/capdefaults.c
contrib/ncurses/include/curses.tail
contrib/ncurses/include/curses.wide
contrib/ncurses/include/edit_cfg.sh [changed mode: 0644->0755]
contrib/ncurses/include/nc_alloc.h
contrib/ncurses/include/nc_panel.h
contrib/ncurses/include/nc_tparm.h
contrib/ncurses/include/ncurses_defs
contrib/ncurses/include/ncurses_dll.h [deleted file]
contrib/ncurses/include/term_entry.h
contrib/ncurses/include/tic.h
contrib/ncurses/include/unctrl.h.in [deleted file]
contrib/ncurses/menu/m_attribs.c
contrib/ncurses/menu/m_cursor.c
contrib/ncurses/menu/m_driver.c
contrib/ncurses/menu/m_format.c
contrib/ncurses/menu/m_global.c
contrib/ncurses/menu/m_hook.c
contrib/ncurses/menu/m_item_cur.c
contrib/ncurses/menu/m_item_nam.c
contrib/ncurses/menu/m_item_new.c
contrib/ncurses/menu/m_item_opt.c
contrib/ncurses/menu/m_item_top.c
contrib/ncurses/menu/m_item_use.c
contrib/ncurses/menu/m_item_val.c
contrib/ncurses/menu/m_item_vis.c
contrib/ncurses/menu/m_items.c
contrib/ncurses/menu/m_new.c
contrib/ncurses/menu/m_opts.c
contrib/ncurses/menu/m_pad.c
contrib/ncurses/menu/m_pattern.c
contrib/ncurses/menu/m_post.c
contrib/ncurses/menu/m_req_name.c
contrib/ncurses/menu/m_scale.c
contrib/ncurses/menu/m_spacing.c
contrib/ncurses/menu/m_sub.c
contrib/ncurses/menu/m_trace.c
contrib/ncurses/menu/m_userptr.c
contrib/ncurses/menu/m_win.c
contrib/ncurses/menu/menu.h
contrib/ncurses/menu/menu.priv.h
contrib/ncurses/misc/indent.pro [deleted file]
contrib/ncurses/mkinstalldirs [deleted file]
contrib/ncurses/ncurses/base/MKkeyname.awk
contrib/ncurses/ncurses/base/MKlib_gen.sh [changed mode: 0644->0755]
contrib/ncurses/ncurses/base/MKunctrl.awk
contrib/ncurses/ncurses/base/define_key.c
contrib/ncurses/ncurses/base/key_defined.c
contrib/ncurses/ncurses/base/keybound.c
contrib/ncurses/ncurses/base/keyok.c
contrib/ncurses/ncurses/base/legacy_coding.c
contrib/ncurses/ncurses/base/lib_addch.c
contrib/ncurses/ncurses/base/lib_addstr.c
contrib/ncurses/ncurses/base/lib_beep.c
contrib/ncurses/ncurses/base/lib_bkgd.c
contrib/ncurses/ncurses/base/lib_box.c
contrib/ncurses/ncurses/base/lib_chgat.c
contrib/ncurses/ncurses/base/lib_clear.c
contrib/ncurses/ncurses/base/lib_clearok.c
contrib/ncurses/ncurses/base/lib_clrbot.c
contrib/ncurses/ncurses/base/lib_clreol.c
contrib/ncurses/ncurses/base/lib_color.c
contrib/ncurses/ncurses/base/lib_colorset.c
contrib/ncurses/ncurses/base/lib_delch.c
contrib/ncurses/ncurses/base/lib_delwin.c
contrib/ncurses/ncurses/base/lib_dft_fgbg.c
contrib/ncurses/ncurses/base/lib_echo.c
contrib/ncurses/ncurses/base/lib_endwin.c
contrib/ncurses/ncurses/base/lib_erase.c
contrib/ncurses/ncurses/base/lib_flash.c
contrib/ncurses/ncurses/base/lib_freeall.c
contrib/ncurses/ncurses/base/lib_getch.c
contrib/ncurses/ncurses/base/lib_getstr.c
contrib/ncurses/ncurses/base/lib_hline.c
contrib/ncurses/ncurses/base/lib_immedok.c
contrib/ncurses/ncurses/base/lib_inchstr.c
contrib/ncurses/ncurses/base/lib_initscr.c
contrib/ncurses/ncurses/base/lib_insch.c
contrib/ncurses/ncurses/base/lib_insdel.c
contrib/ncurses/ncurses/base/lib_insnstr.c
contrib/ncurses/ncurses/base/lib_instr.c
contrib/ncurses/ncurses/base/lib_isendwin.c
contrib/ncurses/ncurses/base/lib_leaveok.c
contrib/ncurses/ncurses/base/lib_mouse.c
contrib/ncurses/ncurses/base/lib_move.c
contrib/ncurses/ncurses/base/lib_mvwin.c
contrib/ncurses/ncurses/base/lib_newterm.c
contrib/ncurses/ncurses/base/lib_newwin.c
contrib/ncurses/ncurses/base/lib_nl.c
contrib/ncurses/ncurses/base/lib_overlay.c
contrib/ncurses/ncurses/base/lib_pad.c
contrib/ncurses/ncurses/base/lib_printw.c
contrib/ncurses/ncurses/base/lib_redrawln.c
contrib/ncurses/ncurses/base/lib_refresh.c
contrib/ncurses/ncurses/base/lib_restart.c
contrib/ncurses/ncurses/base/lib_scanw.c
contrib/ncurses/ncurses/base/lib_screen.c
contrib/ncurses/ncurses/base/lib_scroll.c
contrib/ncurses/ncurses/base/lib_scrollok.c
contrib/ncurses/ncurses/base/lib_scrreg.c
contrib/ncurses/ncurses/base/lib_set_term.c
contrib/ncurses/ncurses/base/lib_slk.c
contrib/ncurses/ncurses/base/lib_slkatr_set.c
contrib/ncurses/ncurses/base/lib_slkatrof.c
contrib/ncurses/ncurses/base/lib_slkatron.c
contrib/ncurses/ncurses/base/lib_slkatrset.c
contrib/ncurses/ncurses/base/lib_slkattr.c
contrib/ncurses/ncurses/base/lib_slkclear.c
contrib/ncurses/ncurses/base/lib_slkcolor.c
contrib/ncurses/ncurses/base/lib_slkinit.c
contrib/ncurses/ncurses/base/lib_slklab.c
contrib/ncurses/ncurses/base/lib_slkrefr.c
contrib/ncurses/ncurses/base/lib_slkset.c
contrib/ncurses/ncurses/base/lib_slktouch.c
contrib/ncurses/ncurses/base/lib_touch.c
contrib/ncurses/ncurses/base/lib_ungetch.c
contrib/ncurses/ncurses/base/lib_vline.c
contrib/ncurses/ncurses/base/lib_wattroff.c
contrib/ncurses/ncurses/base/lib_wattron.c
contrib/ncurses/ncurses/base/lib_winch.c
contrib/ncurses/ncurses/base/lib_window.c
contrib/ncurses/ncurses/base/nc_panel.c
contrib/ncurses/ncurses/base/resizeterm.c
contrib/ncurses/ncurses/base/safe_sprintf.c
contrib/ncurses/ncurses/base/tries.c
contrib/ncurses/ncurses/base/use_window.c
contrib/ncurses/ncurses/base/wresize.c
contrib/ncurses/ncurses/build.priv.h [moved from contrib/ncurses/include/termcap.h.in with 61% similarity]
contrib/ncurses/ncurses/curses.priv.h
contrib/ncurses/ncurses/tinfo/MKcaptab.sh
contrib/ncurses/ncurses/tinfo/MKcodes.awk
contrib/ncurses/ncurses/tinfo/MKfallback.sh [changed mode: 0644->0755]
contrib/ncurses/ncurses/tinfo/MKkeys_list.sh [changed mode: 0644->0755]
contrib/ncurses/ncurses/tinfo/MKnames.awk
contrib/ncurses/ncurses/tinfo/access.c
contrib/ncurses/ncurses/tinfo/add_tries.c
contrib/ncurses/ncurses/tinfo/alloc_entry.c
contrib/ncurses/ncurses/tinfo/alloc_ttype.c
contrib/ncurses/ncurses/tinfo/captoinfo.c
contrib/ncurses/ncurses/tinfo/comp_expand.c
contrib/ncurses/ncurses/tinfo/comp_hash.c
contrib/ncurses/ncurses/tinfo/comp_parse.c
contrib/ncurses/ncurses/tinfo/comp_scan.c
contrib/ncurses/ncurses/tinfo/db_iterator.c
contrib/ncurses/ncurses/tinfo/entries.c
contrib/ncurses/ncurses/tinfo/free_ttype.c
contrib/ncurses/ncurses/tinfo/hashed_db.c
contrib/ncurses/ncurses/tinfo/home_terminfo.c
contrib/ncurses/ncurses/tinfo/init_keytry.c
contrib/ncurses/ncurses/tinfo/lib_acs.c
contrib/ncurses/ncurses/tinfo/lib_baudrate.c
contrib/ncurses/ncurses/tinfo/lib_cur_term.c
contrib/ncurses/ncurses/tinfo/lib_data.c
contrib/ncurses/ncurses/tinfo/lib_has_cap.c
contrib/ncurses/ncurses/tinfo/lib_kernel.c
contrib/ncurses/ncurses/tinfo/lib_longname.c
contrib/ncurses/ncurses/tinfo/lib_napms.c
contrib/ncurses/ncurses/tinfo/lib_options.c
contrib/ncurses/ncurses/tinfo/lib_print.c
contrib/ncurses/ncurses/tinfo/lib_raw.c
contrib/ncurses/ncurses/tinfo/lib_setup.c
contrib/ncurses/ncurses/tinfo/lib_termcap.c
contrib/ncurses/ncurses/tinfo/lib_termname.c
contrib/ncurses/ncurses/tinfo/lib_ti.c
contrib/ncurses/ncurses/tinfo/lib_tparm.c
contrib/ncurses/ncurses/tinfo/lib_tputs.c
contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
contrib/ncurses/ncurses/tinfo/make_hash.c [copied from contrib/ncurses/ncurses/tinfo/comp_hash.c with 78% similarity]
contrib/ncurses/ncurses/tinfo/make_keys.c
contrib/ncurses/ncurses/tinfo/name_match.c
contrib/ncurses/ncurses/tinfo/parse_entry.c
contrib/ncurses/ncurses/tinfo/read_entry.c
contrib/ncurses/ncurses/tinfo/read_termcap.c
contrib/ncurses/ncurses/tinfo/setbuf.c
contrib/ncurses/ncurses/tinfo/trim_sgr0.c
contrib/ncurses/ncurses/tinfo/use_screen.c
contrib/ncurses/ncurses/tinfo/write_entry.c
contrib/ncurses/ncurses/trace/lib_trace.c
contrib/ncurses/ncurses/trace/lib_traceatr.c
contrib/ncurses/ncurses/trace/lib_tracebits.c
contrib/ncurses/ncurses/trace/lib_tracechr.c
contrib/ncurses/ncurses/trace/lib_tracedmp.c
contrib/ncurses/ncurses/trace/lib_tracemse.c
contrib/ncurses/ncurses/trace/trace_buf.c
contrib/ncurses/ncurses/trace/trace_tries.c
contrib/ncurses/ncurses/trace/trace_xnames.c
contrib/ncurses/ncurses/trace/varargs.c
contrib/ncurses/ncurses/trace/visbuf.c
contrib/ncurses/ncurses/tty/MKexpanded.sh [changed mode: 0644->0755]
contrib/ncurses/ncurses/tty/hardscroll.c
contrib/ncurses/ncurses/tty/hashmap.c
contrib/ncurses/ncurses/tty/lib_mvcur.c
contrib/ncurses/ncurses/tty/lib_tstp.c
contrib/ncurses/ncurses/tty/lib_twait.c
contrib/ncurses/ncurses/tty/lib_vidattr.c
contrib/ncurses/ncurses/tty/tty_update.c
contrib/ncurses/ncurses/wcwidth.h [new file with mode: 0644]
contrib/ncurses/ncurses/widechar/lib_add_wch.c
contrib/ncurses/ncurses/widechar/lib_box_set.c
contrib/ncurses/ncurses/widechar/lib_cchar.c
contrib/ncurses/ncurses/widechar/lib_erasewchar.c
contrib/ncurses/ncurses/widechar/lib_get_wch.c
contrib/ncurses/ncurses/widechar/lib_get_wstr.c
contrib/ncurses/ncurses/widechar/lib_hline_set.c
contrib/ncurses/ncurses/widechar/lib_in_wch.c
contrib/ncurses/ncurses/widechar/lib_in_wchnstr.c
contrib/ncurses/ncurses/widechar/lib_ins_wch.c
contrib/ncurses/ncurses/widechar/lib_inwstr.c
contrib/ncurses/ncurses/widechar/lib_pecho_wchar.c
contrib/ncurses/ncurses/widechar/lib_unget_wch.c
contrib/ncurses/ncurses/widechar/lib_vid_attr.c
contrib/ncurses/ncurses/widechar/lib_vline_set.c
contrib/ncurses/ncurses/widechar/lib_wacs.c
contrib/ncurses/ncurses/widechar/lib_wunctrl.c
contrib/ncurses/panel/p_above.c
contrib/ncurses/panel/p_below.c
contrib/ncurses/panel/p_bottom.c
contrib/ncurses/panel/p_delete.c
contrib/ncurses/panel/p_hidden.c
contrib/ncurses/panel/p_hide.c
contrib/ncurses/panel/p_move.c
contrib/ncurses/panel/p_new.c
contrib/ncurses/panel/p_replace.c
contrib/ncurses/panel/p_show.c
contrib/ncurses/panel/p_top.c
contrib/ncurses/panel/p_update.c
contrib/ncurses/panel/p_user.c
contrib/ncurses/panel/p_win.c
contrib/ncurses/panel/panel.c
contrib/ncurses/panel/panel.h
contrib/ncurses/panel/panel.priv.h
contrib/ncurses/tack/COPYING [deleted file]
contrib/ncurses/tack/HISTORY [deleted file]
contrib/ncurses/tack/Makefile.in [deleted file]
contrib/ncurses/tack/README [deleted file]
contrib/ncurses/tack/ansi.c [deleted file]
contrib/ncurses/tack/charset.c [deleted file]
contrib/ncurses/tack/color.c [deleted file]
contrib/ncurses/tack/control.c [deleted file]
contrib/ncurses/tack/crum.c [deleted file]
contrib/ncurses/tack/edit.c [deleted file]
contrib/ncurses/tack/fun.c [deleted file]
contrib/ncurses/tack/init.c [deleted file]
contrib/ncurses/tack/menu.c [deleted file]
contrib/ncurses/tack/modes.c [deleted file]
contrib/ncurses/tack/modules [deleted file]
contrib/ncurses/tack/output.c [deleted file]
contrib/ncurses/tack/pad.c [deleted file]
contrib/ncurses/tack/scan.c [deleted file]
contrib/ncurses/tack/sync.c [deleted file]
contrib/ncurses/tack/sysdep.c [deleted file]
contrib/ncurses/tack/tack.1 [deleted file]
contrib/ncurses/tack/tack.c [deleted file]
contrib/ncurses/tack/tack.h [deleted file]

index e09e731..11933c5 100644 (file)
@@ -1,4 +1,4 @@
-                            Announcing ncurses 5.7
+                            Announcing ncurses 5.9
 
    The  ncurses  (new  curses)  library  is  a free software emulation of
    curses  in  System  V  Release 4.0, and more. It uses terminfo format,
                                  Release Notes
 
    This  release  is  designed  to  be upward compatible from ncurses 5.0
-   through   5.6;  very  few  applications  will  require  recompilation,
+   through   5.8;  very  few  applications  will  require  recompilation,
    depending   on  the  platform.  These  are  the  highlights  from  the
-   change-log since ncurses 5.6 release.
-
-   Interface changes:
-     * generate linkable stubs for some macros:
-       getattrs
-
-   New features and improvements:
-     * library
-          + new  flavor  of  the  ncurses  library  provides  rudimentary
-            support  for  POSIX threads. Several functions are reentrant,
-            but most require either a window-level or screen-level mutex.
-            (This  is  API-compatible,  but  not  ABI-compatible with the
-            normal library).
-          + add  NCURSES_OPAQUE  symbol  to  curses.h,  will  use to make
-            structs opaque in selected configurations.
-          + add   NCURSES_EXT_FUNCS  and  NCURSES_EXT_COLORS  symbols  to
-            curses.h to make it simpler to tell if the extended functions
-            and/or colors are declared.
-          + add wresize() to C++ binding
-          + eliminate fixed-buffer vsprintf() calls in C++ binding.
-          + add  several  functions to C++ binding which wrap C functions
-            that pass a WINDOW* parameter.
-          + adapt mouse-handling code from menu library in form-library
-          + improve  tracing  for  form  library,  showing created forms,
-            fields, etc.
-          + make $NCURSES_NO_PADDING feature work for termcap interface .
-          + add  check  to  trace-file  open,  if  the  given  name  is a
-            directory, add ".log" to the name and try again.
-          + several   new   manpages:  curs_legacy.3x,  curs_memleaks.3x,
-            curs_opaque.3x and curs_threads.3x
-     * programs:
-          + modified  three  test-programs  to  demonstrate the threading
-            support in this version: ditto, rain, worm.
-          + several    new    test-programs:   demo_panels,   dots_mvcur,
-            inch_wide,    inchs,    key_name,    key_names,   savescreen,
-            savescreen.sh    test_arrays,   test_get_wstr,   test_getstr,
-            test_instr, test_inwstr and test_opaque.
-          + add adacurses-config to the Ada95 install.
-          + modify  tic  -f option to format spaces as \s to prevent them
-            from  being  lost  when  that  is  read  back  in unformatted
-            strings.
-          + The tack program is now distributed separately from ncurses.
-     * terminal database
-          + added entries:
-               o Eterm-256color, Eterm-88color and rxvt-88color
-               o aterm
-               o konsole-256color
-               o mrxvt
-               o screen.mlterm
-               o screen.rxvt
-               o teraterm4.59  is now the primary primary teraterm entry,
-                 renamed original to teraterm2.3
-               o 9term terminal
-               o Newbury Data entries
-          + updated/improved entries:
-               o gnome to version 2.22.3
-               o h19, z100
-               o konsole to version 1.6.6
-               o mlterm, mlterm+pcfkeys
-               o xterm, and building-blocks for function-keys to [3]xterm
-                 patch #230.
-
-   Major bug fixes:
-     * add   logic   to   tic  for  cancelling  strings  in  user-defined
-       capabilities (this is needed for current konsole terminfo entry).
-     * modify  mk-1st.awk  so the generated makefile rules for linking or
-       installing  shared  libraries  do not first remove the library, in
-       case it is in use, e.g., libncurses.so by /bin/sh.
-     * correct check for notimeout() in wgetch().
-     * fix a sign-extension bug in infocmp's repair_acsc() function.
-     * change winnstr() to stop at the end of the line.
-     * make Ada95 demo_panels() example work.
-     * fix for adding a non-spacing character at the beginning of a line.
-     * fill   in   extended-color   pair   to   make   colors   work  for
-       wide-characters using extended-colors.
-     * improve  refresh  of  window  on  top  of multi-column characters,
-       taking   into   account  split  characters  on  left/right  window
-       boundaries.
-     * modify  win_wchnstr()  to ensure that only a base cell is returned
-       for each multi-column character.
-     * improve waddch() and winsch() handling of EILSEQ from mbrtowc() by
-       using  unctrl()  to  display  illegal  bytes rather than trying to
-       append further bytes to make up a valid sequence.
-     * restore curs_set() state after endwin()/refresh()
-     * modify  keyname() to use "^X" form only if meta() has been called,
-       or  if  keyname() is called without initializing curses, e.g., via
-       initscr() or newterm().
-     * modify  unctrl() to check codes in 128-255 range versus isprint().
-       If  they  are not printable, and locale was set, use a "M-" or "~"
-       sequence.
-     * improve  resizeterm()  by  moving ripped-off lines, and repainting
-       the soft-keys.
-     * modify  form  library to accept control characters such as newline
-       in set_field_buffer(), which is compatible with Solaris.
-     * use  NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc.,
-       to   make   those   work   properly  with  the  --enable-ext-mouse
-       configuration
-     * correct  some  functions  in Ada95 binding which were using return
-       value from C where none was returned.
-     * reviewed/fixed issues reported by Coverity and Klocwork tools.
-
-   Portability:
-     * configure script:
-          + new options:
-
-              --disable-big-strings
-                      control  whether static string tables are generated
-                      as   single   large  strings  (to  improve  startup
-                      performance), or as array of individual strings.
-
-              --disable-relink
-                      control   whether  shared  libraries  are  relinked
-                      (during install) when rpath is enabled.
-
-              --disable-tic-depends
-                      make   explicit  whether  tic  library  depends  on
-                      ncurses/ncursesw library.
-
-              --enable-mixed-case
-                      override   the  configure  script's  check  if  the
-                      filesystem   supports  mixed-case  filenames.  This
-                      allows  one  to  control  how the terminal database
-                      maps to the filesystem. For filesystems that do not
-                      support   mixed-case,  the  library  uses  generate
-                      2-character (hexadecimal) codes for the lower-level
-                      of the filesystem terminfo database
-
-              --enable-reentrant
-                      builds  a  different  flavor of the ncurses library
-                      (ncursest)  which  improves  reentrant  use  of the
-                      library  by  reducing  global  and static variables
-                      (see  the  "--with-pthread" option for the threaded
-                      support).
-
-              --enable-weak-symbols
-                      use  weak-symbols  for  linking to the POSIX thread
-                      library,  and  use  the same soname for the ncurses
-                      shared  library  as the normal library (caveat: the
-                      ABI is for the threaded library, which makes global
-                      data accessed via functions).
-
-              --with-pthread
-                      build  with  the  POSIX thread library (tested with
-                      AIX,   Linux,   FreeBSD,   OpenBSD,  HPUX,  IRIX64,
-                      Solaris, Tru64).
-
-              --with-ticlib
-                      build/install   the   tic-support  functions  in  a
-                      separate library
-
-          + improved options:
-
-              --enable-ext-colors
-                      requires the wide-character configuration.
-
-              --with-chtype
-                      ignore  option  value "unsigned" is always added to
-                      the   type   in   curses.h;   do   the   same   for
-                      --with-mmask-t.
-
-              --with-dmalloc
-                      build-fix for redefinition of strndup.
-
-              --with-hashed-db
-                      accepts  a parameter which is the install-prefix of
-                      a given Berkeley Database.
-
-              --with-hashed-db
-                      the $LIBS environment variable overrides the search
-                      for the db library.
-
-              --without-hashed-db
-                      assumed when "--disable-database" is used.
-
-     * other configure/build issues:
-          + build-fixes for LynxOS
-          + modify  shared-library  rules  to  allow  FreeBSD  3.x to use
-            rpath.
-          + build-fix for FreeBSD "contemporary" TTY interface.
-          + build-fixes for AIX with libtool.
-          + build-fixes for Darwin and libtool.
-          + modify BeOS-specific ifdef's to build on Haiku.
-          + corrected  gcc  options  for  building  shared  libraries  on
-            Solaris and IRIX64.
-          + change  shared-library  configuration for OpenBSD, make rpath
-            work.
-          + build-fixes for using libutf8, e.g., on OpenBSD 3.7
-          + add   "-e"  option  in  ncurses/Makefile.in  when  generating
-            source-files  to  force earlier exit if the build environment
-            fails unexpectedly.
-          + add support for shared libraries for QNX.
-          + change  delimiter  in  MKlib_gen.sh from '%' to '@', to avoid
-            substitution  by  IBM xlc to '#' as part of its extensions to
-            digraphs.
-     * library:
-          + rewrite  wrapper  for  wcrtomb(),  making it work on Solaris.
-            This  is  used in the form library to determine the length of
-            the buffer needed by field_buffer.
-          + add/use  configure  script  macro  CF_SIG_ATOMIC_T,  use  the
-            corresponding type for data manipulated by signal handlers.
-          + set locale in misc/ncurses-config.in since it uses a range
-          + disable  GPM  mouse  support  when  $TERM  does not happen to
-            contain  "linux",  since  Gpm_Open()  no  longer  limits  its
-            assertion  to  terminals  that  it might handle, e.g., within
-            "screen" in xterm.
-          + reset mouse file-descriptor when unloading GPM library.
-     * test programs:
-          + update  test  programs to build/work with various UNIX curses
-            for comparisons.
+   change-log since ncurses 5.8 release.
+
+   This  is  a  bug-fix  release,  correcting  a  small  number of urgent
+   problems in the ncurses library from the 5.8 release.
+
+   It also improves the Ada95 binding:
+     * fixes  a  longstanding  portability  problem  with  its use of the
+       [3]set_field_type    function.    Because   that   function   uses
+       variable-length  argument  lists, its interface with gnat does not
+       work with certain platforms.
+     * improves  configurability and portability, particularly when built
+       separately  from the main ncurses tree. The 5.8 release introduced
+       scripts  which  can be used to construct separate tarballs for the
+       Ada95 and ncurses examples.
+       Those  were a proof of concept. For the 5.9 release, those scripts
+       are  augmented  with  rpm-  and  dpkg-scripts  used in test builds
+       against  a  variety of gnat- and system ncurses versions as old as
+       gnat  3.15  and  ncurses  5.4  (see  snapshots  and systems tested
+       [4]here.
+     * additional  improvements  were made for portability of the ncurses
+       examples,  adding  rpm-  and  dpkg-scripts  for  test-builds.  See
+       [5]this page for snapshots and other information.
 
                               Features of Ncurses
 
      * Support  for mouse event reporting with X Window xterm and FreeBSD
        and OS/2 console windows.
      * Extended mouse support via Alessandro Rubini's gpm package.
-     * The  function  wresize()  allows you to resize windows, preserving
+     * The  function  wresize  allows  you  to resize windows, preserving
        their data.
-     * The function use_default_colors() allows you to use the terminal's
+     * The  function  use_default_colors allows you to use the terminal's
        default colors for the default color pair, achieving the effect of
        transparent colors.
-     * The functions keyok() and define_key() allow you to better control
-       the  use  of function keys, e.g., disabling the ncurses KEY_MOUSE,
-       or  by  defining  more than one control sequence to map to a given
-       key code.
+     * The functions keyok and define_key allow you to better control the
+       use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
+       defining  more  than  one  control  sequence to map to a given key
+       code.
      * Support  for  256-color  terminals,  such  as  modern  xterm, when
        configured using the --enable-ext-colors option.
      * Support for 16-color terminals, such as aixterm and modern xterm.
        incorporates  a novel, simple, and cheap algorithm that enables it
        to  make  optimal  use  of hardware scrolling, line-insertion, and
        line-deletion  for  screen-line  movements. This algorithm is more
-       powerful than the 4.4BSD curses quickch() routine.
+       powerful than the 4.4BSD curses quickch routine.
      * Real  support  for  terminals  with  the  magic-cookie glitch. The
        screen-update  code  will  refrain from drawing a highlight if the
        magic-   cookie  unattributed  spaces  required  just  before  the
 
    cdk
           Curses Development Kit
-          [4]http://invisible-island.net/cdk/
-          [5]http://www.vexus.ca/products/CDK/
+          [6]http://invisible-island.net/cdk/
+          [7]http://www.vexus.ca/products/CDK/
 
    ded
           directory-editor
-          [6]http://invisible-island.net/ded/
+          [8]http://invisible-island.net/ded/
 
    dialog
           the  underlying  application used in Slackware's setup, and the
           basis for similar applications on GNU/Linux.
-          [7]http://invisible-island.net/dialog/
+          [9]http://invisible-island.net/dialog/
 
    lynx
           the character-screen WWW browser
-          [8]http://lynx.isc.org/release/
+          [10]http://lynx.isc.org/release/
 
    Midnight Commander
           file manager
-          [9]http://www.ibiblio.org/mc/
+          [11]http://www.midnight-commander.org/
 
    mutt
           mail utility
-          [10]http://www.mutt.org/
+          [12]http://www.mutt.org/
 
    ncftp
           file-transfer utility
-          [11]http://www.ncftp.com/
+          [13]http://www.ncftp.com/
 
    nvi
           New vi versions 1.50 are able to use ncurses versions 1.9.7 and
           later.
-          [12]http://www.bostic.com/vi/
+          [14]https://sites.google.com/a/bostic.com/keithbostic/nvi
 
    pinfo
           Lynx-like info browser.
-          [13]https://alioth.debian.org/projects/pinfo/
+          [15]https://alioth.debian.org/projects/pinfo/
 
    tin
-          newsreader, supporting color, MIME [14]http://www.tin.org/
+          newsreader, supporting color, MIME [16]http://www.tin.org/
 
    as well as some that use ncurses for the terminfo support alone:
 
    minicom
           terminal emulator
-          [15]http://alioth.debian.org/projects/minicom/
+          [17]http://alioth.debian.org/projects/minicom/
 
    vile
           vi-like-emacs
-          [16]http://invisible-island.net/vile/
+          [18]http://invisible-island.net/vile/
 
    The  ncurses  distribution  includes  a  selection  of  test  programs
    (including a few games).
 Who's Who and What's What
 
    Zeyd  Ben-Halim started it from a previous package pcurses, written by
-   Pavel  Curtis.  Eric  S. Raymond continued development. Jürgen Pfeifer
+   Pavel  Curtis.  Eric S. Raymond continued development. Juergen Pfeifer
    wrote  most of the form and menu libraries. Ongoing work is being done
-   by  [17]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
+   by  [19]Thomas  Dickey.  Thomas  Dickey acts as the maintainer for the
    Free  Software  Foundation,  which  holds  the  copyright  on ncurses.
-   Contact the current maintainers at [18]bug-ncurses@gnu.org.
+   Contact the current maintainers at [20]bug-ncurses@gnu.org.
 
    To   join   the   ncurses   mailing   list,   please  write  email  to
    bug-ncurses-request@gnu.org containing the line:
@@ -426,7 +239,7 @@ Who's Who and What's What
    and testing of this package.
 
    Beta  versions  of ncurses and patches to the current release are made
-   available at [19]ftp://invisible-island.net/ncurses/ .
+   available at [21]ftp://invisible-island.net/ncurses/ .
 
 Future Plans
 
@@ -440,34 +253,36 @@ Future Plans
 Other Related Resources
 
    The  distribution  provides  a  newer  version  of the terminfo-format
-   terminal description file once maintained by [20]Eric Raymond . Unlike
+   terminal description file once maintained by [22]Eric Raymond . Unlike
    the  older  version, the termcap and terminfo data are provided in the
    same  file,  and provides several user-definable extensions beyond the
    X/Open specification.
 
    You  can  find  lots  of  information  on  terminal-related topics not
-   covered in the terminfo file at [21]Richard Shuford's archive .
+   covered in the terminfo file at [23]Richard Shuford's archive .
 
 References
 
    1. ftp://ftp.gnu.org/gnu/ncurses/
    2. ftp://invisible-island.net/ncurses/
-   3. http://invisible-island.net/xterm/xterm.log.html#xterm_230
-   4. http://invisible-island.net/cdk/
-   5. http://www.vexus.ca/products/CDK/
-   6. http://invisible-island.net/ded/
-   7. http://invisible-island.net/dialog/
-   8. http://lynx.isc.org/release/
-   9. http://www.ibiblio.org/mc/
-  10. http://www.mutt.org/
-  11. http://www.ncftp.com/
-  12. http://www.bostic.com/vi/
-  13. https://alioth.debian.org/projects/pinfo/
-  14. http://www.tin.org/
-  15. http://alioth.debian.org/projects/minicom/
-  16. http://invisible-island.net/vile/
-  17. mailto:dickey@invisible-island.net
-  18. mailto:bug-ncurses@gnu.org
-  19. ftp://invisible-island.net/ncurses/
-  20. http://www.catb.org/~esr/terminfo/
-  21. http://www.cs.utk.edu/~shuford/terminal_index.html
+   3. http://invisible-island.net/ncurses/man/form_fieldtype.3x
+   4. http://invisible-island.net/ncurses/ncurses-Ada95.html
+   5. http://invisible-island.net/ncurses/ncurses-examples.html
+   6. http://invisible-island.net/cdk/
+   7. http://www.vexus.ca/products/CDK/
+   8. http://invisible-island.net/ded/
+   9. http://invisible-island.net/dialog/
+  10. http://lynx.isc.org/release/
+  11. http://www.midnight-commander.org/
+  12. http://www.mutt.org/
+  13. http://www.ncftp.com/
+  14. https://sites.google.com/a/bostic.com/keithbostic/nvi
+  15. https://alioth.debian.org/projects/pinfo/
+  16. http://www.tin.org/
+  17. http://alioth.debian.org/projects/minicom/
+  18. http://invisible-island.net/vile/
+  19. mailto:dickey@invisible-island.net
+  20. mailto:bug-ncurses@gnu.org
+  21. ftp://invisible-island.net/ncurses/
+  22. http://www.catb.org/~esr/terminfo/
+  23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal
index ab7dcd8..eb26ab1 100644 (file)
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.               --
+-- Copyright (c) 1998-2010,2011 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             --
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.135 2008/11/02 21:13:51 tom Exp $
+-- $Id: INSTALL,v 1.155 2011/03/31 08:27:24 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
@@ -39,9 +39,8 @@ 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.
 
-If you are a Linux or FreeBSD or NetBSD distribution integrator or packager,
-please read and act on the section titled IF YOU ARE A SYSTEM INTEGRATOR
-below.
+If you are a distribution integrator or packager, please read and act on the
+section titled IF YOU ARE A SYSTEM INTEGRATOR below.
 
 If you are converting from BSD curses and do not have root access, be sure
 to read the BSD CONVERSION NOTES section below.
@@ -58,10 +57,6 @@ 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.
 
-If you are using anything but (a) Linux, or (b) one of the 4.4BSD-based
-i386 Unixes, go read the Portability section in the TO-DO file before you
-do anything else.
-
 
 REQUIREMENTS:
 ------------
@@ -86,14 +81,14 @@ INSTALLATION PROCEDURE:
 
     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, e.g.,
-    Linux, the various BSD systems and Cygwin.  Use --prefix=/usr to replace
-    your default curses distribution.
+    for systems where ncurses is normally installed as a system library (see
+    "IF YOU ARE A SYSTEM INTEGRATOR").  Use --prefix=/usr to replace your
+    default curses distribution.
 
     The package gets installed beneath the --prefix directory as follows:
 
     In $(prefix)/bin:          tic, infocmp, captoinfo, tset,
-                               reset, clear, tput, toe
+                               reset, clear, tput, toe, tabs
     In $(prefix)/lib:          libncurses*.* libcurses.a
     In $(prefix)/share/terminfo: compiled terminal descriptions
     In $(prefix)/include:      C header files
@@ -105,12 +100,12 @@ INSTALLATION PROCEDURE:
 
     Do not use commands such as
 
-       make install prefix=XXX
+       make install prefix=XXX
 
     to change the prefix after configuration, since the prefix value is used
     for some absolute pathnames such as TERMINFO.  Instead do this
 
-       make install DESTDIR=XXX
+       make install DESTDIR=XXX
 
     See also the discussion of --with-install-prefix.
 
@@ -147,7 +142,7 @@ INSTALLATION PROCEDURE:
     library interfaces are not binary-compatible with the non-wide-character
     version.  Building and running the wide-character code relies on a fairly
     recent implementation of libiconv.  We have built this configuration on
-    Linux using libiconv, sometimes requiring libutf8.
+    various systems using libiconv, sometimes requiring libutf8.
 
     If you configure using the --with-pthread option, a "t" is appended to
     the library names (e.g., libncursest.a, libncursestw.a).
@@ -170,8 +165,8 @@ INSTALLATION PROCEDURE:
        ./configure --with-shared --without-normal --without-debug
 
     Rules for generating shared libraries are highly dependent upon the choice
-    of host system and compiler.  We've been testing shared libraries on Linux
-    and SunOS with gcc, but more work needs to be done to make shared libraries
+    of host system and compiler.  We've been testing shared libraries on
+    several systems, but more work needs to be done to make shared libraries
     work on other systems.
 
     If you have libtool installed, you can type
@@ -338,6 +333,17 @@ SUMMARY OF CONFIGURE OPTIONS:
     --disable-largefile
        Disable compiler flags needed to use large-file interfaces.
 
+    --disable-libtool-version
+       when using --with-libtool, control how the major/minor version numbers
+       are used for constructing the library name.
+
+       The default uses the -version-number feature of libtool, which makes
+       the library names compatible (though not identical) with the standard
+       build using --with-shared.
+
+       Use --disable-libtool-version to use the libtool -version-info feature.
+       This corresponds to the setting used before patch 20100515.
+
     --disable-leaks
        For testing, compile-in code that frees memory that normally would not
        be freed, to simplify analysis of memory-leaks.
@@ -389,6 +395,12 @@ SUMMARY OF CONFIGURE OPTIONS:
        application.  These are (for example $TERMINFO) those that allow the
        search path for the terminfo or termcap entry to be customized.
 
+    --disable-rpath-hack
+       Normally the configure script helps link libraries found in unusual
+       places by adding an rpath option to the link command.  If you are
+       building packages, this feature may be redundant.  Use this option
+       to suppress the feature.
+
     --disable-scroll-hints
        Compile without scroll-hints code.  This option is ignored when
        hashmap scrolling is configured, which is the default.
@@ -421,7 +433,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        changes several data references to functions to work around this
        problem.
 
-       NOTE:  With ncurses 5.1, this may not be necessary, since we are
+       NOTE: With ncurses 5.1, this may not be necessary, since we are
        told that some linkers interpret uninitialized global data as a
        different type of reference which behaves as described above.  We have
        explicitly initialized all of the global data to work around the
@@ -450,7 +462,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        warning.  There will still be warnings due to subtle inconsistencies
        in the interface, but at a lower level.
 
-       NOTE:  configuring ncurses with this option may detract from the
+       NOTE: configuring ncurses with this option may detract from the
        portability of your applications by encouraging you to use const in
        places where the XSI curses interface would not allow them.  Similar
        issues arise when porting to SVr4 curses, which uses const in even
@@ -471,7 +483,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        encoded.  This applies only to the wide-character (--enable-widec)
        configuration.
 
-       NOTE:  using this option will make libraries which are not binary-
+       NOTE: using this option will make libraries which are not binary-
        compatible with libncursesw 5.4.  None of the interfaces change, but
        applications which have an array of cchar_t's must be recompiled.
 
@@ -480,7 +492,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        That allows one to use ncurses with a wheel mouse with xterm or
        similar X terminal emulators.
 
-       NOTE:  using this option will make libraries which are not binary-
+       NOTE: using this option will make libraries which are not binary-
        compatible with libncursesw 5.4.  None of the interfaces change, but
        applications which have mouse mask mmask_t's must be recompiled.
 
@@ -500,7 +512,7 @@ SUMMARY OF CONFIGURE OPTIONS:
     --enable-getcap-cache
        Cache translated termcaps under the directory $HOME/.terminfo
 
-       NOTE:  this sounds good - it makes ncurses run faster the second time.
+       NOTE: this sounds good - it makes ncurses run faster the second time.
        But look where the data comes from - an /etc/termcap containing lots of
        entries that are not up to date.  If you configure with this option and
        forget to install the terminfo database before running an ncurses
@@ -513,6 +525,10 @@ SUMMARY OF CONFIGURE OPTIONS:
        may not be accurate, or that your stty settings have disabled the use
        of tabs.
 
+    --enable-interop
+       Compile-in experimental interop bindings.  These provide generic types
+       for the form-library.
+
     --enable-mixed-case
        Controls whether the filesystem on which the terminfo database resides
        supports mixed-case filenames (normal for UNIX, but not on other
@@ -525,6 +541,15 @@ SUMMARY OF CONFIGURE OPTIONS:
        terminfo entries.  This is the default, unless you have disabled the
        extended functions.
 
+    --enable-pc-files
+       If pkg-config is found (see --with-pkg-config), generate ".pc" files
+       for each of the libraries, and install them in pkg-config's library
+       directory.
+
+    --enable-pthreads-eintr
+       add logic in threaded configuration to ensure that a read(2) system
+       call can be interrupted for SIGWINCH.
+
     --enable-reentrant
        Compile experimental configuration which improves reentrant use of the
        library by reducing global and static variables.  This option is also
@@ -565,6 +590,11 @@ SUMMARY OF CONFIGURE OPTIONS:
        is not strictly compatible.  This option allows one to implement this
        alteration without patching the source code.
 
+    --enable-sp-funcs
+       Compile-in support for extended functions which accept a SCREEN pointer,
+       reducing the need for juggling the global SP value with set_term() and
+       delscreen().
+
     --enable-symlinks
        If your system supports symbolic links, make tic use symbolic links
        rather than hard links to save diskspace when writing aliases in the
@@ -576,6 +606,11 @@ SUMMARY OF CONFIGURE OPTIONS:
        capabilities as user-defined strings.  This option is the default,
        unless you have disabled the extended functions.
 
+    --enable-term-driver
+       Enable experimental terminal-driver.  This is currently used for the
+       MinGW port, by providing a way to substitute the low-level terminfo
+       library with different terminal drivers.
+
     --enable-termcap
        Compile in support for reading terminal descriptions from termcap if no
        match is found in the terminfo database.  See also the --enable-getcap
@@ -630,12 +665,23 @@ SUMMARY OF CONFIGURE OPTIONS:
     --with-ada-objects=DIR
        Tell where to install the Ada objects (default:  PREFIX/lib/ada/adalib)
 
+    --with-ada-sharedlib
+       Build a shared library for Ada95 binding, if the compiler permits.
+
+       NOTE: You must also set the --with-shared option on some platforms
+       for a successful build.  You need not use this option when you set
+       --with-shared, unless you want to use the Ada shared library.
+
     --with-bool=TYPE
        If --without-cxx is specified, override the type used for the "bool"
        declared in curses.h (normally the type is automatically chosen to
        correspond with that in <stdbool.h>, or defaults to platform-specific
        sizes).
 
+    --with-build-cpp=XXX
+       This option is provided by the same macro used for $BUILD_CC, etc.,
+       but is not directly used by ncurses.
+
     --with-build-cc=XXX
        If cross-compiling, specify a host C compiler, which is needed to
        compile a few utilities which generate source modules for ncurses.
@@ -682,12 +728,17 @@ SUMMARY OF CONFIGURE OPTIONS:
        to use a terminfo database which is compatible with the native
        applications.
 
+    --with-ccharw-max=XXX
+       Override the size of the wide-character array in cchar_t structures.
+       Changing this will alter the binary interface.  This defaults to 5.
+
     --with-chtype=TYPE
        Override type of chtype, which stores the video attributes and (if
        --enable-widec is not given) a character.  Prior to ncurses 5.5, this
        was always unsigned long, but with ncurses 5.5, it may be unsigned.
        Use this option if you need to preserve compatibility with 64-bit
-       executables.
+       executables, e.g., by setting "--with-chtype=long" (the configure
+       script supplies "unsigned").
 
     --with-database=XXX
        Specify the terminfo source file to install.  Usually you will wish
@@ -719,7 +770,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        use Alessandro Rubini's GPM library to provide mouse support on the
        Linux console.  Prior to ncurses 5.5, this introduced a dependency on
        the GPM library.
-       
+
        Currently ncurses uses the dlsym() function to bind to the library at
        runtime, so it is only necessary that the library be present when
        ncurses is built, to obtain the filename (or soname) used in the
@@ -736,7 +787,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        Use a hashed database for storing terminfo data rather than storing
        each compiled entry in a separate binary file within a directory
        tree.
-       
+
        In particular, this uses the Berkeley database 1.8.5 interface, as
        provided by that and its successors db 2, 3, and 4.  The actual
        interface is slightly different in the successor versions of the
@@ -770,7 +821,7 @@ SUMMARY OF CONFIGURE OPTIONS:
                make install DESTDIR=XXX
        since the makefiles pass that variable to subordinate makes.
 
-       NOTE:  a few systems build shared libraries with fixed pathnames; this
+       NOTE: a few systems build shared libraries with fixed pathnames; this
        option probably will not work for those configurations.
 
      --with-libtool[=XXX]
@@ -807,9 +858,9 @@ SUMMARY OF CONFIGURE OPTIONS:
 
     --with-manpage-renames=XXX
        Tell the configure script that you wish to rename the manpages while
-       installing.  Currently the only distribution which does this is
-       the Linux Debian.  The option value specifies the name of a file
-       that lists the renamed files, e.g., $srcdir/man/man_db.renames
+       installing.  Currently the only distribution which does this is Debian.
+       The option value specifies the name of a file that lists the renamed
+       files, e.g., $srcdir/man/man_db.renames
 
     --with-manpage-symlinks
        Tell the configure script that you wish to make symbolic links in the
@@ -850,6 +901,9 @@ SUMMARY OF CONFIGURE OPTIONS:
        those using termcap, do not use the higher speeds.  Your application
        (or system, in general) may or may not.
 
+    --with-pkg-config=[DIR]
+       Check for pkg-config, optionally specifying its path.
+
     --with-profile
        Generate profile-libraries These are named by adding "_p" to the root,
        e.g., libncurses_p.a
@@ -873,7 +927,7 @@ SUMMARY OF CONFIGURE OPTIONS:
        which you are building, typically using a ".so" suffix, along with
        symbolic links that refer to the release version.
 
-       NOTE:  Unless you override the configure script by setting the $CFLAGS
+       NOTE: Unless you override the configure script by setting the $CFLAGS
        environment variable, these will not be built with the -g debugging
        option.
 
@@ -885,7 +939,11 @@ SUMMARY OF CONFIGURE OPTIONS:
        loads the system's copy of the ncurses shared libraries.  In that
        case, using the misc/shlib script may be helpful, since it sets
        $LD_LIBRARY_PATH to point to the build tree, e.g.,
-               ./misc/shlib make install       
+               ./misc/shlib make install
+
+       NOTE: If you use the --with-ada-sharedlib option, you should also
+       set this option, to ensure that C-language modules needed for the
+       Ada binding use appropriate compiler options.
 
     --with-shlib-version=XXX
        Specify whether to use the release or ABI version for shared libraries.
@@ -946,6 +1004,17 @@ SUMMARY OF CONFIGURE OPTIONS:
        For testing, compile with debug option.
        This also sets the --disable-leaks option.
 
+    --with-wrap-prefix=XXX
+       When using the --enable-reentrant option, ncurses redefines variables
+       that would be global in curses, e.g., LINES, as a macro that calls a
+       "wrapping" function which fetches the data from the current SCREEN
+       structure.  Normally that function is named by prepending "_nc_" to the
+       variable's name.  The function is technically private (since portable
+       applications would not refer directly to it).  But according to one
+       line of reasoning, it is not the same type of "private" as functions
+       which applications should not call even via a macro.  This configure
+       option lets you choose the prefix for these wrapped variables.
+
     --without-ada
        Suppress the configure script's check for Ada95, do not build the
        Ada95 binding and related demo.
@@ -975,11 +1044,18 @@ SUMMARY OF CONFIGURE OPTIONS:
     --without-dlsym
        Do not use dlsym() to load GPM dynamically.
 
+    --without-manpages
+       Tell the configure script to suppress the install of ncurses' manpages.
+
     --without-progs
        Tell the configure script to suppress the build of ncurses' application
        programs (e.g., tic).  The test applications will still be built if you
        type "make", though not if you simply do "make install".
 
+    --without-tests
+       Tell the configure script to suppress the build of ncurses' test
+       programs.
+
     --without-xterm-new
        Tell the configure script to use "xterm-old" for the entry used in
        the terminfo database.  This will work with variations such as
@@ -1001,6 +1077,60 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
     you may encounter when building a system with different versions of
     ncurses:
 
+    5.8 (Feb 26, 2011)
+       Interface changes:
+
+       + add an alternate library configuration, i.e., "terminal driver" to
+         support port to Windows, built with MinGW.  There are two drivers
+         (terminfo and Windows console).  The terminfo driver works on other
+         platforms.
+
+       + add a new set of functions which accept a SCREEN* parameter, in
+         contrast with the original set which use the global value "sp".
+         By default, these names end with "_sp", and are otherwise
+         functionally identical with the originals.
+
+         In addition to the "_sp" functions, there are a few new functions
+         associated with this feature:  ceiling_panel, ground_panel,
+         new_prescr.
+
+         If the library is not built with the sp-funcs extension, there
+         are no related interface changes.
+
+       + add tiparm function based on review of X/Open Curses Issue 7.
+
+       + change internal _nc_has_mouse function to public has_mouse function
+
+       Added extensions:
+
+       + add a few more functions to support the NCURSES_OPAQUE feature:
+         get_escdelay, is_pad, is_subwin
+
+       Added internal functions (other than "_sp" variants):
+               _nc_curscr_of
+               _nc_format_slks
+               _nc_get_alias_table
+               _nc_get_hash_info
+               _nc_insert_wch
+               _nc_newscr_of
+               _nc_outc_wrapper
+               _nc_retrace_char
+               _nc_retrace_int_attr_t
+               _nc_retrace_mmask_t
+               _nc_setup_tinfo
+               _nc_stdscr_of
+               _nc_tinfo_cmdch
+
+       Removed internal functions:
+               _nc_makenew (some configurations replace by _nc_makenew_sp)
+
+       Modified internal functions:
+               _nc_UpdateAttrs
+               _nc_get_hash_table
+               _nc_has_mouse
+               _nc_insert_ch
+               _nc_wgetch
+
     5.7 (November 2, 2008)
        Interface changes:
 
@@ -1011,7 +1141,7 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
          of the ncurses library used for the tic program as well as some
          others such as tack.  There is no API change, but makefiles would be
          changed to use the tic-library built separately.
-         
+
          tack, distributed separately from ncurses, uses some of the internal
          _nc_XXX functions, which are declared in the tic.h header file.
 
@@ -1158,7 +1288,7 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
          still used in this release to allow compiling with not-so-old
          compilers.
 
-       + form and menu libraries now work with wide-character data. 
+       + form and menu libraries now work with wide-character data.
          Applications which bypassed the form library and manipulated the
          FIELD.buf data directly will not work properly with libformw, since
          that no longer points to an array of char.  The set_field_buffer()
@@ -1438,8 +1568,8 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
 
     4.0 (December 24, 1996)
 
-       We bumped to version 4.0 because the newly released dynamic loader
-       (ld.so.1.8.5) on Linux did not load shared libraries whose ABI and REL
+       We bumped to version 4.0 because the newly released Linux dynamic
+       loader (ld.so.1.8.5) did not load shared libraries whose ABI and REL
        versions were inconsistent.  At that point, ncurses ABI was 3.4 and the
        REL was 1.9.9g, so we made them consistent.
 
@@ -1496,10 +1626,10 @@ IF YOU ARE A SYSTEM INTEGRATOR:
 
     Configuration and Installation:
 
-       On platforms where ncurses is assumed to be installed in /usr/lib,
+       On platforms where ncurses is assumed to be installed in /usr/lib,
        the configure script uses "/usr" as a default:
 
-               Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
+               GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
 
        For other platforms, the default is "/usr/local".  See the discussion
        of the "--disable-overwrite" option.
@@ -1562,7 +1692,7 @@ IF YOU ARE A SYSTEM INTEGRATOR:
                bsdos   -- BSD/OS
 
        If you are responsible for integrating ncurses for one of these
-       distribution, please either use the recommended name or get back
+       distributions, please either use the recommended name or get back
        to us explaining why you don't want to, so we can work out nomenclature
        that will make users' lives easier rather than harder.
 
@@ -1584,7 +1714,8 @@ CONFIGURING FALLBACK ENTRIES:
        tree is accessible (that is, in single-user mode or at OS installation
        time) the ncurses library can be compiled to include an array of
        pre-fetched fallback entries.  This must be done on a machine which
-       has ncurses' infocmp and terminfo database installed.
+       has ncurses' infocmp and terminfo database installed (as well as
+       ncurses' tic and infocmp programs).
 
        These entries are checked by setupterm() only when the conventional
        fetches from the terminfo tree and the termcap fallback (if configured)
@@ -1689,8 +1820,8 @@ USING NCURSES WITH AFS:
        with this by making tic use symbolic links.
 
 USING NCURSES WITH GPM:
-       Ncurses 4.1 and up can be configured to use GPM (General Purpose
-       Mouse) which is used on Linux console.  Be aware that GPM is commonly
+       Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse)
+       which is used with Linux console.  Be aware that GPM is commonly
        installed as a shared library which contains a wrapper for the curses
        wgetch() function (libcurses.o).  Some integrators have simplified
        linking applications by combining all or part of libcurses.so into the
@@ -1735,6 +1866,10 @@ BUILDING NCURSES WITH A CROSS-COMPILER
        option), ncurses uses the development platform's tic to do the
        "make install.data" portion.
 
+       The system's tic program is used to install the terminal database,
+       even for cross-compiles.  For best results, the tic program should
+       be from the most current version of ncurses.
+
 BUGS:
        Send any feedback to the ncurses mailing list at
        bug-ncurses@gnu.org. To subscribe send mail to
index db3871f..421cc67 100644 (file)
@@ -3,6 +3,10 @@
 ./Ada95/Makefile.in
 ./Ada95/README
 ./Ada95/TODO
+./Ada95/aclocal.m4
+./Ada95/configure
+./Ada95/configure.in
+./Ada95/doc/Makefile.in
 ./Ada95/gen/Makefile.in
 ./Ada95/gen/adacurses-config.in
 ./Ada95/gen/gen.c
 ./Ada95/gen/terminal_interface-curses-trace.ads.m4
 ./Ada95/gen/terminal_interface-curses.adb.m4
 ./Ada95/gen/terminal_interface-curses.ads.m4
+./Ada95/include/MKncurses_def.sh
+./Ada95/include/Makefile.in
+./Ada95/include/ncurses_cfg.hin
+./Ada95/include/ncurses_defs
+./Ada95/make-tar.sh
+./Ada95/mk-1st.awk
+./Ada95/package/AdaCurses-doc.spec
+./Ada95/package/AdaCurses.spec
+./Ada95/package/debian/compat
+./Ada95/package/debian/control
+./Ada95/package/debian/copyright
+./Ada95/package/debian/docs
+./Ada95/package/debian/rules
+./Ada95/package/debian/source/format
+./Ada95/package/debian/watch
 ./Ada95/samples/Makefile.in
 ./Ada95/samples/README
 ./Ada95/samples/explain.txt
 ./Ada95/samples/tour.adb
 ./Ada95/samples/tour.ads
 ./Ada95/src/Makefile.in
+./Ada95/src/c_varargs_to_ada.c
+./Ada95/src/c_varargs_to_ada.h
+./Ada95/src/library.gpr
+./Ada95/src/modules
+./Ada95/src/ncurses_compat.c
 ./Ada95/src/terminal_interface-curses-aux.adb
 ./Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
 ./Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads
 ./Makefile.os2
 ./NEWS
 ./README
+./README.MinGW
 ./README.emx
 ./TO-DO
 ./aclocal.m4
 ./doc/html/announce.html
 ./doc/html/hackguide.html
 ./doc/html/index.html
+./doc/html/man/adacurses-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/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_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_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_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/index.html
 ./doc/html/man/infocmp.1m.html
 ./doc/html/man/mitem_value.3x.html
 ./doc/html/man/mitem_visible.3x.html
 ./doc/html/man/ncurses.3x.html
+./doc/html/man/ncurses5-config.1.html
 ./doc/html/man/panel.3x.html
 ./doc/html/man/resizeterm.3x.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
 ./form/fty_alnum.c
 ./form/fty_alpha.c
 ./form/fty_enum.c
+./form/fty_generic.c
 ./form/fty_int.c
 ./form/fty_ipv4.c
 ./form/fty_num.c
 ./form/fty_regex.c
 ./form/headers
 ./form/llib-lform
+./form/llib-lformt
+./form/llib-lformtw
 ./form/llib-lformw
 ./form/modules
 ./include/Caps
 ./include/hashed_db.h
 ./include/headers
 ./include/nc_alloc.h
+./include/nc_mingw.h
 ./include/nc_panel.h
 ./include/nc_tparm.h
 ./include/ncurses_cfg.hin
 ./include/ncurses_defs
-./include/ncurses_dll.h
+./include/ncurses_dll.h.in
+./include/ncurses_mingw.h
 ./include/term_entry.h
 ./include/termcap.h.in
 ./include/tic.h
 ./include/unctrl.h.in
 ./install-sh
+./man/MKada_config.in
+./man/MKncu_config.in
 ./man/MKterminfo.sh
 ./man/Makefile.in
 ./man/captoinfo.1m
 ./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_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_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/ncurses.3x
 ./man/panel.3x
 ./man/resizeterm.3x
+./man/tabs.1
 ./man/term.5
 ./man/term.7
+./man/term_variables.3x
 ./man/terminfo.head
 ./man/terminfo.tail
 ./man/tic.1m
 ./menu/eti.h
 ./menu/headers
 ./menu/llib-lmenu
+./menu/llib-lmenut
+./menu/llib-lmenutw
 ./menu/llib-lmenuw
 ./menu/m_attribs.c
 ./menu/m_cursor.c
 ./misc/emx.src
 ./misc/form.def
 ./misc/form.ref
+./misc/gen-pkgconfig.in
 ./misc/gen_edit.sh
-./misc/jpf-indent
 ./misc/makedef.cmd
 ./misc/makellib
 ./misc/menu.def
 ./misc/menu.ref
-./misc/ncu-indent
 ./misc/ncurses-config.in
 ./misc/ncurses.def
 ./misc/ncurses.ref
 ./mk-0th.awk
 ./mk-1st.awk
 ./mk-2nd.awk
+./mk-dlls.sh.in
 ./mk-hdr.awk
-./mkdirs.sh
 ./ncurses/Makefile.in
 ./ncurses/README
 ./ncurses/README.IZ
 ./ncurses/base/lib_delch.c
 ./ncurses/base/lib_delwin.c
 ./ncurses/base/lib_dft_fgbg.c
+./ncurses/base/lib_driver.c
 ./ncurses/base/lib_echo.c
 ./ncurses/base/lib_endwin.c
 ./ncurses/base/lib_erase.c
 ./ncurses/base/version.c
 ./ncurses/base/vsscanf.c
 ./ncurses/base/wresize.c
+./ncurses/build.priv.h
 ./ncurses/curses.priv.h
 ./ncurses/fifo_defs.h
 ./ncurses/llib-lncurses
 ./ncurses/llib-lncursest
+./ncurses/llib-lncursestw
 ./ncurses/llib-lncursesw
 ./ncurses/modules
 ./ncurses/tinfo/MKcaptab.awk
 ./ncurses/tinfo/lib_tparm.c
 ./ncurses/tinfo/lib_tputs.c
 ./ncurses/tinfo/lib_ttyflags.c
+./ncurses/tinfo/make_hash.c
 ./ncurses/tinfo/make_keys.c
 ./ncurses/tinfo/name_match.c
 ./ncurses/tinfo/parse_entry.c
 ./ncurses/tinfo/read_termcap.c
 ./ncurses/tinfo/setbuf.c
 ./ncurses/tinfo/strings.c
+./ncurses/tinfo/tinfo_driver.c
 ./ncurses/tinfo/trim_sgr0.c
 ./ncurses/tinfo/use_screen.c
 ./ncurses/tinfo/write_entry.c
 ./ncurses/tty/tty_display.h
 ./ncurses/tty/tty_input.h
 ./ncurses/tty/tty_update.c
+./ncurses/wcwidth.h
 ./ncurses/widechar/charable.c
 ./ncurses/widechar/lib_add_wch.c
 ./ncurses/widechar/lib_box_set.c
 ./ncurses/widechar/lib_vline_set.c
 ./ncurses/widechar/lib_wacs.c
 ./ncurses/widechar/lib_wunctrl.c
+./ncurses/win32con/gettimeofday.c
+./ncurses/win32con/wcwidth.c
+./ncurses/win32con/win_driver.c
 ./panel/Makefile.in
 ./panel/headers
 ./panel/llib-lpanel
+./panel/llib-lpanelt
+./panel/llib-lpaneltw
 ./panel/llib-lpanelw
 ./panel/modules
 ./panel/p_above.c
 ./progs/infocmp.c
 ./progs/modules
 ./progs/progs.priv.h
+./progs/tabs.c
 ./progs/tic.c
 ./progs/toe.c
 ./progs/tput.c
+./progs/transform.c
 ./progs/tset.c
-./tar-copy.sh
 ./test/Makefile.in
 ./test/README
 ./test/aclocal.m4
 ./test/cardfile.c
 ./test/cardfile.dat
 ./test/chgat.c
+./test/clip_printw.c
 ./test/color_set.c
 ./test/configure
 ./test/configure.in
 ./test/demo_menus.c
 ./test/demo_panels.c
 ./test/demo_termcap.c
+./test/demo_terminfo.c
 ./test/ditto.c
 ./test/dots.c
 ./test/dots_mvcur.c
 ./test/inch_wide.c
 ./test/inchs.c
 ./test/ins_wide.c
+./test/insdelln.c
 ./test/inserts.c
 ./test/key_names.c
 ./test/keynames.c
 ./test/knight.c
+./test/linedata.h
 ./test/linux-color.dat
 ./test/listused.sh
 ./test/lrtest.c
+./test/make-tar.sh
 ./test/mk-test.awk
 ./test/modules
 ./test/movewindow.c
 ./test/ncurses.c
 ./test/ncurses_tst.hin
 ./test/newdemo.c
+./test/package/debian/compat
+./test/package/debian/control
+./test/package/debian/copyright
+./test/package/debian/docs
+./test/package/debian/rules
+./test/package/debian/source/format
+./test/package/debian/watch
+./test/package/ncurses-examples.spec
 ./test/programs
 ./test/railroad.c
 ./test/rain.c
 ./test/savescreen.sh
 ./test/tclock.c
 ./test/test.priv.h
+./test/test_add_wchstr.c
+./test/test_addchstr.c
+./test/test_addstr.c
+./test/test_addwstr.c
 ./test/test_arrays.c
 ./test/test_get_wstr.c
 ./test/test_getstr.c
 ./test/worm.c
 ./test/xmas.c
 ./test/xterm-16color.dat
+./test/xterm-256color.dat
 ./test/xterm-88color.dat
index a64450b..e8f9cef 100644 (file)
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.               --
+-- Copyright (c) 1998-2010,2011 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             --
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.1320 2008/11/02 00:56:22 tom Exp $
+-- $Id: NEWS,v 1.1682 2011/04/04 00:02:42 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,1076 @@ 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.
 
+20110404 5.9 release for upload to ftp.gnu.org
+
+20110402
+       + various build-fixes for the rpm/dpkg scripts.
+       + add "--enable-rpath-link" option to Ada95/configure, to allow
+         packages to suppress the rpath feature which is normally used for
+         the in-tree build of sample programs.
+       + corrected definition of libdir variable in Ada95/src/Makefile.in,
+         needed for rpm script.
+       + add "--with-shared" option to Ada95/configure script, to allow
+         making the C-language parts of the binding use appropriate compiler
+         options if building a shared library with gnat.
+
+20110329
+       > portability fixes for Ada95 binding:
+       + add configure check to ensure that SIGINT works with gnat.  This is
+         needed for the "rain" sample program.  If SIGINT does not work, omit
+         that sample program.
+       + correct typo in check of $PKG_CONFIG variable in Ada95/configure
+       + add ncurses_compat.c, to supply functions used in the Ada95 binding
+         which were added in 5.7 and later.
+       + modify sed expression in CF_NCURSES_ADDON to eliminate a dependency
+         upon GNU sed.
+
+20110326
+       + add special check in Ada95/configure script for ncurses6 reentrant
+         code.
+       + regen Ada html documentation.
+       + build-fix for Ada shared libraries versus the varargs workaround.
+       + add rpm and dpkg scripts for Ada95 and test directories, for test
+         builds.
+       + update test/configure macros CF_CURSES_LIBS, CF_XOPEN_SOURCE and
+         CF_X_ATHENA_LIBS.
+       + add configure check to determine if gnat's project feature supports
+         libraries, i.e., collections of .ali files.
+       + make all dereferences in Ada95 samples explicit.
+       + fix typo in comment in lib_add_wch.c (patch by Petr Pavlu).
+       + add configure check for, ifdef's for math.h which is in a separate
+         package on Solaris and potentially not installed (report by Petr
+         Pavlu).
+       > fixes for Ada95 binding (Nicolas Boulenguez):
+       + improve type-checking in Ada95 by eliminating a few warning-suppress
+         pragmas.
+       + suppress unreferenced warnings.
+       + make all dereferences in binding explicit.
+
+20110319
+       + regen Ada html documentation.
+       + change order of -I options from ncurses*-config script when the
+         --disable-overwrite option was used, so that the subdirectory include
+         is listed first.
+       + modify the make-tar.sh scripts to add a MANIFEST and NEWS file.
+       + modify configure script to provide value for HTML_DIR in
+         Ada95/gen/Makefile.in, which depends on whether the Ada95 binding is
+         distributed separately (report by Nicolas Boulenguez).
+       + modify configure script to add -g and/or -O3 to ADAFLAGS if the
+         CFLAGS for the build has these options.
+       + amend change from 20070324, to not add 1 to the result of getmaxx
+         and getmaxy in the Ada binding (report by Nicolas Boulenguez for
+         thread in comp.lang.ada).
+       + build-fix Ada95/samples for gnat 4.5
+       + spelling fixes for Ada95/samples/explain.txt
+       > fixes for Ada95 binding (Nicolas Boulenguez):
+       + add item in Trace_Attribute_Set corresponding to TRACE_ATTRS.
+       + add workaround for binding to set_field_type(), which uses varargs.
+         The original binding from 990220 relied on the prevalent
+         implementation of varargs which did not support or need va_copy().
+       + add dependency on gen/Makefile.in needed for *-panels.ads
+       + add Library_Options to library.gpr
+       + add Languages to library.gpr, for gprbuild
+
+20110307
+       + revert changes to limit-checks from 20110122 (Debian #616711).
+       > minor type-cleanup of Ada95 binding (Nicolas Boulenguez):
+       + corrected a minor sign error in a field of Low_Level_Field_Type, to
+         conform to form.h.
+       + replaced C_Int by Curses_Bool as return type for some callbacks, see
+         fieldtype(3FORM).
+       + modify samples/sample-explain.adb to provide explicit message when
+         explain.txt is not found.
+
+20110305
+       + improve makefiles for Ada95 tree (patch by Nicolas Boulenguez).
+       + fix an off-by-one error in _nc_slk_initialize() from 20100605 fixes
+         for compiler warnings (report by Nicolas Boulenguez).
+       + modify Ada95/gen/gen.c to declare unused bits in generated layouts,
+         needed to compile when chtype is 64-bits using gnat 4.4.5
+
+20110226 5.8 release for upload to ftp.gnu.org
+
+20110226
+       + update release notes, for 5.8.
+       + regenerated html manpages.
+       + change open() in _nc_read_file_entry() to fopen() for consistency
+         with write_file().
+       + modify misc/run_tic.in to create parent directory, in case this is
+         a new install of hashed database.
+       + fix typo in Ada95/mk-1st.awk which causes error with original awk.
+
+20110220
+       + configure script rpath fixes from xterm #269.
+       + workaround for cygwin's non-functional features.h, to force ncurses'
+         configure script to define _XOPEN_SOURCE_EXTENDED when building
+         wide-character configuration.
+       + build-fix in run_tic.sh for OS/2 EMX install
+       + add cons25-debian entry (patch by Brian M Carlson, Debian #607662).
+
+20110212
+       + regenerated html manpages.
+       + use _tracef() in show_where() function of tic, to work correctly with
+         special case of trace configuration. 
+
+20110205
+       + add xterm-utf8 entry as a demo of the U8 feature -TD
+       + add U8 feature to denote entries for terminal emulators which do not
+         support VT100 SI/SO when processing UTF-8 encoding -TD
+       + improve the NCURSES_NO_UTF8_ACS feature by adding a check for an
+         extended terminfo capability U8 (prompted by mailing list
+         discussion).
+
+20110122
+       + start documenting interface changes for upcoming 5.8 release.
+       + correct limit-checks in derwin().
+       + correct limit-checks in newwin(), to ensure that windows have nonzero
+         size (report by Garrett Cooper).
+       + fix a missing "weak" declaration for pthread_kill (patch by Nicholas
+         Alcock).
+       + improve documentation of KEY_ENTER in curs_getch.3x manpage (prompted
+         by discussion with Kevin Martin).
+
+20110115
+       + modify Ada95/configure script to make the --with-curses-dir option
+         work without requiring the --with-ncurses option.
+       + modify test programs to allow them to be built with NetBSD curses.
+       + document thick- and double-line symbols in curs_add_wch.3x manpage.
+       + document WACS_xxx constants in curs_add_wch.3x manpage.
+       + fix some warnings for clang 2.6 "--analyze"
+       + modify Ada95 makefiles to make html-documentation with the project
+         file configuration if that is used.
+       + update config.guess, config.sub
+
+20110108
+       + regenerated html manpages.
+       + minor fixes to enable lint when trace is not enabled, e.g., with
+         clang --analyze.
+       + fix typo in man/default_colors.3x (patch by Tim van der Molen).
+       + update ncurses/llib-lncurses*
+
+20110101
+       + fix remaining strict compiler warnings in ncurses library ABI=5,
+         except those dealing with function pointers, etc.
+
+20101225
+       + modify nc_tparm.h, adding guards against repeated inclusion, and
+         allowing TPARM_ARG to be overridden.
+       + fix some strict compiler warnings in ncurses library.
+
+20101211
+       + suppress ncv in screen entry, allowing underline (patch by Alejandro
+         R Sedeno).
+       + also suppress ncv in konsole-base -TD
+       + fixes in wins_nwstr() and related functions to ensure that special
+         characters, i.e., control characters are handled properly with the
+         wide-character configuration.
+       + correct a comparison in wins_nwstr() (Redhat #661506).
+       + correct help-messages in some of the test-programs, which still
+         referred to quitting with 'q'.
+
+20101204
+       + add special case to _nc_infotocap() to recognize the setaf/setab
+         strings from xterm+256color and xterm+88color, and provide a reduced
+         version which works with termcap.
+       + remove obsolete emacs "Local Variables" section from documentation
+         (request by Sven Joachim).
+       + update doc/html/index.html to include NCURSES-Programming-HOWTO.html 
+         (report by Sven Joachim).
+
+20101128
+       + modify test/configure and test/Makefile.in to handle this special
+         case of building within a build-tree (Debian #34182):
+               mkdir -p build && cd build && ../test/configure && make
+
+20101127
+       + miscellaneous build-fixes for Ada95 and test-directories when built
+         out-of-tree.
+       + use VPATH in makefiles to simplify out-of-tree builds (Debian #34182).
+       + fix typo in rmso for tek4106 entry -Goran Weinholt
+
+20101120
+       + improve checks in test/configure for X libraries, from xterm #267
+         changes.
+       + modify test/configure to allow it to use the build-tree's libraries
+         e.g., when using that to configure the test-programs without the
+         rpath feature (request by Sven Joachim).
+       + repurpose "gnome" terminfo entries as "vte", retaining "gnome" items
+         for compatibility, but generally deprecating those since the VTE
+         library is what actually defines the behavior of "gnome", etc.,
+         since 2003 -TD
+
+20101113
+       + compiler warning fixes for test programs.
+       + various build-fixes for test-programs with pdcurses.
+       + updated configure checks for X packages in test/configure from xterm
+         #267 changes.
+       + add configure check to gnatmake, to accommodate cygwin.
+
+20101106
+       + correct list of sub-directories needed in Ada95 tree for building as
+         a separate package.
+       + modify scripts in test-directory to improve builds as a separate
+         package.
+
+20101023
+       + correct parsing of relative tab-stops in tabs program (report by
+         Philip Ganchev).
+       + adjust configure script so that "t" is not added to library suffix
+         when weak-symbols are used, allowing the pthread configuration to
+         more closely match the non-thread naming (report by Werner Fink).
+       + modify configure check for tic program, used for fallbacks, to a
+         warning if not found.  This makes it simpler to use additonal
+         scripts to bootstrap the fallbacks code using tic from the build
+         tree (report by Werner Fink).
+       + fix several places in configure script using ${variable-value} form.
+       + modify configure macro CF_LDFLAGS_STATIC to accommodate some loaders
+         which do not support selectively linking against static libraries
+         (report by John P. Hartmann)
+       + fix an unescaped dash in man/tset.1 (report by Sven Joachim).
+
+20101009
+       + correct comparison used for setting 16-colors in linux-16color
+         entry (Novell #644831) -TD
+       + improve linux-16color entry, using "dim" for color-8 which makes it
+         gray rather than black like color-0 -TD
+       + drop misc/ncu-indent and misc/jpf-indent; they are provided by an
+         external package "cindent".
+
+20101002
+       + improve linkages in html manpages, adding references to the newer
+         pages, e.g., *_variables, curs_sp_funcs, curs_threads.
+       + add checks in tic for inconsistent cursor-movement controls, and for
+         inconsistent printer-controls.
+       + fill in no-parameter forms of cursor-movement where a parameterized
+         form is available -TD
+       + fill in missing cursor controls where the form of the controls is
+         ANSI -TD
+       + fix inconsistent punctuation in form_variables manpage (patch by
+         Sven Joachim).
+       + add parameterized cursor-controls to linux-basic (report by Dae) -TD
+       > patch by Juergen Pfeifer:
+       + document how to build 32-bit libraries in README.MinGW 
+       + fixes to filename computation in mk-dlls.sh.in 
+       + use POSIX locale in mk-dlls.sh.in rather than en_US (report by Sven
+         Joachim).
+       + add a check in mk-dlls.sh.in to obtain the size of a pointer to
+         distinguish between 32-bit and 64-bit hosts.  The result is stored
+         in mingw_arch
+
+20100925
+       + add "XT" capability to entries for terminals that support both
+         xterm-style mouse- and title-controls, for "screen" which
+         special-cases TERM beginning with "xterm" or "rxvt" -TD
+       > patch by Juergen Pfeifer:
+       + use 64-Bit MinGW toolchain (recommended package from TDM, see
+         README.MinGW).
+       + support pthreads when using the TDM MinGW toolchain
+
+20100918
+       + regenerated html manpages.
+       + minor fixes for symlinks to curs_legacy.3x and curs_slk.3x manpages.
+       + add manpage for sp-funcs.
+       + add sp-funcs to test/listused.sh, for documentation aids.
+
+20100911
+       + add manpages for summarizing public variables of curses-, terminfo-
+         and form-libraries.
+       + minor fixes to manpages for consistency (patch by Jason McIntyre).
+       + modify tic's -I/-C dump to reformat acsc strings into canonical form
+         (sorted, unique mapping) (cf: 971004).
+       + add configure check for pthread_kill(), needed for some old
+         platforms.
+
+20100904
+       + add configure option --without-tests, to suppress building test
+         programs (request by Frederic L W Meunier).
+
+20100828
+       + modify nsterm, xnuppc and tek4115 to make sgr/sgr0 consistent -TD
+       + add check in terminfo source-reader to provide more informative
+         message when someone attempts to run tic on a compiled terminal
+         description (prompted by Debian #593920).
+       + note in infotocap and captoinfo manpages that they read terminal
+         descriptions from text-files (Debian #593920).
+       + improve acsc string for vt52, show arrow keys (patch by Benjamin
+         Sittler).
+
+20100814
+       + document in manpages that "mv" functions first use wmove() to check
+         the window pointer and whether the position lies within the window
+         (suggested by Poul-Henning Kamp).
+       + fixes to curs_color.3x, curs_kernel.3x and wresize.3x manpages (patch
+         by Tim van der Molen).
+       + modify configure script to transform library names for tic- and
+         tinfo-libraries so that those build properly with Mac OS X shared
+         library configuration.
+       + modify configure script to ensure that it removes conftest.dSYM
+         directory leftover on checks with Mac OS X.
+       + modify configure script to cleanup after check for symbolic links.
+
+20100807
+       + correct a typo in mk-1st.awk (patch by Gabriele Balducci)
+         (cf: 20100724)
+       + improve configure checks for location of tic and infocmp programs
+         used for installing database and for generating fallback data,
+         e.g., for cross-compiling.
+       + add Markus Kuhn's wcwidth function for compiling MinGW
+       + add special case to CF_REGEX for cross-compiling to MinGW target.
+
+20100731
+       + modify initialization check for win32con driver to eliminate need for
+         special case for TERM "unknown", using terminal database if available
+         (prompted by discussion with Roumen Petrov).
+       + for MinGW port, ensure that terminal driver is setup if tgetent()
+         is called (patch by Roumen Petrov).
+       + document tabs "-0" and "-8" options in manpage.
+       + fix Debian "lintian" issues with manpages reported in
+         http://lintian.debian.org/full/csmall@debian.org.html#ncurses
+
+20100724
+       + add a check in tic for missing set_tab if clear_all_tabs given.
+       + improve use of symbolic links in makefiles by using "-f" option if
+         it is supported, to eliminate temporary removal of the target
+         (prompted by http://www.t2-project.org/packages/ncurses.html)
+       + minor improvement to test/ncurses.c, reset color pairs in 'd' test
+         after exit from 'm' main-menu command.
+       + improved ncu-indent, from mawk changes, allows more than one of
+         GCC_NORETURN, GCC_PRINTFLIKE and GCC_SCANFLIKE on a single line.
+
+20100717
+       + add hard-reset for rs2 to wsvt25 to help ensure that reset ends
+         the alternate character set (patch by Nicholas Marriott)
+       + remove tar-copy.sh and related configure/Makefile chunks, since the
+         Ada95 binding is now installed using rules in Ada95/src.
+
+20100703
+       + continue integrating changes to use gnatmake project files in Ada95
+         + add/use configure check to turn on project rules for Ada95/src.
+       + revert the vfork change from 20100130, since it does not work.
+
+20100626
+       + continue integrating changes to use gnatmake project files in Ada95
+         + old gnatmake (3.15) does not produce libraries using project-file;
+           work around by adding script to generate alternate makefile.
+
+20100619
+       + continue integrating changes to use gnatmake project files in Ada95
+         + add configure --with-ada-sharedlib option, for the test_make rule.
+         + move Ada95-related logic into aclocal.m4, since additional checks
+           will be needed to distinguish old/new implementations of gnat.
+
+20100612
+       + start integrating changes to use gnatmake project files in Ada95 tree
+         + add test_make / test_clean / test_install rules in Ada95/src
+         + change install-path for adainclude directory to /usr/share/ada (was
+           /usr/lib/ada).
+       + update Ada95/configure.
+       + add mlterm+256color entry, for mlterm 3.0.0 -TD
+       + modify test/configure to use macros to ensure consistent order
+         of updating LIBS variable.
+
+20100605
+       + change search order of options for Solaris in CF_SHARED_OPTS, to
+         work with 64-bit compiles.
+       + correct quoting of assignment in CF_SHARED_OPTS case for aix
+         (cf: 20081227)
+
+20100529
+       + regenerated html documentation.
+       + modify test/configure to support pkg-config for checking X libraries
+         used by PDCurses.
+       + add/use configure macro CF_ADD_LIB to force consistency of
+         assignments to $LIBS, etc.
+       + fix configure script for combining --with-pthread
+         and --enable-weak-symbols options.
+
+20100522
+       + correct cross-compiling configure check for CF_MKSTEMP macro, by
+         adding a check cache variable set by AC_CHECK_FUNC (report by
+         Pierre Labastie).
+       + simplify include-dependencies of make_hash and make_keys, to reduce
+         the need for setting BUILD_CPPFLAGS in cross-compiling when the
+         build- and target-machines differ.
+       + repair broken-linker configuration by restoring a definition of SP
+         variable to curses.priv.h, and adjusting for cases where sp-funcs
+         are used.
+       + improve configure macro CF_AR_FLAGS, allowing ARFLAGS environment
+         variable to override (prompted by report by Pablo Cazallas).
+
+20100515
+       + add configure option --enable-pthreads-eintr to control whether the
+         new EINTR feature is enabled.
+       + modify logic in pthread configuration to allow EINTR to interrupt
+         a read operation in wgetch() (Novell #540571, patch by Werner Fink).
+       + drop mkdirs.sh, use "mkdir -p".
+       + add configure option --disable-libtool-version, to use the
+         "-version-number" feature which was added in libtool 1.5 (report by
+         Peter Haering).  The default value for the option uses the newer
+         feature, which makes libraries generated using libtool compatible
+         with the standard builds of ncurses.
+       + updated test/configure to match configure script macros.
+       + fixes for configure script from lynx changes:
+         + improve CF_FIND_LINKAGE logic for the case where a function is
+           found in predefined libraries.
+         + revert part of change to CF_HEADER (cf: 20100424)
+
+20100501
+       + correct limit-check in wredrawln, accounting for begy/begx values
+         (patch by David Benjamin).
+       + fix most compiler warnings from clang.
+       + amend build-fix for OpenSolaris, to ensure that a system header is
+         included in curses.h before testing feature symbols, since they
+         may be defined by that route.
+
+20100424
+       + fix some strict compiler warnings in ncurses library.
+       + modify configure macro CF_HEADER_PATH to not look for variations in
+         the predefined include directories.
+       + improve configure macros CF_GCC_VERSION and CF_GCC_WARNINGS to work
+         with gcc 4.x's c89 alias, which gives warning messages for cases
+         where older versions would produce an error.
+
+20100417
+       + modify _nc_capcmp() to work with cancelled strings.
+       + correct translation of "^" in _nc_infotocap(), used to transform
+         terminfo to termcap strings 
+       + add configure --disable-rpath-hack, to allow disabling the feature
+         which adds rpath options for libraries in unusual places.
+       + improve CF_RPATH_HACK_2 by checking if the rpath option for a given
+         directory was already added.
+       + improve CF_RPATH_HACK_2 by using ldd to provide a standard list of
+         directories (which will be ignored).
+
+20100410
+       + improve win_driver.c handling of mouse:
+         + discard motion events
+         + avoid calling _nc_timed_wait when there is a mouse event
+         + handle 4th and "rightmost" buttons.
+       + quote substitutions in CF_RPATH_HACK_2 configure macro, needed for
+         cases where there are embedded blanks in the rpath option.
+
+20100403
+       + add configure check for exctags vs ctags, to work around pkgsrc.
+       + simplify logic in _nc_get_screensize() to make it easier to see how
+         environment variables may override system- and terminfo-values
+         (prompted by discussion with Igor Bujna).
+       + make debug-traces for COLOR_PAIR and PAIR_NUMBER less verbose.
+       + improve handling of color-pairs embedded in attributes for the
+         extended-colors configuration.
+       + modify MKlib_gen.sh to build link_test with sp-funcs.
+       + build-fixes for OpenSolaris aka Solaris 11, for wide-character
+         configuration as well as for rpath feature in *-config scripts.
+
+20100327
+       + refactor CF_SHARED_OPTS configure macro, making CF_RPATH_HACK more
+         reusable.
+       + improve configure CF_REGEX, similar fixes.
+       + improve configure CF_FIND_LINKAGE, adding add check between system
+         (default) and explicit paths, where we can find the entrypoint in the
+         given library.
+       + add check if Gpm_Open() returns a -2, e.g., for "xterm".  This is
+         normally suppressed but can be overridden using $NCURSES_GPM_TERMS.
+         Ensure that Gpm_Close() is called in this case.
+
+20100320
+       + rename atari and st52 terminfo entries to atari-old, st52-old, use
+         newer entries from FreeMiNT by Guido Flohr (from patch/report by Alan
+         Hourihane).
+
+20100313
+       + modify install-rule for manpages so that *-config manpages will
+         install when building with --srcdir (report by Sven Joachim).
+       + modify CF_DISABLE_LEAKS configure macro so that the --enable-leaks
+         option is not the same as --disable-leaks (GenToo #305889).
+       + modify #define's for build-compiler to suppress cchar_t symbol from
+         compile of make_hash and make_keys, improving cross-compilation of
+         ncursesw (report by Bernhard Rosenkraenzer).
+       + modify CF_MAN_PAGES configure macro to replace all occurrences of
+         TPUT in tput.1's manpage (Debian #573597, report/analysis by Anders
+         Kaseorg).
+
+20100306
+       + generate manpages for the *-config scripts, adapted from help2man
+         (suggested by Sven Joachim).
+       + use va_copy() in _nc_printf_string() to avoid conflicting use of
+         va_list value in _nc_printf_length() (report by Wim Lewis).
+
+20100227
+       + add Ada95/configure script, to use in tar-file created by
+         Ada95/make-tar.sh
+       + fix typo in wresize.3x (patch by Tim van der Molen).
+       + modify screen-bce.XXX entries to exclude ech, since screen's color
+         model does not clear with color for that feature -TD
+
+20100220
+       + add make-tar.sh scripts to Ada95 and test subdirectories to help with
+         making those separately distributable.
+       + build-fix for static libraries without dlsym (Debian #556378).
+       + fix a syntax error in man/form_field_opts.3x (patch by Ingo
+         Schwarze).
+
+20100213
+       + add several screen-bce.XXX entries -TD
+
+20100206
+       + update mrxvt terminfo entry -TD
+       + modify win_driver.c to support mouse single-clicks.
+       + correct name for termlib in ncurses*-config, e.g., if it is renamed
+         to provide a single file for ncurses/ncursesw libraries (patch by
+         Miroslav Lichvar).
+
+20100130
+       + use vfork in test/ditto.c if available (request by Mike Frysinger).
+       + miscellaneous cleanup of manpages.
+       + fix typo in curs_bkgd.3x (patch by Tim van der Molen).
+       + build-fix for --srcdir (patch by Miroslav Lichvar).
+
+20100123
+       + for term-driver configuration, ensure that the driver pointer is
+         initialized in setupterm so that terminfo/termcap programs work.
+       + amend fix for Debian #542031 to ensure that wattrset() returns only
+         OK or ERR, rather than the attribute value (report by Miroslav
+         Lichvar).
+       + reorder WINDOWLIST to put WINDOW data after SCREEN pointer, making
+         _nc_screen_of() compatible between normal/wide libraries again (patch
+         by Miroslav Lichvar)
+       + review/fix include-dependencies in modules files (report by Miroslav
+         Lichvar).
+
+20100116
+       + modify win_driver.c to initialize acs_map for win32 console, so
+         that line-drawing works.
+       + modify win_driver.c to initialize TERMINAL struct so that programs
+         such as test/lrtest.c and test/ncurses.c which test string
+         capabilities can run.
+       + modify term-driver modules to eliminate forward-reference
+         declarations.
+
+20100109
+       + modify configure macro CF_XOPEN_SOURCE, etc., to use CF_ADD_CFLAGS
+         consistently to add new -D's while removing duplicates.
+       + modify a few configure macros to consistently put new options
+         before older in the list.
+       + add tiparm(), based on review of X/Open Curses Issue 7.
+       + minor documentation cleanup.
+       + update config.guess, config.sub from
+               http://savannah.gnu.org/projects/config
+         (caveat - its maintainer put 2010 copyright date on files dated 2009)
+
+20100102
+       + minor improvement to tic's checking of similar SGR's to allow for the
+         most common case of SGR 0.
+       + modify getmouse() to act as its documentation implied, returning on
+         each call the preceding event until none are left.  When no more
+         events remain, it will return ERR.
+
+20091227
+       + change order of lookup in progs/tput.c, looking for terminfo data
+         first.  This fixes a confusion between termcap "sg" and terminfo
+         "sgr" or "sgr0", originally from 990123 changes, but exposed by
+         20091114 fixes for hashing.  With this change, only "dl" and "ed" are
+         ambiguous (Mandriva #56272).
+
+20091226
+       + add bterm terminfo entry, based on bogl 0.1.18 -TD
+       + minor fix to rxvt+pcfkeys terminfo entry -TD
+       + build-fixes for Ada95 tree for gnat 4.4 "style".
+
+20091219
+       + remove old check in mvderwin() which prevented moving a derived
+         window whose origin happened to coincide with its parent's origin
+         (report by Katarina Machalkova).
+       + improve test/ncurses.c to put mouse droppings in the proper window.
+       + update minix terminfo entry -TD
+       + add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler)
+
+20091212
+       + correct transfer of multicolumn characters in multirow
+         field_buffer(), which stopped at the end of the first row due to
+         filling of unused entries in a cchar_t array with nulls.
+       + updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta)
+       + modify _nc_viscbuf2() and _tracecchar_t2() to show wide-character
+         nulls.
+       + use strdup() in set_menu_mark(), restore .marklen struct member on
+         failure.
+       + eliminate clause 3 from the UCB copyrights in read_termcap.c and
+         tset.c per
+               ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change
+         (patch by Nicholas Marriott).
+       + replace a malloc in tic.c with strdup, checking for failure (patch by
+         Nicholas Marriott).
+       + update config.guess, config.sub from
+               http://savannah.gnu.org/projects/config
+
+20091205
+       + correct layout of working window used to extract data in
+         wide-character configured by set_field_buffer (patch by Rafael
+         Garrido Fernandez)
+       + improve some limit-checks related to filename length in reading and
+         writing terminfo entries.
+       + ensure that filename is always filled in when attempting to read
+         a terminfo entry, so that infocmp can report the filename (patch
+         by Nicholas Marriott).
+
+20091128
+       + modify mk-1st.awk to allow tinfo library to be built when term-driver
+         is enabled.
+       + add error-check to configure script to ensure that sp-funcs is
+         enabled if term-driver is, since some internal interfaces rely upon
+         this.
+
+20091121
+       + fix case where progs/tput is used while sp-funcs is configure; this
+         requires save/restore of out-character function from _nc_prescreen
+         rather than the SCREEN structure (report by Charles Wilson).
+       + fix typo in man/curs_trace.3x which caused incorrect symbolic links
+       + improved configure macros CF_GCC_ATTRIBUTES, CF_PROG_LINT.
+
+20091114
+
+       + updated man/curs_trace.3x
+       + limit hashing for termcap-names to 2-characters (Ubuntu #481740).
+       + change a variable name in lib_newwin.c to make it clearer which
+         value is being freed on error (patch by Nicholas Marriott).
+
+20091107
+       + improve test/ncurses.c color-cycling test by reusing attribute-
+         and color-cycling logic from the video-attributes screen.
+       + add ifdef'd with NCURSES_INTEROP_FUNCS experimental bindings in form
+         library which help make it compatible with interop applications
+         (patch by Juergen Pfeifer).
+       + add configure option --enable-interop, for integrating changes
+         for generic/interop support to form-library by Juergen Pfeifer
+
+20091031
+       + modify use of $CC environment variable which is defined by X/Open
+         as a curses feature, to ignore it if it is not a single character
+         (prompted by discussion with Benjamin C W Sittler).
+       + add START_TRACE in slk_init
+       + fix a regression in _nc_ripoffline which made test/ncurses.c not show
+         soft-keys, broken in 20090927 merging.
+       + change initialization of "hidden" flag for soft-keys from true to
+         false, broken in 20090704 merging (Ubuntu #464274).
+       + update nsterm entries (patch by Benjamin C W Sittler, prompted by
+         discussion with Fabian Groffen in GenToo #206201).
+       + add test/xterm-256color.dat
+
+20091024
+       + quiet some pedantic gcc warnings.
+       + modify _nc_wgetch() to check for a -1 in the fifo, e.g., after a
+         SIGWINCH, and discard that value, to avoid confusing application
+         (patch by Eygene Ryabinkin, FreeBSD bin/136223).
+
+20091017
+       + modify handling of $PKG_CONFIG_LIBDIR to use only the first item in
+         a possibly colon-separated list (Debian #550716).
+
+20091010
+       + supply a null-terminator to buffer in _nc_viswibuf().
+       + fix a sign-extension bug in unget_wch() (report by Mike Gran).
+       + minor fixes to error-returns in default function for tputs, as well
+         as in lib_screen.c
+
+20091003
+       + add WACS_xxx definitions to wide-character configuration for thick-
+         and double-lines (discussion with Slava Zanko).
+       + remove unnecessary kcan assignment to ^C from putty (Sven Joachim)
+       + add ccc and initc capabilities to xterm-16color -TD
+       > patch by Benjamin C W Sittler:
+       + add linux-16color
+       + correct initc capability of linux-c-nc end-of-range
+       + similar change for dg+ccc and dgunix+ccc
+
+20090927
+       + move leak-checking for comp_captab.c into _nc_leaks_tinfo() since
+         that module since 20090711 is in libtinfo.
+       + add configure option --enable-term-driver, to allow compiling with
+         terminal-driver.  That is used in MinGW port, and (being somewhat
+         more complicated) is an experimental alternative to the conventional
+         termlib internals.  Currently, it requires the sp-funcs feature to
+         be enabled.
+       + completed integrating "sp-funcs" by Juergen Pfeifer in ncurses
+         library (some work remains for forms library).
+
+20090919
+       + document return code from define_key (report by Mike Gran).
+       + make some symbolic links in the terminfo directory-tree shorter
+         (patch by Daniel Jacobowitz, forwarded by Sven Joachim).).
+       + fix some groff warnings in terminfo.5, etc., from recent Debian
+         changes.
+       + change ncv and op capabilities in sun-color terminfo entry to match
+         Sun's entry for this (report by Laszlo Peter).
+       + improve interix smso terminfo capability by using reverse rather than
+         bold (report by Kristof Zelechovski).
+
+20090912
+       + add some test programs (and make these use the same special keys
+         by sharing linedata.h functions):
+         test/test_addstr.c
+         test/test_addwstr.c
+         test/test_addchstr.c
+         test/test_add_wchstr.c
+       + correct internal _nc_insert_ch() to use _nc_insert_wch() when
+         inserting wide characters, since the wins_wch() function that it used
+         did not update the cursor position (report by Ciprian Craciun).
+
+20090906
+       + fix typo s/is_timeout/is_notimeout/ which made "man is_notimeout" not
+         work.
+       + add null-pointer checks to other opaque-functions.
+       + add is_pad() and is_subwin() functions for opaque access to WINDOW
+         (discussion with Mark Dickinson).
+       + correct merge to lib_newterm.c, which broke when sp-funcs was
+         enabled.
+
+20090905
+       + build-fix for building outside source-tree (report by Sven Joachim).
+       + fix Debian lintian warning for man/tabs.1 by making section number
+         agree with file-suffix (report by Sven Joachim).
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090829
+       + workaround for bug in g++ 4.1-4.4 warnings for wattrset() macro on
+         amd64 (Debian #542031).
+       + fix typo in curs_mouse.3x (Debian #429198).
+
+20090822
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090815
+       + correct use of terminfo capabilities for initializing soft-keys,
+         broken in 20090509 merging.
+       + modify wgetch() to ensure it checks SIGWINCH when it gets an error
+         in non-blocking mode (patch by Clemens Ladisch).
+       + use PATH_SEPARATOR symbol when substituting into run_tic.sh, to
+         help with builds on non-Unix platforms such as OS/2 EMX.
+       + modify scripting for misc/run_tic.sh to test configure script's
+         $cross_compiling variable directly rather than comparing host/build
+         compiler names (prompted by comment in GenToo #249363).
+       + fix configure script option --with-database, which was coded as an
+         enable-type switch.
+       + build-fixes for --srcdir (report by Frederic L W Meunier).
+
+20090808
+       + separate _nc_find_entry() and _nc_find_type_entry() from
+         implementation details of hash function.
+
+20090803
+       + add tabs.1 to man/man_db.renames
+       + modify lib_addch.c to compensate for removal of wide-character test
+         from unctrl() in 20090704 (Debian #539735).
+
+20090801
+       + improve discussion in INSTALL for use of system's tic/infocmp for
+         cross-compiling and building fallbacks.
+       + modify test/demo_termcap.c to correspond better to options in
+         test/demo_terminfo.c
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+       + fix logic for 'V' in test/ncurses.c tests f/F.
+
+20090728
+       + correct logic in tigetnum(), which caused tput program to treat all
+         string capabilities as numeric (report by Rajeev V Pillai,
+         cf: 20090711).
+
+20090725
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090718
+       + fix a null-pointer check in _nc_format_slks() in lib_slk.c, from
+         20070704 changes.
+       + modify _nc_find_type_entry() to use hashing.
+       + make CCHARW_MAX value configurable, noting that changing this would
+         change the size of cchar_t, and would be ABI-incompatible.
+       + modify test-programs, e.g,.  test/view.c, to address subtle
+         differences between Tru64/Solaris and HPUX/AIX getcchar() return
+         values.
+       + modify length returned by getcchar() to count the trailing null
+         which is documented in X/Open (cf: 20020427).
+       + fixes for test programs to build/work on HPUX and AIX, etc.
+
+20090711
+       + improve performance of tigetstr, etc., by using hashing code from tic.
+       + minor fixes for memory-leak checking.
+       + add test/demo_terminfo, for comparison with demo_termcap
+
+20090704
+       + remove wide-character checks from unctrl() (patch by Clemens Ladisch).
+       + revise wadd_wch() and wecho_wchar() to eliminate dependency on
+         unctrl().
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090627
+       + update llib-lncurses[wt] to use sp-funcs.
+       + various code-fixes to build/work with --disable-macros configure
+         option.
+       + add several new files from Juergen Pfeifer which will be used when
+         integration of "sp-funcs" is complete.  This includes a port to
+         MinGW.
+
+20090613
+       + move definition for NCURSES_WRAPPED_VAR back to ncurses_dll.h, to
+         make includes of term.h without curses.h work (report by "Nix").
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090607
+       + fix a regression in lib_tputs.c, from ongoing merges.
+
+20090606
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090530
+       + fix an infinite recursion when adding a legacy-coding 8-bit value
+         using insch() (report by Clemens Ladisch).
+       + free home-terminfo string in del_curterm() (patch by Dan Weber).
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090523
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090516
+       + work around antique BSD game's manipulation of stdscr, etc., versus
+         SCREEN's copy of the pointer (Debian #528411).
+       + add a cast to wattrset macro to avoid compiler warning when comparing
+         its result against ERR (adapted from patch by Matt Kraii, Debian
+         #528374).
+
+20090510
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090502
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+       + add vwmterm terminfo entry (patch by Bryan Christ).
+
+20090425
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090419
+       + build fix for _nc_free_and_exit() change in 20090418 (report by
+         Christian Ebert).
+
+20090418
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090411
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+         This change finishes merging for menu and panel libraries, does
+         part of the form library.
+
+20090404
+       + suppress configure check for static/dynamic linker flags for gcc on
+         Darwin (report by Nelson Beebe).
+
+20090328
+       + extend ansi.sys pfkey capability from kf1-kf10 to kf1-kf48, moving
+         function key definitions from emx-base for consistency -TD
+       + correct missing final 'p' in pfkey capability of ansi.sys-old (report
+         by Kalle Olavi Niemitalo).
+       + improve test/ncurses.c 'F' test, show combining characters in color.
+       + quiet a false report by cppcheck in c++/cursesw.cc by eliminating
+         a temporary variable.
+       + use _nc_doalloc() rather than realloc() in a few places in ncurses
+         library to avoid leak in out-of-memory condition (reports by William
+         Egert and Martin Ettl based on cppcheck tool).
+       + add --with-ncurses-wrap-prefix option to test/configure (discussion
+         with Charles Wilson).
+       + use ncurses*-config scripts if available for test/configure.
+       + update test/aclocal.m4 and test/configure
+       > patches by Charles Wilson:
+       + modify CF_WITH_LIBTOOL configure check to allow unreleased libtool
+         version numbers (e.g.  which include alphabetic chars, as well as
+         digits, after the final '.').
+       + improve use of -no-undefined option for libtool by setting an
+         intermediate variable LT_UNDEF in the configure script, and then
+         using that in the libtool link-commands.
+       + fix an missing use of NCURSES_PUBLIC_VAR() in tinfo/MKcodes.awk
+         from 2009031 changes.
+       + improve mk-1st.awk script by writing separate cases for the
+         LIBTOOL_LINK command, depending on which library (ncurses, ticlib,
+         termlib) is to be linked.
+       + modify configure.in to allow broken-linker configurations, not just
+         enable-reentrant, to set public wrap prefix.
+
+20090321
+       + add TICS_LIST and SHLIB_LIST to allow libtool 2.2.6 on Cygwin to
+         build with tic and term libraries (patch by Charles Wilson).
+       + add -no-undefined option to libtool for Cygwin, MinGW, U/Win and AIX
+         (report by Charles Wilson).
+       + fix definition for c++/Makefile.in's SHLIB_LIST, which did not list
+         the form, menu or panel libraries (patch by Charles Wilson).
+       + add configure option --with-wrap-prefix to allow setting the prefix
+         for functions used to wrap global variables to something other than
+         "_nc_" (discussion with Charles Wilson).
+
+20090314
+       + modify scripts to generate ncurses*-config and pc-files to add
+         dependency for tinfo library (patch by Charles Wilson).
+       + improve comparison of program-names when checking for linked flavors
+         such as "reset" by ignoring the executable suffix (reports by Charles
+         Wilson, Samuel Thibault and Cedric Bretaudeau on Cygwin mailing
+         list).
+       + suppress configure check for static/dynamic linker flags for gcc on
+         Solaris 10, since gcc is confused by absence of static libc, and
+         does not switch back to dynamic mode before finishing the libraries
+         (reports by Joel Bertrand, Alan Pae).
+       + minor fixes to Intel compiler warning checks in configure script.
+       + modify _nc_leaks_tinfo() so leak-checking in test/railroad.c works.
+       + modify set_curterm() to make broken-linker configuration work with
+         changes from 20090228 (report by Charles Wilson).
+
+20090228
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+       + modify declaration of cur_term when broken-linker is used, but
+         enable-reentrant is not, to match pre-5.7 (report by Charles Wilson).
+
+20090221
+       + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
+
+20090214
+       + add configure script --enable-sp-funcs to enable the new set of
+         extended functions.
+       + start integrating patches by Juergen Pfeifer:
+         + add extended functions which specify the SCREEN pointer for several
+           curses functions which use the global SP (these are incomplete;
+           some internals work is needed to complete these).
+         + add special cases to configure script for MinGW port.
+
+20090207
+       + update several configure macros from lynx changes
+         + append (not prepend) to CFLAGS/CPPFLAGS
+         + change variable from PATHSEP to PATH_SEPARATOR
+       + improve install-rules for pc-files (patch by Miroslav Lichvar).
+         + make it work with $DESTDIR
+         + create the pkg-config library directory if needed.
+
+20090124
+       + modify init_pair() to allow caller to create extra color pairs beyond
+         the color_pairs limit, which use default colors (request by Emanuele
+         Giaquinta).
+       + add misc/terminfo.tmp and misc/*.pc to "sources" rule.
+       + fix typo "==" where "=" is needed in ncurses-config.in and
+         gen-pkgconfig.in files (Debian #512161).
+
+20090117
+       + add -shared option to MK_SHARED_LIB when -Bsharable is used, for
+         *BSD's, without which "main" might be one of the shared library's
+         dependencies (report/analysis by Ken Dickey).
+       + modify waddch_literal(), updating line-pointer after a multicolumn
+         character is found to not fit on the current row, and wrapping is
+         done.  Since the line-pointer was not updated, the wrapped
+         multicolumn character was written to the beginning of the current row
+         (cf: 20041023, reported by "Nick" regarding problem with ncmpc
+         http://musicpd.org/mantis/bug_view_page.php?bug_id=1930).
+
+20090110
+       + add screen.Eterm terminfo entry (GenToo #124887) -TD
+       + modify adacurses-config to look for ".ali" files in the adalib
+         directory.
+       + correct install for Ada95, which omitted libAdaCurses.a used in
+         adacurses-config
+       + change install for adacurses-config to provide additional flavors
+         such as adacursesw-config, for ncursesw (GenToo #167849).
+
+20090105
+       + remove undeveloped feature in ncurses-config.in for setting
+         prefix variable.
+       + recent change to ncurses-config.in did not take into account the
+         --disable-overwrite option, which sets $includedir to the
+         subdirectory and using just that for a -I option does not work - fix
+         (report by Frederic L W Meunier).
+
+20090104
+       + modify gen-pkgconfig.in to eliminate a dependency on rpath when
+         deciding whether to add $LIBS to --libs output; that should be shown
+         for the ncurses and tinfo libraries without taking rpath into
+         account.
+       + fix an overlooked change from $AR_OPTS to $ARFLAGS in mk-1st.awk,
+         used in static libraries (report by Marty Jack).
+
+20090103
+       + add a configure-time check to pick a suitable value for
+         CC_SHARED_OPTS for Solaris (report by Dagobert Michelsen).
+       + add configure --with-pkg-config and --enable-pc-files options, along
+         with misc/gen-pkgconfig.in which can be used to generate ".pc" files
+         for pkg-config (request by Jan Engelhardt).
+       + use $includedir symbol in misc/ncurses-config.in, add --includedir
+         option.
+       + change makefiles to use $ARFLAGS rather than $AR_OPTS, provide a
+         configure check to detect whether a "-" is needed before "ar"
+         options.
+       + update config.guess, config.sub from
+               http://savannah.gnu.org/projects/config
+
+20081227
+       + modify mk-1st.awk to work with extra categories for tinfo library.
+       + modify configure script to allow building shared libraries with gcc
+         on AIX 5 or 6 (adapted from patch by Lital Natan).
+
+20081220
+       + modify to omit the opaque-functions from lib_gen.o when
+         --disable-ext-funcs is used.
+       + add test/clip_printw.c to illustrate how to use printw without
+         wrapping.
+       + modify ncurses 'F' test to demo wborder_set() with colored lines.
+       + modify ncurses 'f' test to demo wborder() with colored lines.
+
+20081213
+       + add check for failure to open hashed-database needed for db4.6
+         (GenToo #245370).
+       + corrected --without-manpages option; previous change only suppressed
+         the auxiliary rules install.man and uninstall.man
+       + add case for FreeMINT to configure macro CF_XOPEN_SOURCE (patch from
+         GenToo #250454).
+       + fixes from NetBSD port at
+         http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/ncurses/patches
+         patch-ac (build-fix for DragonFly)
+         patch-ae (use INSTALL_SCRIPT for installing misc/ncurses*-config).
+       + improve configure script macros CF_HEADER_PATH and CF_LIBRARY_PATH
+         by adding CFLAGS, CPPFLAGS and LDFLAGS, LIBS values to the
+         search-lists.
+       + correct title string for keybound manpage (patch by Frederic Culot,
+         OpenBSD documentation/6019),
+
+20081206
+       + move del_curterm() call from _nc_freeall() to _nc_leaks_tinfo() to
+         work for progs/clear, progs/tabs, etc.
+       + correct buffer-size after internal resizing of wide-character
+         set_field_buffer(), broken in 20081018 changes (report by Mike Gran).
+       + add "-i" option to test/filter.c to tell it to use initscr() rather
+         than newterm(), to investigate report on comp.unix.programmer that
+         ncurses would clear the screen in that case (it does not - the issue
+         was xterm's alternate screen feature).
+       + add check in mouse-driver to disable connection if GPM returns a
+         zero, indicating that the connection is closed (Debian #506717,
+         adapted from patch by Samuel Thibault).
+
+20081129
+       + improve a workaround in adding wide-characters, when a control
+         character is found.  The library (cf: 20040207) uses unctrl() to
+         obtain a printable version of the control character, but was not
+         passing color or video attributes.
+       + improve test/ncurses.c 'a' test, using unctrl() more consistently to
+         display meta-characters.
+       + turn on _XOPEN_CURSES definition in curses.h
+       + add eterm-color entry (report by Vincent Lefevre) -TD
+       + correct use of key_name() in test/ncurses.c 'A' test, which only
+         displays wide-characters, not key-codes since 20070612 (report by
+         Ricardo Cantu).
+
+20081122
+       + change _nc_has_mouse() to has_mouse(), reflect its use in C++ and
+         Ada95 (patch by Juergen Pfeifer).
+       + document in TO-DO an issue with Cygwin's package for GNAT (report
+         by Mike Dennison).
+       + improve error-checking of command-line options in "tabs" program.
+
+20081115
+       + change several terminfo entries to make consistent use of ANSI
+         clear-all-tabs -TD
+       + add "tabs" program (prompted by Debian #502260).
+       + add configure --without-manpages option (request by Mike Frysinger).
+
 20081102 5.7 release for upload to ftp.gnu.org
 
 20081025
@@ -77,7 +1147,7 @@ it is not possible to add this information.
          overlooked til now.
 
 20081011
-       + update html documentation.
+       + regenerated html documentation.
        + add -m and -s options to test/keynames.c and test/key_names.c to test
          the meta() function with keyname() or key_name(), respectively.
        + correct return value of key_name() on error; it is null.
@@ -2204,7 +3274,7 @@ it is not possible to add this information.
          (request by Mike Aubury).
        + add symbol to curses.h which can be used to suppress include of
          stdbool.h, e.g.,
-               #define NCURSES_ENABLE_STDBOOL_H 0
+               #define NCURSES_ENABLE_STDBOOL_H 0
                #include <curses.h>
          (discussion on XFree86 mailing list).
 
@@ -2784,7 +3854,7 @@ it is not possible to add this information.
 
 20030208
        + add checking in tic for incomplete line-drawing character mapping.
-       + update configure script to reflect fix for AC_PROG_GCC_TRADITIONAL,
+       + updated configure script to reflect fix for AC_PROG_GCC_TRADITIONAL,
          which is broken in autoconf 2.5x for Mac OS X 10.2.3 (report by
          Gerben Wierda <Sherlock@rna.nl>).
        + make return value from _nc_printf_string() consistent.  Before,
@@ -3503,7 +4573,7 @@ it is not possible to add this information.
        + restore special case from 20010922 changes to omit SA_RESTART when
          setting up SIGWINCH handler, which is needed to allow wgetch() to be
          interrupted by that signal.
-       + update configure macro CF_WITH_PATHLIST, to omit some double quotes
+       + updated configure macro CF_WITH_PATHLIST, to omit some double quotes
          not needed with autoconf 2.52
        + revert configure script to autoconf 2.13 patched with
                autoconf-2.13-19990117.patch.gz (or later)
diff --git a/contrib/ncurses/README.DELETED b/contrib/ncurses/README.DELETED
deleted file mode 100644 (file)
index 583e857..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-Ada95/
-Makefile.in
-Makefile.os2
-README.emx
-aclocal.m4
-announce.html.in
-c++/
-config.guess
-config.sub
-configure
-configure.in
-convert_configure.pl
-dist.mk
-doc/
-form/Makefile.in
-form/READ.ME
-form/headers
-form/llib-lform
-form/llib-lformw
-form/modules
-include/Caps.aix4
-include/Caps.hpux11
-include/Caps.keys
-include/Caps.osf1r5
-include/Caps.uwin
-include/MKterm.h.awk.in
-include/curses.h.in
-include/headers
-include/ncurses_cfg.hin
-install-sh
-man/
-menu/Makefile.in
-menu/READ.ME
-menu/headers
-menu/llib-lmenu
-menu/llib-lmenuw
-menu/modules
-misc/Makefile.in
-misc/chkdef.cmd
-misc/cleantic.cmd
-misc/cmpdef.cmd
-misc/csort
-misc/emx.src
-misc/gen_edit.sh
-misc/jpf-indent
-misc/makedef.cmd
-misc/makellib
-misc/ncu-indent
-misc/ncurses-config.in
-misc/ncurses.supp
-misc/run_tic.in
-misc/shlib
-misc/tdlint
-misc/terminfo.src
-mk-0th.awk
-mk-1st.awk
-mk-2nd.awk
-mk-hdr.awk
-mkdirs.sh
-ncurses/Makefile.in
-ncurses/README
-ncurses/README.IZ
-ncurses/base/README
-ncurses/llib-lncurses
-ncurses/llib-lncursest
-ncurses/llib-lncursesw
-ncurses/modules
-ncurses/tinfo/README
-ncurses/trace/README
-ncurses/tty/tty_display.h
-panel/Makefile.in
-panel/headers
-panel/llib-lpanel
-panel/llib-lpanelw
-panel/modules
-progs/
-tar-copy.sh
-test/
diff --git a/contrib/ncurses/README.DRAGONFLY b/contrib/ncurses/README.DRAGONFLY
deleted file mode 100644 (file)
index 1bf7e46..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-
-                       ncurses 5.7 AS USED BY DRAGONFLY
-
-    This directory contains a selected set of files from the gnu 
-    ncurses-5.4.tar.gz distribution.   No files have been moved
-    or modified from their extracted position.
-
-    This distribution was downloaded from the following site:
-
-       http://ftp.gnu.org/pub/gnu/ncurses/
-
-    MD5 (ncurses-5.7.tar.gz) = cce05daf61a64501ef6cd8da1f727ec6
-    SHA1 (ncurses-5.7.tar.gz) = 8233ee56ed84ae05421e4e6d6db6c1fe72ee6797
-
-    DO NOT CREATE OR EDIT ANY FILES IN THIS DIRECTORY HIERARCHY!  THIS
-    HIERARCHY REPRESENTS AN EXACT COPY, MINUS UNNEEDED FILES, OF THE
-    ORIGINAL ARCHIVE.  All modifications are made in the 
-    DragonFly build wrapper, in /usr/src/gnu/lib/libncurses
-    by creating overrides or performing surgery on the distribution into
-    local files.  The only additional files added to this directory
-    are README.DRAGONFLY and README.DELETED.
-
-    The .h files copied into base where created using configure opts:
-       --enable-widec
-       --enable-const
-       --with-sysmouse
-       --enable-termcap
-       --enable-bsdpad
-
-    UPGRADE PROCEDURE:
-
-       * download a new ncurses-5.X dist greater then 5.7
-
-       * extract the archive into the contrib/ directory.
-
-       * Check overrides and patches in /usr/src/gnu/lib/libncurses and
-         modify as appropriate.
-
-         DO NOT MAKE ANY EDITS TO THE DISTRIBUTION IN THIS CONTRIB
-         DIRECTORY, OTHER THEN TO ADD OR DELETE FILES ASSOCIATED WITH THE
-         GNU DISTRIBUTION.
-
-    The file README.DELETED contains a list of deleted files.
index ca47d02..5df7f47 100644 (file)
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.               --
+-- Copyright (c) 1998-2010,2011 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             --
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: TO-DO,v 1.51 2008/10/11 19:22:27 tom Exp $
+-- $Id: TO-DO,v 1.57 2011/03/28 00:23:02 tom Exp $
 -------------------------------------------------------------------------------
 
 SHORT-TERM TO-DO ITEMS:
@@ -45,7 +45,7 @@ Known Problems:
 + Scrolling optimization has holes:  for example, it forces repaints of the
   screen between calls to refresh().
 
-+ SVr4 uses slightly different rules for determining when softkeys are shown. 
++ SVr4 uses slightly different rules for determining when softkeys are shown.
   For example, they are initially displayed (before the ncurses 'e' test
   activates them), and a touchwin can apparently also force them to be
   displayed.
@@ -58,7 +58,7 @@ Known Problems:
 + The window classes defined in the c++ subdirectory need documentation.  Some
   C++ programmer could earn a lot of good karma by doing this...
 
-+ vid_attr() should support the set_a_attributes (sgr1) string, but does not. 
++ vid_attr() should support the set_a_attributes (sgr1) string, but does not.
   There appear to be no terminals that require that functionality.
 
 + the configure --disable-ext-funcs option does not work for Ada95 tree.
@@ -72,27 +72,28 @@ Known Problems:
   Building those with libtool does not work either.  (This is a problem with
   the BSD platforms).
 
++ more work is needed to make the MinGW port support ordinary terminals.
+
 Portability (or lack thereof):
 
 + Users of older System V UNIXes (but not Solaris, and probably not SVr4) may
   trip over a known problem with the signal-handling code which causes abrupt
   termination of ncurses applications following resume from a ^Z suspend (this
   problem was first seen running lynx).  You will not see this problem if you
-  are running Linux or one of the 4.4BSD derivatives like FreeBSD, NetBSD, or
-  BSDI.  For details, see the analysis in the header comment of
-  ncurses/tty/lib_tstp.c .
+  are using one of the 4.4BSD derivatives like such as, NetBSD, or BSDI, or
+  systems using that convention.  For details, see the analysis in the header
+  comment of ncurses/tty/lib_tstp.c .
 
 + In theory, vwprintw and vwscanf are supposed to use the older varargs.h
   interface for handling variadic argument lists (and are deprecated by X/Open
-  for that reason).  Linux doesn't have varargs.h, it has the newer
-  X/Open-standard stdargs.h equivalent.  So these functions use stdargs
-  instead.  This is unlikely to be a problem unless you're building ncurses on
-  a System V old enough to only have varargs.h.  (Solaris 2.5.1 used the
-  stdarg.h binding as well).
-
-+ If you're using a BSD earlier than 4.4BSD, or a Linux old enough not to have
-  a native vsscanf(3) in its library, vwscanw() will not work.  You lose.  (It
-  should work on any System V, however).  If you want to fix this, add an
+  for that reason).  Many newer systems do no have varargs.h, instead they have
+  only the newer X/Open-standard stdargs.h equivalent.  So these functions use
+  stdargs instead.  This is unlikely to be a problem unless you're building
+  ncurses on a System V old enough to only have varargs.h.  (Solaris 2.5.1 used
+  the stdarg.h binding as well).
+
++ If you're using a system old enough not to have a native vsscanf(3) in its
+  library, vwscanw() will not work.  If you want to fix this, add an
   implementation to ncurses/vsscanf.c.
 
 + The C++ binding fails to build with a few C++ compilers.
@@ -122,7 +123,7 @@ supporting internationalization.
 2. DOS port
 
 Only a few of the files in the library depend on the terminfo format.
-It should be possible to further kernelize the package, then rewrite 
+It should be possible to further kernelize the package, then rewrite
 a small number of core files to produce a functionally-compatible
 port that would do updates to a memory-mapped screen area.  The first
 result of this would be a DOS port.
@@ -195,10 +196,10 @@ F. Unused VDT capabilities:
                move_insert, dest_tabs_magic_smso, transparent_underline,
                needs_xon_xoff, hard_cursor.
        Numerics: lines_of_memory, buttons.
-       Strings: pkey_key, pkey_local, pkey_xmit, underline_char, 
-               enter_xon_mode, exit_xon_mode, xon_character, xoff_character, 
+       Strings: pkey_key, pkey_local, pkey_xmit, underline_char,
+               enter_xon_mode, exit_xon_mode, xon_character, xoff_character,
                display_clock, remove_clock, user[0-5], display_pc_char,
-               enter_scancode_mode, exit_scancode_mode, pc_term_options, 
+               enter_scancode_mode, exit_scancode_mode, pc_term_options,
                scancode_escape, alt_scancode_esc.
 
 These are the potentially important ones for ncurses.  Notes:
index 3bb4ccd..6044e03 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2004 Free Software Foundation, Inc.                        *
+ * Copyright (c) 2004,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            *
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: f_trace.c,v 1.1 2004/12/25 23:28:49 tom Exp $")
+MODULE_ID("$Id: f_trace.c,v 1.2 2010/01/23 21:14:36 tom Exp $")
 
 NCURSES_EXPORT(FIELD **)
 _nc_retrace_field_ptr(FIELD **code)
 {
-  T((T_RETURN("%p"), code));
+  T((T_RETURN("%p"), (void *)code));
   return code;
 }
 
 NCURSES_EXPORT(FIELD *)
 _nc_retrace_field(FIELD *code)
 {
-  T((T_RETURN("%p"), code));
+  T((T_RETURN("%p"), (void *)code));
   return code;
 }
 
 NCURSES_EXPORT(FIELDTYPE *)
 _nc_retrace_field_type(FIELDTYPE *code)
 {
-  T((T_RETURN("%p"), code));
+  T((T_RETURN("%p"), (void *)code));
   return code;
 }
 
 NCURSES_EXPORT(FORM *)
 _nc_retrace_form(FORM *code)
 {
-  T((T_RETURN("%p"), code));
+  T((T_RETURN("%p"), (void *)code));
   return code;
 }
 
index f79a157..a07bdb1 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_arg.c,v 1.11 2004/12/25 22:20:18 tom Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
@@ -67,7 +67,7 @@ set_fieldtype_arg(FIELDTYPE *typ,
                  void (*const free_arg) (void *))
 {
   T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"),
-     typ, make_arg, copy_arg, free_arg));
+     (void *)typ, make_arg, copy_arg, free_arg));
 
   if (typ != 0 && make_arg != (void *)0)
     {
@@ -91,7 +91,7 @@ set_fieldtype_arg(FIELDTYPE *typ,
 NCURSES_EXPORT(void *)
 field_arg(const FIELD *field)
 {
-  T((T_CALLED("field_arg(%p)"), field));
+  T((T_CALLED("field_arg(%p)"), (const void *)field));
   returnVoidPtr(Normalize_Field(field)->arg);
 }
 
index c9c0838..0112f00 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_attr.c,v 1.10 2004/12/11 21:33:15 tom Exp $")
+MODULE_ID("$Id: fld_attr.c,v 1.11 2010/01/23 21:12:08 tom Exp $")
 
 /*----------------------------------------------------------------------------
   Field-Attribute manipulation routines
@@ -66,7 +66,7 @@ NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\
 #define GEN_FIELD_ATTR_GET_FCT( name ) \
 NCURSES_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\
 {\
-   T((T_CALLED("field_" #name "(%p)"), field));\
+   T((T_CALLED("field_" #name "(%p)"), (const void *) field));\
    returnAttr( A_ATTRIBUTES & (Normalize_Field( field ) -> name) );\
 }
 
index 7c3a90a..ef9ec00 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_current.c,v 1.11 2004/12/25 22:40:13 tom Exp $")
+MODULE_ID("$Id: fld_current.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
@@ -52,7 +52,7 @@ set_current_field(FORM *form, FIELD *field)
 {
   int err = E_OK;
 
-  T((T_CALLED("set_current_field(%p,%p)"), form, field));
+  T((T_CALLED("set_current_field(%p,%p)"), (void *)form, (void *)field));
   if (form == 0 || field == 0)
     {
       RETURN(E_BAD_ARGUMENT);
@@ -113,7 +113,7 @@ set_current_field(FORM *form, FIELD *field)
 NCURSES_EXPORT(FIELD *)
 current_field(const FORM *form)
 {
-  T((T_CALLED("current_field(%p)"), form));
+  T((T_CALLED("current_field(%p)"), (const void *)form));
   returnField(Normalize_Form(form)->current);
 }
 
@@ -130,7 +130,7 @@ current_field(const FORM *form)
 NCURSES_EXPORT(int)
 field_index(const FIELD *field)
 {
-  T((T_CALLED("field_index(%p)"), field));
+  T((T_CALLED("field_index(%p)"), (const void *)field));
   returnCode((field != 0 && field->form != 0) ? (int)field->index : -1);
 }
 
index 3559ba6..6d7bd34 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2005,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2007,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_def.c,v 1.36 2007/10/13 19:29:58 tom Exp $")
+MODULE_ID("$Id: fld_def.c,v 1.38 2010/01/23 21:14:35 tom Exp $")
 
 /* this can't be readonly */
 static FIELD default_field =
@@ -252,8 +252,8 @@ _nc_Free_Type(FIELD *field)
   if (field->type != 0)
     {
       field->type->ref--;
+      _nc_Free_Argument(field->type, (TypeArgument *)(field->arg));
     }
-  _nc_Free_Argument(field->type, (TypeArgument *)(field->arg));
 }
 
 /*---------------------------------------------------------------------------
@@ -291,7 +291,7 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
       ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */
       (New_Field = typeMalloc(FIELD, 1)) != 0)
     {
-      T((T_CREATE("field %p"), New_Field));
+      T((T_CREATE("field %p"), (void *)New_Field));
       *New_Field = default_field;
       New_Field->rows = rows;
       New_Field->cols = cols;
@@ -355,7 +355,7 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
 NCURSES_EXPORT(int)
 free_field(FIELD *field)
 {
-  T((T_CALLED("free_field(%p)"), field));
+  T((T_CALLED("free_field(%p)"), (void *)field));
   if (!field)
     {
       RETURN(E_BAD_ARGUMENT);
index bbc38a3..b8e501b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2007,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_dup.c,v 1.12 2007/10/13 19:30:21 tom Exp $")
+MODULE_ID("$Id: fld_dup.c,v 1.13 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
@@ -53,12 +53,12 @@ dup_field(FIELD *field, int frow, int fcol)
   FIELD *New_Field = (FIELD *)0;
   int err = E_BAD_ARGUMENT;
 
-  T((T_CALLED("dup_field(%p,%d,%d)"), field, frow, fcol));
+  T((T_CALLED("dup_field(%p,%d,%d)"), (void *)field, frow, fcol));
   if (field && (frow >= 0) && (fcol >= 0) &&
       ((err = E_SYSTEM_ERROR) != 0) && /* trick : this resets the default error */
       (New_Field = typeMalloc(FIELD, 1)))
     {
-      T((T_CREATE("field %p"), New_Field));
+      T((T_CREATE("field %p"), (void *)New_Field));
       *New_Field = *_nc_Default_Field;
       New_Field->frow = frow;
       New_Field->fcol = fcol;
index 9237f96..3aac5be 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_ftchoice.c,v 1.9 2004/12/11 21:44:57 tom Exp $")
+MODULE_ID("$Id: fld_ftchoice.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -51,14 +51,19 @@ set_fieldtype_choice(FIELDTYPE *typ,
                     bool (*const next_choice) (FIELD *, const void *),
                     bool (*const prev_choice) (FIELD *, const void *))
 {
-  T((T_CALLED("set_fieldtype_choice(%p,%p,%p)"), typ, next_choice, prev_choice));
+  T((T_CALLED("set_fieldtype_choice(%p,%p,%p)"), (void *)typ, next_choice, prev_choice));
 
   if (!typ || !next_choice || !prev_choice)
     RETURN(E_BAD_ARGUMENT);
 
   typ->status |= _HAS_CHOICE;
+#if NCURSES_INTEROP_FUNCS
+  typ->enum_next.onext = next_choice;
+  typ->enum_prev.oprev = prev_choice;
+#else
   typ->next = next_choice;
   typ->prev = prev_choice;
+#endif
   RETURN(E_OK);
 }
 
index 4ed2219..c2cd251 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2007,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_ftlink.c,v 1.13 2007/10/13 19:30:35 tom Exp $")
+MODULE_ID("$Id: fld_ftlink.c,v 1.14 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -53,14 +53,14 @@ link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2)
 {
   FIELDTYPE *nftyp = (FIELDTYPE *)0;
 
-  T((T_CALLED("link_fieldtype(%p,%p)"), type1, type2));
+  T((T_CALLED("link_fieldtype(%p,%p)"), (void *)type1, (void *)type2));
   if (type1 && type2)
     {
       nftyp = typeMalloc(FIELDTYPE, 1);
 
       if (nftyp)
        {
-         T((T_CREATE("fieldtype %p"), nftyp));
+         T((T_CREATE("fieldtype %p"), (void *)nftyp));
          *nftyp = *_nc_Default_FieldType;
          nftyp->status |= _LINKED_TYPE;
          if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS))
index 324198c..13fe8e7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_info.c,v 1.10 2004/12/11 22:24:57 tom Exp $")
+MODULE_ID("$Id: fld_info.c,v 1.11 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -53,10 +53,10 @@ field_info(const FIELD *field,
           int *nrow, int *nbuf)
 {
   T((T_CALLED("field_info(%p,%p,%p,%p,%p,%p,%p)"),
-     field,
-     rows, cols,
-     frow, fcol,
-     nrow, nbuf));
+     (const void *)field,
+     (void *)rows, (void *)cols,
+     (void *)frow, (void *)fcol,
+     (void *)nrow, (void *)nbuf));
 
   if (!field)
     RETURN(E_BAD_ARGUMENT);
@@ -91,7 +91,11 @@ field_info(const FIELD *field,
 NCURSES_EXPORT(int)
 dynamic_field_info(const FIELD *field, int *drows, int *dcols, int *maxgrow)
 {
-  T((T_CALLED("dynamic_field_info(%p,%p,%p,%p)"), field, drows, dcols, maxgrow));
+  T((T_CALLED("dynamic_field_info(%p,%p,%p,%p)"),
+     (const void *)field,
+     (void *)drows,
+     (void *)dcols,
+     (void *)maxgrow));
 
   if (!field)
     RETURN(E_BAD_ARGUMENT);
index e021fb1..58a1750 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_just.c,v 1.11 2004/12/11 22:55:48 tom Exp $")
+MODULE_ID("$Id: fld_just.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -49,7 +49,7 @@ set_field_just(FIELD *field, int just)
 {
   int res = E_BAD_ARGUMENT;
 
-  T((T_CALLED("set_field_just(%p,%d)"), field, just));
+  T((T_CALLED("set_field_just(%p,%d)"), (void *)field, just));
 
   if ((just == NO_JUSTIFICATION) ||
       (just == JUSTIFY_LEFT) ||
@@ -79,7 +79,7 @@ set_field_just(FIELD *field, int just)
 NCURSES_EXPORT(int)
 field_just(const FIELD *field)
 {
-  T((T_CALLED("field_just(%p)"), field));
+  T((T_CALLED("field_just(%p)"), (const void *)field));
   returnCode(Normalize_Field(field)->just);
 }
 
index 0aac7db..18103be 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2007,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_link.c,v 1.11 2007/10/13 19:30:43 tom Exp $")
+MODULE_ID("$Id: fld_link.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -54,12 +54,12 @@ link_field(FIELD *field, int frow, int fcol)
   FIELD *New_Field = (FIELD *)0;
   int err = E_BAD_ARGUMENT;
 
-  T((T_CALLED("link_field(%p,%d,%d)"), field, frow, fcol));
+  T((T_CALLED("link_field(%p,%d,%d)"), (void *)field, frow, fcol));
   if (field && (frow >= 0) && (fcol >= 0) &&
       ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */
       (New_Field = typeMalloc(FIELD, 1)))
     {
-      T((T_CREATE("field %p"), New_Field));
+      T((T_CREATE("field %p"), (void *)New_Field));
       *New_Field = *_nc_Default_Field;
       New_Field->frow = frow;
       New_Field->fcol = fcol;
index 7f5352e..5ce918e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_max.c,v 1.9 2004/12/11 21:51:54 tom Exp $")
+MODULE_ID("$Id: fld_max.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -47,7 +47,7 @@ MODULE_ID("$Id: fld_max.c,v 1.9 2004/12/11 21:51:54 tom Exp $")
 NCURSES_EXPORT(int)
 set_max_field(FIELD *field, int maxgrow)
 {
-  T((T_CALLED("set_max_field(%p,%d)"), field, maxgrow));
+  T((T_CALLED("set_max_field(%p,%d)"), (void *)field, maxgrow));
 
   if (!field || (maxgrow < 0))
     RETURN(E_BAD_ARGUMENT);
index d9ceaae..dfba22d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_move.c,v 1.9 2004/12/11 21:52:44 tom Exp $")
+MODULE_ID("$Id: fld_move.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -48,7 +48,7 @@ MODULE_ID("$Id: fld_move.c,v 1.9 2004/12/11 21:52:44 tom Exp $")
 NCURSES_EXPORT(int)
 move_field(FIELD *field, int frow, int fcol)
 {
-  T((T_CALLED("move_field(%p,%d,%d)"), field, frow, fcol));
+  T((T_CALLED("move_field(%p,%d,%d)"), (void *)field, frow, fcol));
 
   if (!field || (frow < 0) || (fcol < 0))
     RETURN(E_BAD_ARGUMENT);
index c2984b1..4351aed 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -32,9 +32,9 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_newftyp.c,v 1.15 2007/10/13 19:30:55 tom Exp $")
+MODULE_ID("$Id: fld_newftyp.c,v 1.19 2010/01/23 21:14:36 tom Exp $")
 
-static FIELDTYPE const default_fieldtype =
+static FIELDTYPE default_fieldtype =
 {
   0,                           /* status                                      */
   0L,                          /* reference count                             */
@@ -43,13 +43,16 @@ static FIELDTYPE const default_fieldtype =
   NULL,                                /* makearg function                            */
   NULL,                                /* copyarg function                            */
   NULL,                                /* freearg function                            */
-  NULL,                                /* field validation function                   */
-  NULL,                                /* Character check function                    */
-  NULL,                                /* enumerate next function                     */
-  NULL                         /* enumerate previous function                 */
+  INIT_FT_FUNC(NULL),          /* field validation function                   */
+  INIT_FT_FUNC(NULL),          /* Character check function                    */
+  INIT_FT_FUNC(NULL),          /* enumerate next function                     */
+  INIT_FT_FUNC(NULL),          /* enumerate previous function                 */
+#if NCURSES_INTEROP_FUNCS
+  NULL                         /* generic callback alternative to makearg     */
+#endif
 };
 
-NCURSES_EXPORT_VAR(const FIELDTYPE *)
+NCURSES_EXPORT_VAR(FIELDTYPE *)
 _nc_Default_FieldType = &default_fieldtype;
 
 /*---------------------------------------------------------------------------
@@ -80,10 +83,15 @@ new_fieldtype(bool (*const field_check) (FIELD *, const void *),
 
       if (nftyp)
        {
-         T((T_CREATE("fieldtype %p"), nftyp));
+         T((T_CREATE("fieldtype %p"), (void *)nftyp));
          *nftyp = default_fieldtype;
+#if NCURSES_INTEROP_FUNCS
+         nftyp->fieldcheck.ofcheck = field_check;
+         nftyp->charcheck.occheck = char_check;
+#else
          nftyp->fcheck = field_check;
          nftyp->ccheck = char_check;
+#endif
        }
       else
        {
@@ -110,7 +118,7 @@ new_fieldtype(bool (*const field_check) (FIELD *, const void *),
 NCURSES_EXPORT(int)
 free_fieldtype(FIELDTYPE *typ)
 {
-  T((T_CALLED("free_fieldtype(%p)"), typ));
+  T((T_CALLED("free_fieldtype(%p)"), (void *)typ));
 
   if (!typ)
     RETURN(E_BAD_ARGUMENT);
index 3c881ac..a52f1e2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_opts.c,v 1.11 2004/12/11 21:55:46 tom Exp $")
+MODULE_ID("$Id: fld_opts.c,v 1.12 2010/01/23 21:14:36 tom Exp $")
 
 /*----------------------------------------------------------------------------
   Field-Options manipulation routines
@@ -55,7 +55,7 @@ set_field_opts(FIELD *field, Field_Options opts)
 {
   int res = E_BAD_ARGUMENT;
 
-  T((T_CALLED("set_field_opts(%p,%d)"), field, opts));
+  T((T_CALLED("set_field_opts(%p,%d)"), (void *)field, opts));
 
   opts &= ALL_FIELD_OPTS;
   if (!(opts & ~ALL_FIELD_OPTS))
@@ -74,7 +74,7 @@ set_field_opts(FIELD *field, Field_Options opts)
 NCURSES_EXPORT(Field_Options)
 field_opts(const FIELD *field)
 {
-  T((T_CALLED("field_opts(%p)"), field));
+  T((T_CALLED("field_opts(%p)"), (const void *)field));
 
   returnCode(ALL_FIELD_OPTS & Normalize_Field(field)->opts);
 }
@@ -96,7 +96,7 @@ field_opts_on(FIELD *field, Field_Options opts)
 {
   int res = E_BAD_ARGUMENT;
 
-  T((T_CALLED("field_opts_on(%p,%d)"), field, opts));
+  T((T_CALLED("field_opts_on(%p,%d)"), (void *)field, opts));
 
   opts &= ALL_FIELD_OPTS;
   if (!(opts & ~ALL_FIELD_OPTS))
@@ -124,7 +124,7 @@ field_opts_off(FIELD *field, Field_Options opts)
 {
   int res = E_BAD_ARGUMENT;
 
-  T((T_CALLED("field_opts_off(%p,%d)"), field, opts));
+  T((T_CALLED("field_opts_off(%p,%d)"), (void *)field, opts));
 
   opts &= ALL_FIELD_OPTS;
   if (!(opts & ~ALL_FIELD_OPTS))
index 63d8ad1..4f8ff1f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_pad.c,v 1.9 2004/12/11 21:56:49 tom Exp $")
+MODULE_ID("$Id: fld_pad.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -50,7 +50,7 @@ set_field_pad(FIELD *field, int ch)
 {
   int res = E_BAD_ARGUMENT;
 
-  T((T_CALLED("set_field_pad(%p,%d)"), field, ch));
+  T((T_CALLED("set_field_pad(%p,%d)"), (void *)field, ch));
 
   Normalize_Field(field);
   if (isprint(UChar(ch)))
@@ -77,7 +77,7 @@ set_field_pad(FIELD *field, int ch)
 NCURSES_EXPORT(int)
 field_pad(const FIELD *field)
 {
-  T((T_CALLED("field_pad(%p)"), field));
+  T((T_CALLED("field_pad(%p)"), (const void *)field));
 
   returnCode(Normalize_Field(field)->pad);
 }
index e1af496..e4d18c5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_page.c,v 1.9 2004/12/11 21:58:19 tom Exp $")
+MODULE_ID("$Id: fld_page.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -47,7 +47,7 @@ MODULE_ID("$Id: fld_page.c,v 1.9 2004/12/11 21:58:19 tom Exp $")
 NCURSES_EXPORT(int)
 set_new_page(FIELD *field, bool new_page_flag)
 {
-  T((T_CALLED("set_new_page(%p,%d)"), field, new_page_flag));
+  T((T_CALLED("set_new_page(%p,%d)"), (void *)field, new_page_flag));
 
   Normalize_Field(field);
   if (field->form)
@@ -74,7 +74,7 @@ set_new_page(FIELD *field, bool new_page_flag)
 NCURSES_EXPORT(bool)
 new_page(const FIELD *field)
 {
-  T((T_CALLED("new_page(%p)"), field));
+  T((T_CALLED("new_page(%p)"), (const void *)field));
 
   returnBool((Normalize_Field(field)->status & _NEWPAGE) ? TRUE : FALSE);
 }
index b85b4d5..46f89e6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_stat.c,v 1.11 2004/12/11 22:28:00 tom Exp $")
+MODULE_ID("$Id: fld_stat.c,v 1.12 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,7 +46,7 @@ MODULE_ID("$Id: fld_stat.c,v 1.11 2004/12/11 22:28:00 tom Exp $")
 NCURSES_EXPORT(int)
 set_field_status(FIELD *field, bool status)
 {
-  T((T_CALLED("set_field_status(%p,%d)"), field, status));
+  T((T_CALLED("set_field_status(%p,%d)"), (void *)field, status));
 
   Normalize_Field(field);
 
@@ -71,7 +71,7 @@ set_field_status(FIELD *field, bool status)
 NCURSES_EXPORT(bool)
 field_status(const FIELD *field)
 {
-  T((T_CALLED("field_status(%p)"), field));
+  T((T_CALLED("field_status(%p)"), (const void *)field));
 
   returnBool((Normalize_Field(field)->status & _CHANGED) ? TRUE : FALSE);
 }
index c9a3fbe..0b35b7e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_type.c,v 1.15 2004/12/25 22:24:10 tom Exp $")
+MODULE_ID("$Id: fld_type.c,v 1.16 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -52,7 +52,7 @@ set_field_type(FIELD *field, FIELDTYPE *type,...)
   int res = E_SYSTEM_ERROR;
   int err = 0;
 
-  T((T_CALLED("set_field_type(%p,%p)"), field, type));
+  T((T_CALLED("set_field_type(%p,%p)"), (void *)field, (void *)type));
 
   va_start(ap, type);
 
@@ -90,7 +90,7 @@ set_field_type(FIELD *field, FIELDTYPE *type,...)
 NCURSES_EXPORT(FIELDTYPE *)
 field_type(const FIELD *field)
 {
-  T((T_CALLED("field_type(%p)"), field));
+  T((T_CALLED("field_type(%p)"), (const void *)field));
   returnFieldType(Normalize_Field(field)->type);
 }
 
index 323622c..30bcf7a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fld_user.c,v 1.15 2004/12/25 22:24:50 tom Exp $")
+MODULE_ID("$Id: fld_user.c,v 1.16 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,7 +46,7 @@ MODULE_ID("$Id: fld_user.c,v 1.15 2004/12/25 22:24:50 tom Exp $")
 NCURSES_EXPORT(int)
 set_field_userptr(FIELD *field, void *usrptr)
 {
-  T((T_CALLED("set_field_userptr(%p,%p)"), field, usrptr));
+  T((T_CALLED("set_field_userptr(%p,%p)"), (void *)field, (void *)usrptr));
 
   Normalize_Field(field)->usrptr = usrptr;
   RETURN(E_OK);
@@ -65,7 +65,7 @@ set_field_userptr(FIELD *field, void *usrptr)
 NCURSES_EXPORT(void *)
 field_userptr(const FIELD *field)
 {
-  T((T_CALLED("field_userptr(%p)"), field));
+  T((T_CALLED("field_userptr(%p)"), (const void *)field));
   returnVoidPtr(Normalize_Field(field)->usrptr);
 }
 
index a4691a8..f52893b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,2009 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            *
@@ -30,7 +30,7 @@
  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
-/* $Id: form.h,v 0.20 2004/12/04 22:22:10 tom Exp $ */
+/* $Id: form.h,v 0.21 2009/11/07 19:31:11 tom Exp $ */
 
 #ifndef FORM_H
 #define FORM_H
@@ -105,34 +105,13 @@ typedef struct fieldnode {
   NCURSES_FIELD_INTERNALS
 } FIELD;
 
-       /**************
-       *  FIELDTYPE  *
-       **************/
-
-typedef struct typenode {
-  unsigned short       status;                 /* flags                */
-  long                 ref;                    /* reference count      */
-  struct typenode *    left;                   /* ptr to operand for | */
-  struct typenode *    right;                  /* ptr to operand for | */
-
-  void* (*makearg)(va_list *);                 /* make fieldtype arg   */
-  void* (*copyarg)(const void *);              /* copy fieldtype arg   */
-  void (*freearg)(void *);                     /* free fieldtype arg   */
-
-  bool (*fcheck)(FIELD *,const void *);        /* field validation     */
-  bool (*ccheck)(int,const void *);            /* character validation */
-
-  bool (*next)(FIELD *,const void *);          /* enumerate next value */
-  bool (*prev)(FIELD *,const void *);          /* enumerate prev value */
-
-} FIELDTYPE;
 
        /*********
        *  FORM  *
        *********/
 
 typedef struct formnode {
-  unsigned short       status;         /* flags                        */
+  unsigned short       status;         /* flags                        */
   short                        rows;           /* size in rows                 */
   short                        cols;           /* size in cols                 */
   int                  currow;         /* current row in field window  */
@@ -158,6 +137,49 @@ typedef struct formnode {
 
 } FORM;
 
+
+       /**************
+       *  FIELDTYPE  *
+       **************/
+
+typedef struct typenode {
+  unsigned short       status;                 /* flags                    */
+  long                 ref;                    /* reference count          */
+  struct typenode *    left;                   /* ptr to operand for |     */
+  struct typenode *    right;                  /* ptr to operand for |     */
+
+  void* (*makearg)(va_list *);                 /* make fieldtype arg       */
+  void* (*copyarg)(const void *);              /* copy fieldtype arg       */
+  void (*freearg)(void *);                     /* free fieldtype arg       */
+
+#if NCURSES_INTEROP_FUNCS
+  union {
+    bool (*ofcheck)(FIELD *,const void *);     /* field validation         */
+    bool (*gfcheck)(FORM*,FIELD *,const void*);        /* generic field validation */
+  } fieldcheck;
+  union {
+    bool (*occheck)(int,const void *);         /* character validation     */
+    bool (*gccheck)(int,FORM*,
+                   FIELD*,const void*);        /* generic char validation  */
+  } charcheck;
+  union {
+    bool (*onext)(FIELD *,const void *);        /* enumerate next value     */
+    bool (*gnext)(FORM*,FIELD*,const void*);    /* generic enumerate next   */
+  } enum_next;
+  union {
+    bool (*oprev)(FIELD *,const void *);       /* enumerate prev value     */
+    bool (*gprev)(FORM*,FIELD*,const void*);    /* generic enumerate prev   */
+  } enum_prev;
+  void* (*genericarg)(void*);                   /* Alternate Arg method     */
+#else
+  bool (*fcheck)(FIELD *,const void *);        /* field validation     */
+  bool (*ccheck)(int,const void *);            /* character validation */
+
+  bool (*next)(FIELD *,const void *);          /* enumerate next value */
+  bool (*prev)(FIELD *,const void *);          /* enumerate prev value */
+#endif
+} FIELDTYPE;
+
 typedef void (*Form_Hook)(FORM *);
 
        /***************************
@@ -278,13 +300,6 @@ extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP;
        ************************************/
 extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4;      /* Internet IP Version 4 address */
 
-       /***********************
-       *   Default objects    *
-       ***********************/
-extern NCURSES_EXPORT_VAR(FORM *)      _nc_Default_Form;
-extern NCURSES_EXPORT_VAR(FIELD *)     _nc_Default_Field;
-
-
        /***********************
        *  FIELDTYPE routines  *
        ***********************/
@@ -396,6 +411,10 @@ extern NCURSES_EXPORT(Form_Options)        form_opts (const FORM *);
 extern NCURSES_EXPORT(bool)    data_ahead (const FORM *);
 extern NCURSES_EXPORT(bool)    data_behind (const FORM *);
 
+#if NCURSES_SP_FUNCS
+extern NCURSES_EXPORT(FORM *)  NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **);
+#endif
+
 #ifdef __cplusplus
   }
 #endif
index fea627d..49250b4 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2008,2009 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            *
@@ -30,7 +30,7 @@
  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
-/* $Id: form.priv.h,v 0.27 2008/09/08 20:29:05 tom Exp $ */
+/* $Id: form.priv.h,v 0.32 2009/11/07 21:26:43 tom Exp $ */
 
 #ifndef FORM_PRIV_H
 #define FORM_PRIV_H 1
 
 #include "form.h"
 
+       /***********************
+       *   Default objects    *
+       ***********************/
+extern NCURSES_EXPORT_VAR(FORM *)      _nc_Default_Form;
+extern NCURSES_EXPORT_VAR(FIELD *)     _nc_Default_Field;
+extern NCURSES_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType;
+
 /* form  status values */
 #define _OVLMODE         (0x04U) /* Form is in overlay mode                */
 #define _WINDOW_MODIFIED (0x10U) /* Current field window has been modified */
@@ -78,6 +85,7 @@
 #define _HAS_ARGS        (0x02U) /* Type has arguments                     */
 #define _HAS_CHOICE      (0x04U) /* Type has choice methods                */
 #define _RESIDENT        (0x08U) /* Type is built-in                       */
+#define _GENERIC         (0x10U) /* A generic field type                   */
 
 /* This are the field options required to be a selectable field in field
    navigation requests */
 #define Normalize_Field(field) \
   ((field) = (field != 0) ? (field) : _nc_Default_Field)
 
+#if NCURSES_SP_FUNCS
+#define Get_Form_Screen(form) \
+  ((form)->win ? _nc_screen_of((form->win)):CURRENT_SCREEN)
+#else
+#define Get_Form_Screen(form) CURRENT_SCREEN
+#endif
+
 /* Retrieve forms window */
 #define Get_Form_Window(form) \
-  ((form)->sub?(form)->sub:((form)->win?(form)->win:stdscr))
+  ((form)->sub \
+   ? (form)->sub \
+   : ((form)->win \
+      ? (form)->win \
+      : StdScreen(Get_Form_Screen(form))))
 
 /* Calculate the size for a single buffer for this field */
 #define Buffer_Length(field) ((field)->drows * (field)->dcols)
@@ -144,8 +163,6 @@ TypeArgument;
 
 #define C_ZEROS '\0'
 
-extern NCURSES_EXPORT_VAR(const FIELDTYPE *) _nc_Default_FieldType;
-
 extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*, va_list*, int*);
 extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*, const TypeArgument*, int*);
 extern NCURSES_EXPORT(void) _nc_Free_Argument (const FIELDTYPE*, TypeArgument*);
@@ -161,6 +178,36 @@ extern NCURSES_EXPORT(bool) _nc_Internal_Validation (FORM*);
 extern NCURSES_EXPORT(int) _nc_Set_Current_Field (FORM*, FIELD*);
 extern NCURSES_EXPORT(int) _nc_Position_Form_Cursor (FORM*);
 
+#if NCURSES_INTEROP_FUNCS
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ALNUM(void);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ALPHA(void);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ENUM(void);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_NUMERIC(void);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_REGEXP(void);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_IPV4(void);
+
+extern NCURSES_EXPORT(FIELDTYPE *)
+_nc_generic_fieldtype(bool (*const field_check) (FORM*, 
+                                                FIELD *, 
+                                                const void *),
+                     bool (*const char_check)  (int, 
+                                                FORM*, 
+                                                FIELD*, 
+                                                const void *),
+                     bool (*const next)(FORM*,FIELD*,const void*),
+                     bool (*const prev)(FORM*,FIELD*,const void*),
+                     void (*freecallback)(void*));
+extern NCURSES_EXPORT(int) _nc_set_generic_fieldtype(FIELD*, FIELDTYPE*, int (*)(void**));
+extern NCURSES_EXPORT(WINDOW*) _nc_form_cursor(const FORM* , int* , int* );
+
+#define INIT_FT_FUNC(func) {func}
+#else
+#define INIT_FT_FUNC(func) func
+#endif
+
+extern NCURSES_EXPORT(void) _nc_get_fieldbuffer(FORM*, FIELD*, FIELD_CELL*);
+
 #if USE_WIDEC_SUPPORT
 extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *);
 #endif
@@ -176,8 +223,8 @@ extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *);
 extern NCURSES_EXPORT(FIELD **)            _nc_retrace_field_ptr (FIELD **);
 extern NCURSES_EXPORT(FIELD *)     _nc_retrace_field (FIELD *);
 extern NCURSES_EXPORT(FIELDTYPE *)  _nc_retrace_field_type (FIELDTYPE *);
-extern NCURSES_EXPORT(FORM *)  _nc_retrace_form (FORM *);
-extern NCURSES_EXPORT(Form_Hook)  _nc_retrace_form_hook (Form_Hook);
+extern NCURSES_EXPORT(FORM *)       _nc_retrace_form (FORM *);
+extern NCURSES_EXPORT(Form_Hook)    _nc_retrace_form_hook (Form_Hook);
 
 #else /* !TRACE */
 
index 18dabab..7a4cd16 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_cursor.c,v 1.9 2004/12/11 22:01:03 tom Exp $")
+MODULE_ID("$Id: frm_cursor.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -53,7 +53,7 @@ pos_form_cursor(FORM *form)
 {
   int res;
 
-  T((T_CALLED("pos_form_cursor(%p)"), form));
+  T((T_CALLED("pos_form_cursor(%p)"), (void *)form));
 
   if (!form)
     res = E_BAD_ARGUMENT;
index 787a179..93917d5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2005,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_data.c,v 1.14 2005/11/26 15:34:01 tom Exp $")
+MODULE_ID("$Id: frm_data.c,v 1.15 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -49,7 +49,7 @@ data_behind(const FORM *form)
 {
   bool result = FALSE;
 
-  T((T_CALLED("data_behind(%p)"), form));
+  T((T_CALLED("data_behind(%p)"), (const void *)form));
 
   if (form && (form->status & _POSTED) && form->current)
     {
@@ -136,7 +136,7 @@ data_ahead(const FORM *form)
 {
   bool result = FALSE;
 
-  T((T_CALLED("data_ahead(%p)"), form));
+  T((T_CALLED("data_ahead(%p)"), (const void *)form));
 
   if (form && (form->status & _POSTED) && form->current)
     {
index e689751..86500f2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_def.c,v 1.23 2008/08/04 00:07:55 tom Exp $")
+MODULE_ID("$Id: frm_def.c,v 1.25 2010/01/23 21:14:36 tom Exp $")
 
 /* this can't be readonly */
 static FORM default_form =
@@ -160,7 +160,7 @@ Connect_Fields(FORM *form, FIELD **fields)
   int maximum_row_in_field, maximum_col_in_field;
   _PAGE *pg;
 
-  T((T_CALLED("Connect_Fields(%p,%p)"), form, fields));
+  T((T_CALLED("Connect_Fields(%p,%p)"), (void *)form, (void *)fields));
 
   assert(form);
 
@@ -188,7 +188,7 @@ Connect_Fields(FORM *form, FIELD **fields)
   /* allocate page structures */
   if ((pg = typeMalloc(_PAGE, page_nr)) != (_PAGE *) 0)
     {
-      T((T_CREATE("_PAGE %p"), pg));
+      T((T_CREATE("_PAGE %p"), (void *)pg));
       form->page = pg;
     }
   else
@@ -283,7 +283,7 @@ Associate_Fields(FORM *form, FIELD **fields)
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
-|   Function      :  FORM *new_form( FIELD **fields )
+|   Function      :  FORM *new_form_sp(SCREEN* sp, FIELD** fields )
 |   
 |   Description   :  Create new form with given array of fields.
 |
@@ -295,21 +295,31 @@ Associate_Fields(FORM *form, FIELD **fields)
 |                    E_SYSTEM_ERROR  - not enough memory
 +--------------------------------------------------------------------------*/
 NCURSES_EXPORT(FORM *)
-new_form(FIELD **fields)
+NCURSES_SP_NAME(new_form) (NCURSES_SP_DCLx FIELD **fields)
 {
   int err = E_SYSTEM_ERROR;
+  FORM *form = (FORM *)0;
 
-  FORM *form = typeMalloc(FORM, 1);
+  T((T_CALLED("new_form(%p,%p)"), (void *)SP_PARM, (void *)fields));
 
-  T((T_CALLED("new_form(%p)"), fields));
-  if (form)
+  if (IsValidScreen(SP_PARM))
     {
-      T((T_CREATE("form %p"), form));
-      *form = *_nc_Default_Form;
-      if ((err = Associate_Fields(form, fields)) != E_OK)
+      form = typeMalloc(FORM, 1);
+
+      if (form)
        {
-         free_form(form);
-         form = (FORM *)0;
+         T((T_CREATE("form %p"), (void *)form));
+         *form = *_nc_Default_Form;
+         /* This ensures win and sub are always non-null,
+            so we can derive always the SCREEN that this form is
+            running on. */
+         form->win = StdScreen(SP_PARM);
+         form->sub = StdScreen(SP_PARM);
+         if ((err = Associate_Fields(form, fields)) != E_OK)
+           {
+             free_form(form);
+             form = (FORM *)0;
+           }
        }
     }
 
@@ -319,6 +329,27 @@ new_form(FIELD **fields)
   returnForm(form);
 }
 
+/*---------------------------------------------------------------------------
+|   Facility      :  libnform  
+|   Function      :  FORM* new_form(FIELD** fields )
+|   
+|   Description   :  Create new form with given array of fields.
+|
+|   Return Values :  Pointer to form. NULL if error occurred.
+!                    Set errno:
+|                    E_OK            - success
+|                    E_BAD_ARGUMENT  - Invalid form pointer or field array
+|                    E_CONNECTED     - a field is already connected
+|                    E_SYSTEM_ERROR  - not enough memory
++--------------------------------------------------------------------------*/
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(FORM *)
+new_form(FIELD **fields)
+{
+  return NCURSES_SP_NAME(new_form) (CURRENT_SCREEN, fields);
+}
+#endif
+
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
 |   Function      :  int free_form( FORM *form )
@@ -332,7 +363,7 @@ new_form(FIELD **fields)
 NCURSES_EXPORT(int)
 free_form(FORM *form)
 {
-  T((T_CALLED("free_form(%p)"), form));
+  T((T_CALLED("free_form(%p)"), (void *)form));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
@@ -366,7 +397,7 @@ set_form_fields(FORM *form, FIELD **fields)
   FIELD **old;
   int res;
 
-  T((T_CALLED("set_form_fields(%p,%p)"), form, fields));
+  T((T_CALLED("set_form_fields(%p,%p)"), (void *)form, (void *)fields));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
@@ -394,7 +425,7 @@ set_form_fields(FORM *form, FIELD **fields)
 NCURSES_EXPORT(FIELD **)
 form_fields(const FORM *form)
 {
-  T((T_CALLED("form_field(%p)"), form));
+  T((T_CALLED("form_field(%p)"), (const void *)form));
   returnFieldPtr(Normalize_Form(form)->field);
 }
 
@@ -409,7 +440,7 @@ form_fields(const FORM *form)
 NCURSES_EXPORT(int)
 field_count(const FORM *form)
 {
-  T((T_CALLED("field_count(%p)"), form));
+  T((T_CALLED("field_count(%p)"), (const void *)form));
 
   returnCode(Normalize_Form(form)->maxfield);
 }
index 94323ed..e0892bf 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_driver.c,v 1.88 2008/10/18 16:25:00 tom Exp $")
+MODULE_ID("$Id: frm_driver.c,v 1.98 2010/05/01 21:11:43 tom Exp $")
 
 /*----------------------------------------------------------------------------
   This is the core module of the form library. It contains the majority
@@ -188,7 +188,7 @@ static int FE_Delete_Previous(FORM *);
 /* Macro to set the attributes for a fields window */
 #define Set_Field_Window_Attributes(field,win) \
 (  wbkgdset((win),(chtype)((field)->pad | (field)->back)), \
-   wattrset((win),(field)->fore) )
+   (void) wattrset((win),(field)->fore) )
 
 /* Logic to decide whether or not a field really appears on the form */
 #define Field_Really_Appears(field)         \
@@ -512,9 +512,10 @@ Buffer_To_Window(const FIELD *field, WINDOW *win)
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static void Window_To_Buffer(
+|   Function      :  void _nc_get_fieldbuffer(
 |                                          WINDOW * win,
-|                                          FIELD  * field)
+|                                          FIELD  * field,
+|                                          FIELD_CELL * buf)
 |
 |   Description   :  Copy the content of the window into the buffer.
 |                    The multiple lines of a window are simply
@@ -523,18 +524,22 @@ Buffer_To_Window(const FIELD *field, WINDOW *win)
 |
 |   Return Values :  -
 +--------------------------------------------------------------------------*/
-static void
-Window_To_Buffer(WINDOW *win, FIELD *field)
+NCURSES_EXPORT(void)
+_nc_get_fieldbuffer(FORM *form, FIELD *field, FIELD_CELL *buf)
 {
   int pad;
   int len = 0;
   FIELD_CELL *p;
   int row, height;
+  WINDOW *win;
 
-  assert(win && field && field->buf);
+  assert(form && field && buf);
+
+  win = form->w;
+  assert(win);
 
   pad = field->pad;
-  p = field->buf;
+  p = buf;
   height = getmaxy(win);
 
   for (row = 0; (row < height) && (row < field->drows); row++)
@@ -561,6 +566,25 @@ Window_To_Buffer(WINDOW *win, FIELD *field)
     }
 }
 
+/*---------------------------------------------------------------------------
+|   Facility      :  libnform
+|   Function      :  static void Window_To_Buffer(
+|                                          FORM   * form,
+|                                          FIELD  * field)
+|
+|   Description   :  Copy the content of the window into the buffer.
+|                    The multiple lines of a window are simply
+|                    concatenated into the buffer. Pad characters in
+|                    the window will be replaced by blanks in the buffer.
+|
+|   Return Values :  -
++--------------------------------------------------------------------------*/
+static void
+Window_To_Buffer(FORM *form, FIELD *field)
+{
+  _nc_get_fieldbuffer(form, field, field->buf);
+}
+
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
 |   Function      :  static void Synchronize_Buffer(FORM * form)
@@ -579,7 +603,7 @@ Synchronize_Buffer(FORM *form)
     {
       form->status &= ~_WINDOW_MODIFIED;
       form->status |= _FCHECK_REQUIRED;
-      Window_To_Buffer(form->w, form->current);
+      Window_To_Buffer(form, form->current);
       wmove(form->w, form->currow, form->curcol);
     }
 }
@@ -663,7 +687,7 @@ Field_Grown(FIELD *field, int amount)
 
          result = TRUE;        /* allow sharing of recovery on failure */
 
-         T((T_CREATE("fieldcell %p"), newbuf));
+         T((T_CREATE("fieldcell %p"), (void *)newbuf));
          field->buf = newbuf;
          for (i = 0; i <= field->nbuf; i++)
            {
@@ -752,7 +776,7 @@ Field_Grown(FIELD *field, int amount)
 static int
 Field_encloses(FIELD *field, int ry, int rx)
 {
-  T((T_CALLED("Field_encloses(%p)"), field));
+  T((T_CALLED("Field_encloses(%p)"), (void *)field));
   if (field != 0
       && field->frow <= ry
       && (field->frow + field->rows) > ry
@@ -825,7 +849,7 @@ _nc_Refresh_Current_Field(FORM *form)
   WINDOW *formwin;
   FIELD *field;
 
-  T((T_CALLED("_nc_Refresh_Current_Field(%p)"), form));
+  T((T_CALLED("_nc_Refresh_Current_Field(%p)"), (void *)form));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
@@ -1010,7 +1034,8 @@ Undo_Justification(FIELD *field, WINDOW *win)
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static bool Check_Char(
+|   Function      :  static bool Check_Char(FORM  *form,
+|                                           FIELD *field,
 |                                           FIELDTYPE * typ,
 |                                           int ch,
 |                                           TypeArgument *argp)
@@ -1022,7 +1047,11 @@ Undo_Justification(FIELD *field, WINDOW *win)
 |                    FALSE            - Character is invalid
 +--------------------------------------------------------------------------*/
 static bool
-Check_Char(FIELDTYPE *typ, int ch, TypeArgument *argp)
+Check_Char(FORM *form,
+          FIELD *field,
+          FIELDTYPE *typ,
+          int ch,
+          TypeArgument *argp)
 {
   if (typ)
     {
@@ -1030,13 +1059,23 @@ Check_Char(FIELDTYPE *typ, int ch, TypeArgument *argp)
        {
          assert(argp);
          return (
-                  Check_Char(typ->left, ch, argp->left) ||
-                  Check_Char(typ->right, ch, argp->right));
+                  Check_Char(form, field, typ->left, ch, argp->left) ||
+                  Check_Char(form, field, typ->right, ch, argp->right));
        }
       else
        {
+#if NCURSES_INTEROP_FUNCS
+         if (typ->charcheck.occheck)
+           {
+             if (typ->status & _GENERIC)
+               return typ->charcheck.gccheck(ch, form, field, (void *)argp);
+             else
+               return typ->charcheck.occheck(ch, (void *)argp);
+           }
+#else
          if (typ->ccheck)
            return typ->ccheck(ch, (void *)argp);
+#endif
        }
     }
   return (!iscntrl(UChar(ch)) ? TRUE : FALSE);
@@ -1073,9 +1112,13 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
   else
     {
       if (field->opts & O_VISIBLE)
-       Set_Field_Window_Attributes(field, win);
+       {
+         Set_Field_Window_Attributes(field, win);
+       }
       else
-       wattrset(win, WINDOW_ATTRS(fwin));
+       {
+         (void)wattrset(win, WINDOW_ATTRS(fwin));
+       }
       werase(win);
     }
 
@@ -1197,7 +1240,7 @@ _nc_Synchronize_Attributes(FIELD *field)
   int res = E_OK;
   WINDOW *formwin;
 
-  T((T_CALLED("_nc_Synchronize_Attributes(%p)"), field));
+  T((T_CALLED("_nc_Synchronize_Attributes(%p)"), (void *)field));
 
   if (!field)
     returnCode(E_BAD_ARGUMENT);
@@ -1264,7 +1307,7 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts)
   FORM *form;
   int res = E_OK;
 
-  T((T_CALLED("_nc_Synchronize_Options(%p,%#x)"), field, newopts));
+  T((T_CALLED("_nc_Synchronize_Options(%p,%#x)"), (void *)field, newopts));
 
   if (!field)
     returnCode(E_BAD_ARGUMENT);
@@ -1276,14 +1319,13 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts)
 
   if (form)
     {
-      if (form->current == field)
-       {
-         field->opts = oldopts;
-         returnCode(E_CURRENT);
-       }
-
       if (form->status & _POSTED)
        {
+         if (form->current == field)
+           {
+             field->opts = oldopts;
+             returnCode(E_CURRENT);
+           }
          if ((form->curpage == field->page))
            {
              if (changed_opts & O_VISIBLE)
@@ -1365,7 +1407,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
   FIELD *field;
   WINDOW *new_window;
 
-  T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), form, newfield));
+  T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), (void *)form, (void *)newfield));
 
   if (!form || !newfield || !form->current || (newfield->form != form))
     returnCode(E_BAD_ARGUMENT);
@@ -1399,7 +1441,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
                {
                  if (Justification_Allowed(field))
                    {
-                     Window_To_Buffer(form->w, field);
+                     Window_To_Buffer(form, field);
                      werase(form->w);
                      Perform_Justification(field, form->w);
                      wsyncup(form->w);
@@ -1472,7 +1514,7 @@ IFN_Next_Character(FORM *form)
   FIELD *field = form->current;
   int step = myWCWIDTH(form->w, form->currow, form->curcol);
 
-  T((T_CALLED("IFN_Next_Character(%p)"), form));
+  T((T_CALLED("IFN_Next_Character(%p)"), (void *)form));
   if ((form->curcol += step) == field->dcols)
     {
       if ((++(form->currow)) == field->drows)
@@ -1514,7 +1556,7 @@ IFN_Previous_Character(FORM *form)
   int amount = myWCWIDTH(form->w, form->currow, form->curcol - 1);
   int oldcol = form->curcol;
 
-  T((T_CALLED("IFN_Previous_Character(%p)"), form));
+  T((T_CALLED("IFN_Previous_Character(%p)"), (void *)form));
   if ((form->curcol -= amount) < 0)
     {
       if ((--(form->currow)) < 0)
@@ -1542,7 +1584,7 @@ IFN_Next_Line(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("IFN_Next_Line(%p)"), form));
+  T((T_CALLED("IFN_Next_Line(%p)"), (void *)form));
   if ((++(form->currow)) == field->drows)
     {
 #if GROW_IF_NAVIGATE
@@ -1568,7 +1610,7 @@ IFN_Next_Line(FORM *form)
 static int
 IFN_Previous_Line(FORM *form)
 {
-  T((T_CALLED("IFN_Previous_Line(%p)"), form));
+  T((T_CALLED("IFN_Previous_Line(%p)"), (void *)form));
   if ((--(form->currow)) < 0)
     {
       form->currow++;
@@ -1595,7 +1637,7 @@ IFN_Next_Word(FORM *form)
   FIELD_CELL *s;
   FIELD_CELL *t;
 
-  T((T_CALLED("IFN_Next_Word(%p)"), form));
+  T((T_CALLED("IFN_Next_Word(%p)"), (void *)form));
 
   /* We really need access to the data, so we have to synchronize */
   Synchronize_Buffer(form);
@@ -1638,7 +1680,7 @@ IFN_Previous_Word(FORM *form)
   FIELD_CELL *t;
   bool again = FALSE;
 
-  T((T_CALLED("IFN_Previous_Word(%p)"), form));
+  T((T_CALLED("IFN_Previous_Word(%p)"), (void *)form));
 
   /* We really need access to the data, so we have to synchronize */
   Synchronize_Buffer(form);
@@ -1688,7 +1730,7 @@ IFN_Beginning_Of_Field(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("IFN_Beginning_Of_Field(%p)"), form));
+  T((T_CALLED("IFN_Beginning_Of_Field(%p)"), (void *)form));
   Synchronize_Buffer(form);
   Adjust_Cursor_Position(form,
                         Get_Start_Of_Data(field->buf, Buffer_Length(field)));
@@ -1712,7 +1754,7 @@ IFN_End_Of_Field(FORM *form)
   FIELD *field = form->current;
   FIELD_CELL *pos;
 
-  T((T_CALLED("IFN_End_Of_Field(%p)"), form));
+  T((T_CALLED("IFN_End_Of_Field(%p)"), (void *)form));
   Synchronize_Buffer(form);
   pos = After_End_Of_Data(field->buf, Buffer_Length(field));
   if (pos == (field->buf + Buffer_Length(field)))
@@ -1735,7 +1777,7 @@ IFN_Beginning_Of_Line(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("IFN_Beginning_Of_Line(%p)"), form));
+  T((T_CALLED("IFN_Beginning_Of_Line(%p)"), (void *)form));
   Synchronize_Buffer(form);
   Adjust_Cursor_Position(form,
                         Get_Start_Of_Data(Address_Of_Current_Row_In_Buffer(form),
@@ -1761,7 +1803,7 @@ IFN_End_Of_Line(FORM *form)
   FIELD_CELL *pos;
   FIELD_CELL *bp;
 
-  T((T_CALLED("IFN_End_Of_Line(%p)"), form));
+  T((T_CALLED("IFN_End_Of_Line(%p)"), (void *)form));
   Synchronize_Buffer(form);
   bp = Address_Of_Current_Row_In_Buffer(form);
   pos = After_End_Of_Data(bp, field->dcols);
@@ -1787,7 +1829,7 @@ IFN_Left_Character(FORM *form)
   int amount = myWCWIDTH(form->w, form->currow, form->curcol - 1);
   int oldcol = form->curcol;
 
-  T((T_CALLED("IFN_Left_Character(%p)"), form));
+  T((T_CALLED("IFN_Left_Character(%p)"), (void *)form));
   if ((form->curcol -= amount) < 0)
     {
       form->curcol = oldcol;
@@ -1812,7 +1854,7 @@ IFN_Right_Character(FORM *form)
   int amount = myWCWIDTH(form->w, form->currow, form->curcol);
   int oldcol = form->curcol;
 
-  T((T_CALLED("IFN_Right_Character(%p)"), form));
+  T((T_CALLED("IFN_Right_Character(%p)"), (void *)form));
   if ((form->curcol += amount) >= form->current->dcols)
     {
 #if GROW_IF_NAVIGATE
@@ -1840,7 +1882,7 @@ IFN_Right_Character(FORM *form)
 static int
 IFN_Up_Character(FORM *form)
 {
-  T((T_CALLED("IFN_Up_Character(%p)"), form));
+  T((T_CALLED("IFN_Up_Character(%p)"), (void *)form));
   if ((--(form->currow)) < 0)
     {
       form->currow++;
@@ -1864,7 +1906,7 @@ IFN_Down_Character(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("IFN_Down_Character(%p)"), form));
+  T((T_CALLED("IFN_Down_Character(%p)"), (void *)form));
   if ((++(form->currow)) == field->drows)
     {
 #if GROW_IF_NAVIGATE
@@ -1973,7 +2015,7 @@ Vertical_Scrolling(int (*const fct) (FORM *), FORM *form)
 static int
 VSC_Scroll_Line_Forward(FORM *form)
 {
-  T((T_CALLED("VSC_Scroll_Line_Forward(%p)"), form));
+  T((T_CALLED("VSC_Scroll_Line_Forward(%p)"), (void *)form));
   returnCode(VSC_Generic(form, 1));
 }
 
@@ -1989,7 +2031,7 @@ VSC_Scroll_Line_Forward(FORM *form)
 static int
 VSC_Scroll_Line_Backward(FORM *form)
 {
-  T((T_CALLED("VSC_Scroll_Line_Backward(%p)"), form));
+  T((T_CALLED("VSC_Scroll_Line_Backward(%p)"), (void *)form));
   returnCode(VSC_Generic(form, -1));
 }
 
@@ -2005,7 +2047,7 @@ VSC_Scroll_Line_Backward(FORM *form)
 static int
 VSC_Scroll_Page_Forward(FORM *form)
 {
-  T((T_CALLED("VSC_Scroll_Page_Forward(%p)"), form));
+  T((T_CALLED("VSC_Scroll_Page_Forward(%p)"), (void *)form));
   returnCode(VSC_Generic(form, form->current->rows));
 }
 
@@ -2021,7 +2063,7 @@ VSC_Scroll_Page_Forward(FORM *form)
 static int
 VSC_Scroll_Half_Page_Forward(FORM *form)
 {
-  T((T_CALLED("VSC_Scroll_Half_Page_Forward(%p)"), form));
+  T((T_CALLED("VSC_Scroll_Half_Page_Forward(%p)"), (void *)form));
   returnCode(VSC_Generic(form, (form->current->rows + 1) / 2));
 }
 
@@ -2037,7 +2079,7 @@ VSC_Scroll_Half_Page_Forward(FORM *form)
 static int
 VSC_Scroll_Page_Backward(FORM *form)
 {
-  T((T_CALLED("VSC_Scroll_Page_Backward(%p)"), form));
+  T((T_CALLED("VSC_Scroll_Page_Backward(%p)"), (void *)form));
   returnCode(VSC_Generic(form, -(form->current->rows)));
 }
 
@@ -2053,7 +2095,7 @@ VSC_Scroll_Page_Backward(FORM *form)
 static int
 VSC_Scroll_Half_Page_Backward(FORM *form)
 {
-  T((T_CALLED("VSC_Scroll_Half_Page_Backward(%p)"), form));
+  T((T_CALLED("VSC_Scroll_Half_Page_Backward(%p)"), (void *)form));
   returnCode(VSC_Generic(form, -((form->current->rows + 1) / 2)));
 }
 /*----------------------------------------------------------------------------
@@ -2147,7 +2189,7 @@ Horizontal_Scrolling(int (*const fct) (FORM *), FORM *form)
 static int
 HSC_Scroll_Char_Forward(FORM *form)
 {
-  T((T_CALLED("HSC_Scroll_Char_Forward(%p)"), form));
+  T((T_CALLED("HSC_Scroll_Char_Forward(%p)"), (void *)form));
   returnCode(HSC_Generic(form, 1));
 }
 
@@ -2163,7 +2205,7 @@ HSC_Scroll_Char_Forward(FORM *form)
 static int
 HSC_Scroll_Char_Backward(FORM *form)
 {
-  T((T_CALLED("HSC_Scroll_Char_Backward(%p)"), form));
+  T((T_CALLED("HSC_Scroll_Char_Backward(%p)"), (void *)form));
   returnCode(HSC_Generic(form, -1));
 }
 
@@ -2179,7 +2221,7 @@ HSC_Scroll_Char_Backward(FORM *form)
 static int
 HSC_Horizontal_Line_Forward(FORM *form)
 {
-  T((T_CALLED("HSC_Horizontal_Line_Forward(%p)"), form));
+  T((T_CALLED("HSC_Horizontal_Line_Forward(%p)"), (void *)form));
   returnCode(HSC_Generic(form, form->current->cols));
 }
 
@@ -2195,7 +2237,7 @@ HSC_Horizontal_Line_Forward(FORM *form)
 static int
 HSC_Horizontal_Half_Line_Forward(FORM *form)
 {
-  T((T_CALLED("HSC_Horizontal_Half_Line_Forward(%p)"), form));
+  T((T_CALLED("HSC_Horizontal_Half_Line_Forward(%p)"), (void *)form));
   returnCode(HSC_Generic(form, (form->current->cols + 1) / 2));
 }
 
@@ -2211,7 +2253,7 @@ HSC_Horizontal_Half_Line_Forward(FORM *form)
 static int
 HSC_Horizontal_Line_Backward(FORM *form)
 {
-  T((T_CALLED("HSC_Horizontal_Line_Backward(%p)"), form));
+  T((T_CALLED("HSC_Horizontal_Line_Backward(%p)"), (void *)form));
   returnCode(HSC_Generic(form, -(form->current->cols)));
 }
 
@@ -2227,7 +2269,7 @@ HSC_Horizontal_Line_Backward(FORM *form)
 static int
 HSC_Horizontal_Half_Line_Backward(FORM *form)
 {
-  T((T_CALLED("HSC_Horizontal_Half_Line_Backward(%p)"), form));
+  T((T_CALLED("HSC_Horizontal_Half_Line_Backward(%p)"), (void *)form));
   returnCode(HSC_Generic(form, -((form->current->cols + 1) / 2)));
 }
 
@@ -2406,7 +2448,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form)
            return E_SYSTEM_ERROR;
        }
       bp = Address_Of_Current_Row_In_Buffer(form);
-      Window_To_Buffer(form->w, field);
+      Window_To_Buffer(form, field);
       split = After_Last_Whitespace_Character(bp, field->dcols);
       /* split points to the first character of the sequence to be brought
          on the next line */
@@ -2432,7 +2474,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form)
       if (result != E_OK)
        {
          DeleteChar(form);
-         Window_To_Buffer(form->w, field);
+         Window_To_Buffer(form, field);
          result = E_REQUEST_DENIED;
        }
     }
@@ -2523,7 +2565,7 @@ FE_New_Line(FORM *form)
   FIELD_CELL *bp, *t;
   bool Last_Row = ((field->drows - 1) == form->currow);
 
-  T((T_CALLED("FE_New_Line(%p)"), form));
+  T((T_CALLED("FE_New_Line(%p)"), (void *)form));
   if (form->status & _OVLMODE)
     {
       if (Last_Row &&
@@ -2606,8 +2648,9 @@ FE_Insert_Character(FORM *form)
   FIELD *field = form->current;
   int result = E_REQUEST_DENIED;
 
-  T((T_CALLED("FE_Insert_Character(%p)"), form));
-  if (Check_Char(field->type, (int)C_BLANK, (TypeArgument *)(field->arg)))
+  T((T_CALLED("FE_Insert_Character(%p)"), (void *)form));
+  if (Check_Char(form, field, field->type, (int)C_BLANK,
+                (TypeArgument *)(field->arg)))
     {
       bool There_Is_Room = Is_There_Room_For_A_Char_In_Line(form);
 
@@ -2641,8 +2684,9 @@ FE_Insert_Line(FORM *form)
   FIELD *field = form->current;
   int result = E_REQUEST_DENIED;
 
-  T((T_CALLED("FE_Insert_Line(%p)"), form));
-  if (Check_Char(field->type, (int)C_BLANK, (TypeArgument *)(field->arg)))
+  T((T_CALLED("FE_Insert_Line(%p)"), (void *)form));
+  if (Check_Char(form, field,
+                field->type, (int)C_BLANK, (TypeArgument *)(field->arg)))
     {
       bool Maybe_Done = (form->currow != (field->drows - 1)) &&
       Is_There_Room_For_A_Line(form);
@@ -2674,7 +2718,7 @@ FE_Insert_Line(FORM *form)
 static int
 FE_Delete_Character(FORM *form)
 {
-  T((T_CALLED("FE_Delete_Character(%p)"), form));
+  T((T_CALLED("FE_Delete_Character(%p)"), (void *)form));
   DeleteChar(form);
   returnCode(E_OK);
 }
@@ -2697,7 +2741,7 @@ FE_Delete_Previous(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("FE_Delete_Previous(%p)"), form));
+  T((T_CALLED("FE_Delete_Previous(%p)"), (void *)form));
   if (First_Position_In_Current_Field(form))
     returnCode(E_REQUEST_DENIED);
 
@@ -2765,7 +2809,7 @@ FE_Delete_Previous(FORM *form)
 static int
 FE_Delete_Line(FORM *form)
 {
-  T((T_CALLED("FE_Delete_Line(%p)"), form));
+  T((T_CALLED("FE_Delete_Line(%p)"), (void *)form));
   form->curcol = 0;
   wdeleteln(form->w);
   returnCode(E_OK);
@@ -2789,7 +2833,7 @@ FE_Delete_Word(FORM *form)
   FIELD_CELL *cp = bp + form->curcol;
   FIELD_CELL *s;
 
-  T((T_CALLED("FE_Delete_Word(%p)"), form));
+  T((T_CALLED("FE_Delete_Word(%p)"), (void *)form));
   Synchronize_Buffer(form);
   if (ISBLANK(*cp))
     returnCode(E_REQUEST_DENIED);      /* not in word */
@@ -2823,7 +2867,7 @@ FE_Delete_Word(FORM *form)
 static int
 FE_Clear_To_End_Of_Line(FORM *form)
 {
-  T((T_CALLED("FE_Clear_To_End_Of_Line(%p)"), form));
+  T((T_CALLED("FE_Clear_To_End_Of_Line(%p)"), (void *)form));
   wmove(form->w, form->currow, form->curcol);
   wclrtoeol(form->w);
   returnCode(E_OK);
@@ -2840,7 +2884,7 @@ FE_Clear_To_End_Of_Line(FORM *form)
 static int
 FE_Clear_To_End_Of_Field(FORM *form)
 {
-  T((T_CALLED("FE_Clear_To_End_Of_Field(%p)"), form));
+  T((T_CALLED("FE_Clear_To_End_Of_Field(%p)"), (void *)form));
   wmove(form->w, form->currow, form->curcol);
   wclrtobot(form->w);
   returnCode(E_OK);
@@ -2857,7 +2901,7 @@ FE_Clear_To_End_Of_Field(FORM *form)
 static int
 FE_Clear_Field(FORM *form)
 {
-  T((T_CALLED("FE_Clear_Field(%p)"), form));
+  T((T_CALLED("FE_Clear_Field(%p)"), (void *)form));
   form->currow = form->curcol = 0;
   werase(form->w);
   returnCode(E_OK);
@@ -2881,7 +2925,7 @@ FE_Clear_Field(FORM *form)
 static int
 EM_Overlay_Mode(FORM *form)
 {
-  T((T_CALLED("EM_Overlay_Mode(%p)"), form));
+  T((T_CALLED("EM_Overlay_Mode(%p)"), (void *)form));
   form->status |= _OVLMODE;
   returnCode(E_OK);
 }
@@ -2897,7 +2941,7 @@ EM_Overlay_Mode(FORM *form)
 static int
 EM_Insert_Mode(FORM *form)
 {
-  T((T_CALLED("EM_Insert_Mode(%p)"), form));
+  T((T_CALLED("EM_Insert_Mode(%p)"), (void *)form));
   form->status &= ~_OVLMODE;
   returnCode(E_OK);
 }
@@ -2912,7 +2956,7 @@ EM_Insert_Mode(FORM *form)
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static bool Next_Choice(
+|   Function      :  static bool Next_Choice(FORM * form,
 |                                            FIELDTYPE * typ,
 |                                            FIELD * field,
 |                                            TypeArgument *argp)
@@ -2924,7 +2968,7 @@ EM_Insert_Mode(FORM *form)
 |                    FALSE   - couldn't retrieve next choice
 +--------------------------------------------------------------------------*/
 static bool
-Next_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
+Next_Choice(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
 {
   if (!typ || !(typ->status & _HAS_CHOICE))
     return FALSE;
@@ -2933,19 +2977,27 @@ Next_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
     {
       assert(argp);
       return (
-              Next_Choice(typ->left, field, argp->left) ||
-              Next_Choice(typ->right, field, argp->right));
+              Next_Choice(form, typ->left, field, argp->left) ||
+              Next_Choice(form, typ->right, field, argp->right));
     }
   else
     {
+#if NCURSES_INTEROP_FUNCS
+      assert(typ->enum_next.onext);
+      if (typ->status & _GENERIC)
+       return typ->enum_next.gnext(form, field, (void *)argp);
+      else
+       return typ->enum_next.onext(field, (void *)argp);
+#else
       assert(typ->next);
       return typ->next(field, (void *)argp);
+#endif
     }
 }
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static bool Previous_Choice(
+|   Function      :  static bool Previous_Choice(FORM * form,
 |                                                FIELDTYPE * typ,
 |                                                FIELD * field,
 |                                                TypeArgument *argp)
@@ -2957,7 +3009,7 @@ Next_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
 |                    FALSE   - couldn't retrieve previous choice
 +--------------------------------------------------------------------------*/
 static bool
-Previous_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
+Previous_Choice(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
 {
   if (!typ || !(typ->status & _HAS_CHOICE))
     return FALSE;
@@ -2966,13 +3018,21 @@ Previous_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
     {
       assert(argp);
       return (
-              Previous_Choice(typ->left, field, argp->left) ||
-              Previous_Choice(typ->right, field, argp->right));
+              Previous_Choice(form, typ->left, field, argp->left) ||
+              Previous_Choice(form, typ->right, field, argp->right));
     }
   else
     {
+#if NCURSES_INTEROP_FUNCS
+      assert(typ->enum_prev.oprev);
+      if (typ->status & _GENERIC)
+       return typ->enum_prev.gprev(form, field, (void *)argp);
+      else
+       return typ->enum_prev.oprev(field, (void *)argp);
+#else
       assert(typ->prev);
       return typ->prev(field, (void *)argp);
+#endif
     }
 }
 /*----------------------------------------------------------------------------
@@ -2997,9 +3057,9 @@ CR_Next_Choice(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("CR_Next_Choice(%p)"), form));
+  T((T_CALLED("CR_Next_Choice(%p)"), (void *)form));
   Synchronize_Buffer(form);
-  returnCode((Next_Choice(field->type, field, (TypeArgument *)(field->arg)))
+  returnCode((Next_Choice(form, field->type, field, (TypeArgument *)(field->arg)))
             ? E_OK
             : E_REQUEST_DENIED);
 }
@@ -3018,9 +3078,9 @@ CR_Previous_Choice(FORM *form)
 {
   FIELD *field = form->current;
 
-  T((T_CALLED("CR_Previous_Choice(%p)"), form));
+  T((T_CALLED("CR_Previous_Choice(%p)"), (void *)form));
   Synchronize_Buffer(form);
-  returnCode((Previous_Choice(field->type, field, (TypeArgument *)(field->arg)))
+  returnCode((Previous_Choice(form, field->type, field, (TypeArgument *)(field->arg)))
             ? E_OK
             : E_REQUEST_DENIED);
 }
@@ -3034,7 +3094,7 @@ CR_Previous_Choice(FORM *form)
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static bool Check_Field(
+|   Function      :  static bool Check_Field(FORM* form,
 |                                            FIELDTYPE * typ,
 |                                            FIELD * field,
 |                                            TypeArgument * argp)
@@ -3047,7 +3107,7 @@ CR_Previous_Choice(FORM *form)
 |                    FALSE      - field is invalid.
 +--------------------------------------------------------------------------*/
 static bool
-Check_Field(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
+Check_Field(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
 {
   if (typ)
     {
@@ -3068,13 +3128,23 @@ Check_Field(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
        {
          assert(argp);
          return (
-                  Check_Field(typ->left, field, argp->left) ||
-                  Check_Field(typ->right, field, argp->right));
+                  Check_Field(form, typ->left, field, argp->left) ||
+                  Check_Field(form, typ->right, field, argp->right));
        }
       else
        {
+#if NCURSES_INTEROP_FUNCS
+         if (typ->fieldcheck.ofcheck)
+           {
+             if (typ->status & _GENERIC)
+               return typ->fieldcheck.gfcheck(form, field, (void *)argp);
+             else
+               return typ->fieldcheck.ofcheck(field, (void *)argp);
+           }
+#else
          if (typ->fcheck)
            return typ->fcheck(field, (void *)argp);
+#endif
        }
     }
   return TRUE;
@@ -3100,7 +3170,7 @@ _nc_Internal_Validation(FORM *form)
   if ((form->status & _FCHECK_REQUIRED) ||
       (!(field->opts & O_PASSOK)))
     {
-      if (!Check_Field(field->type, field, (TypeArgument *)(field->arg)))
+      if (!Check_Field(form, field->type, field, (TypeArgument *)(field->arg)))
        return FALSE;
       form->status &= ~_FCHECK_REQUIRED;
       field->status |= _CHANGED;
@@ -3128,7 +3198,7 @@ _nc_Internal_Validation(FORM *form)
 static int
 FV_Validation(FORM *form)
 {
-  T((T_CALLED("FV_Validation(%p)"), form));
+  T((T_CALLED("FV_Validation(%p)"), (void *)form));
   if (_nc_Internal_Validation(form))
     returnCode(E_OK);
   else
@@ -3506,7 +3576,7 @@ Inter_Field_Navigation(int (*const fct) (FORM *), FORM *form)
 static int
 FN_Next_Field(FORM *form)
 {
-  T((T_CALLED("FN_Next_Field(%p)"), form));
+  T((T_CALLED("FN_Next_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Next_Field_On_Page(form->current)));
 }
@@ -3524,7 +3594,7 @@ FN_Next_Field(FORM *form)
 static int
 FN_Previous_Field(FORM *form)
 {
-  T((T_CALLED("FN_Previous_Field(%p)"), form));
+  T((T_CALLED("FN_Previous_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Previous_Field_On_Page(form->current)));
 }
@@ -3541,7 +3611,7 @@ FN_Previous_Field(FORM *form)
 static int
 FN_First_Field(FORM *form)
 {
-  T((T_CALLED("FN_First_Field(%p)"), form));
+  T((T_CALLED("FN_First_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Next_Field_On_Page(form->field[form->page[form->curpage].pmax])));
 }
@@ -3558,7 +3628,7 @@ FN_First_Field(FORM *form)
 static int
 FN_Last_Field(FORM *form)
 {
-  T((T_CALLED("FN_Last_Field(%p)"), form));
+  T((T_CALLED("FN_Last_Field(%p)"), (void *)form));
   returnCode(
              _nc_Set_Current_Field(form,
                                    Previous_Field_On_Page(form->field[form->page[form->curpage].pmin])));
@@ -3577,7 +3647,7 @@ FN_Last_Field(FORM *form)
 static int
 FN_Sorted_Next_Field(FORM *form)
 {
-  T((T_CALLED("FN_Sorted_Next_Field(%p)"), form));
+  T((T_CALLED("FN_Sorted_Next_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Sorted_Next_Field(form->current)));
 }
@@ -3595,7 +3665,7 @@ FN_Sorted_Next_Field(FORM *form)
 static int
 FN_Sorted_Previous_Field(FORM *form)
 {
-  T((T_CALLED("FN_Sorted_Previous_Field(%p)"), form));
+  T((T_CALLED("FN_Sorted_Previous_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Sorted_Previous_Field(form->current)));
 }
@@ -3613,7 +3683,7 @@ FN_Sorted_Previous_Field(FORM *form)
 static int
 FN_Sorted_First_Field(FORM *form)
 {
-  T((T_CALLED("FN_Sorted_First_Field(%p)"), form));
+  T((T_CALLED("FN_Sorted_First_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Sorted_Next_Field(form->field[form->page[form->curpage].smax])));
 }
@@ -3631,7 +3701,7 @@ FN_Sorted_First_Field(FORM *form)
 static int
 FN_Sorted_Last_Field(FORM *form)
 {
-  T((T_CALLED("FN_Sorted_Last_Field(%p)"), form));
+  T((T_CALLED("FN_Sorted_Last_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Sorted_Previous_Field(form->field[form->page[form->curpage].smin])));
 }
@@ -3649,7 +3719,7 @@ FN_Sorted_Last_Field(FORM *form)
 static int
 FN_Left_Field(FORM *form)
 {
-  T((T_CALLED("FN_Left_Field(%p)"), form));
+  T((T_CALLED("FN_Left_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Left_Neighbor_Field(form->current)));
 }
@@ -3667,7 +3737,7 @@ FN_Left_Field(FORM *form)
 static int
 FN_Right_Field(FORM *form)
 {
-  T((T_CALLED("FN_Right_Field(%p)"), form));
+  T((T_CALLED("FN_Right_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Right_Neighbor_Field(form->current)));
 }
@@ -3687,7 +3757,7 @@ FN_Right_Field(FORM *form)
 static int
 FN_Up_Field(FORM *form)
 {
-  T((T_CALLED("FN_Up_Field(%p)"), form));
+  T((T_CALLED("FN_Up_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Upper_Neighbor_Field(form->current)));
 }
@@ -3707,7 +3777,7 @@ FN_Up_Field(FORM *form)
 static int
 FN_Down_Field(FORM *form)
 {
-  T((T_CALLED("FN_Down_Field(%p)"), form));
+  T((T_CALLED("FN_Down_Field(%p)"), (void *)form));
   returnCode(_nc_Set_Current_Field(form,
                                   Down_Neighbor_Field(form->current)));
 }
@@ -3851,7 +3921,7 @@ Page_Navigation(int (*const fct) (FORM *), FORM *form)
 static int
 PN_Next_Page(FORM *form)
 {
-  T((T_CALLED("PN_Next_Page(%p)"), form));
+  T((T_CALLED("PN_Next_Page(%p)"), (void *)form));
   returnCode(_nc_Set_Form_Page(form, Next_Page_Number(form), (FIELD *)0));
 }
 
@@ -3867,7 +3937,7 @@ PN_Next_Page(FORM *form)
 static int
 PN_Previous_Page(FORM *form)
 {
-  T((T_CALLED("PN_Previous_Page(%p)"), form));
+  T((T_CALLED("PN_Previous_Page(%p)"), (void *)form));
   returnCode(_nc_Set_Form_Page(form, Previous_Page_Number(form), (FIELD *)0));
 }
 
@@ -3883,7 +3953,7 @@ PN_Previous_Page(FORM *form)
 static int
 PN_First_Page(FORM *form)
 {
-  T((T_CALLED("PN_First_Page(%p)"), form));
+  T((T_CALLED("PN_First_Page(%p)"), (void *)form));
   returnCode(_nc_Set_Form_Page(form, 0, (FIELD *)0));
 }
 
@@ -3899,7 +3969,7 @@ PN_First_Page(FORM *form)
 static int
 PN_Last_Page(FORM *form)
 {
-  T((T_CALLED("PN_Last_Page(%p)"), form));
+  T((T_CALLED("PN_Last_Page(%p)"), (void *)form));
   returnCode(_nc_Set_Form_Page(form, form->maxpage - 1, (FIELD *)0));
 }
 
@@ -3928,7 +3998,7 @@ Data_Entry(FORM *form, int c)
   FIELD *field = form->current;
   int result = E_REQUEST_DENIED;
 
-  T((T_CALLED("Data_Entry(%p,%s)"), form, _tracechtype((chtype)c)));
+  T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
   if ((field->opts & O_EDIT)
 #if FIX_FORM_INACTIVE_BUG
       && (field->opts & O_ACTIVE)
@@ -4129,7 +4199,7 @@ form_driver(FORM *form, int c)
   const Binding_Info *BI = (Binding_Info *) 0;
   int res = E_UNKNOWN_COMMAND;
 
-  T((T_CALLED("form_driver(%p,%d)"), form, c));
+  T((T_CALLED("form_driver(%p,%d)"), (void *)form, c));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
@@ -4194,7 +4264,7 @@ form_driver(FORM *form, int c)
   else if (KEY_MOUSE == c)
     {
       MEVENT event;
-      WINDOW *win = form->win ? form->win : stdscr;
+      WINDOW *win = form->win ? form->win : StdScreen(Get_Form_Screen(form));
       WINDOW *sub = form->sub ? form->sub : win;
 
       getmouse(&event);
@@ -4281,7 +4351,7 @@ form_driver(FORM *form, int c)
       if (!iscntrl(UChar(c)))
 #else
       if (isprint(UChar(c)) &&
-         Check_Char(form->current->type, c,
+         Check_Char(form, form->current, form->current->type, c,
                     (TypeArgument *)(form->current->arg)))
 #endif
        res = Data_Entry(form, c);
@@ -4326,7 +4396,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
   FIELD_CELL *widevalue = 0;
 #endif
 
-  T((T_CALLED("set_field_buffer(%p,%d,%s)"), field, buffer, _nc_visbuf(value)));
+  T((T_CALLED("set_field_buffer(%p,%d,%s)"), (void *)field, buffer, _nc_visbuf(value)));
 
   if (!field || !value || ((buffer < 0) || (buffer > field->nbuf)))
     RETURN(E_BAD_ARGUMENT);
@@ -4347,7 +4417,9 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
                                                     * field->cols))))
            RETURN(E_SYSTEM_ERROR);
 
+#if !USE_WIDEC_SUPPORT
          len = vlen;
+#endif
        }
     }
 
@@ -4360,14 +4432,15 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
    * and other special cases that we really do not want to handle here.
    */
 #if NCURSES_EXT_FUNCS
-  if (wresize(field->working, field->drows, field->dcols) == ERR)
+  if (wresize(field->working, 1, Buffer_Length(field) + 1) == ERR)
 #endif
     {
       delwin(field->working);
-      field->working = newpad(field->drows, field->dcols);
+      field->working = newpad(1, Buffer_Length(field) + 1);
     }
+  len = Buffer_Length(field);
   wclear(field->working);
-  mvwaddstr(field->working, 0, 0, value);
+  (void)mvwaddstr(field->working, 0, 0, value);
 
   if ((widevalue = typeCalloc(FIELD_CELL, len + 1)) == 0)
     {
@@ -4377,9 +4450,9 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
     {
       for (i = 0; i < (unsigned)field->drows; ++i)
        {
-         mvwin_wchnstr(field->working, i, 0,
-                       widevalue + (i * field->dcols),
-                       field->dcols);
+         (void)mvwin_wchnstr(field->working, 0, i * field->dcols,
+                             widevalue + (i * field->dcols),
+                             field->dcols);
        }
       for (i = 0; i < len; ++i)
        {
@@ -4433,7 +4506,7 @@ field_buffer(const FIELD *field, int buffer)
 {
   char *result = 0;
 
-  T((T_CALLED("field_buffer(%p,%d)"), field, buffer));
+  T((T_CALLED("field_buffer(%p,%d)"), (const void *)field, buffer));
 
   if (field && (buffer >= 0) && (buffer <= field->nbuf))
     {
@@ -4446,7 +4519,7 @@ field_buffer(const FIELD *field, int buffer)
       /* determine the number of bytes needed to store the expanded string */
       for (n = 0; n < size; ++n)
        {
-         if (!isWidecExt(data[n]))
+         if (!isWidecExt(data[n]) && data[n].chars[0] != L'\0')
            {
              mbstate_t state;
              size_t next;
@@ -4463,12 +4536,25 @@ field_buffer(const FIELD *field, int buffer)
        free(field->expanded[buffer]);
       field->expanded[buffer] = typeMalloc(char, need + 1);
 
-      /* expand the multibyte data */
+      /*
+       * Expand the multibyte data.
+       *
+       * It may also be multi-column data.  In that case, the data for a row
+       * may be null-padded to align to the dcols/drows layout (or it may
+       * contain embedded wide-character extensions).  Change the null-padding
+       * to blanks as needed.
+       */
       if ((result = field->expanded[buffer]) != 0)
        {
          wclear(field->working);
-         mvwadd_wchnstr(field->working, 0, 0, data, size);
-         mvwinnstr(field->working, 0, 0, result, (int)need);
+         wmove(field->working, 0, 0);
+         for (n = 0; n < size; ++n)
+           {
+             if (!isWidecExt(data[n]) && data[n].chars[0] != L'\0')
+               wadd_wch(field->working, &data[n]);
+           }
+         wmove(field->working, 0, 0);
+         winnstr(field->working, result, (int)need);
        }
 #else
       result = Address_Of_Nth_Buffer(field, buffer);
@@ -4479,22 +4565,6 @@ field_buffer(const FIELD *field, int buffer)
 
 #if USE_WIDEC_SUPPORT
 
-/* FIXME: see lib_get_wch.c */
-#if HAVE_MBTOWC && HAVE_MBLEN
-#define reset_mbytes(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0)
-#define count_mbytes(buffer,length,state) mblen(buffer,length)
-#define trans_mbytes(wch,buffer,length,state) \
-       (int) mbtowc(&wch, buffer, length)
-#elif HAVE_MBRTOWC && HAVE_MBRLEN
-#define NEED_STATE
-#define reset_mbytes(state) init_mb(state)
-#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state)
-#define trans_mbytes(wch,buffer,length,state) \
-       (int) mbrtowc(&wch, buffer, length, &state)
-#else
-make an error
-#endif
-
 /*---------------------------------------------------------------------------
 | Convert a multibyte string to a wide-character string.  The result must be
 | freed by the caller.
@@ -4509,7 +4579,7 @@ _nc_Widen_String(char *source, int *lengthp)
   int pass;
   int status;
 
-#ifdef NEED_STATE
+#ifndef state_unused
   mbstate_t state;
 #endif
 
@@ -4528,8 +4598,8 @@ _nc_Widen_String(char *source, int *lengthp)
 
              source[passed + tries] = 0;
              reset_mbytes(state);
-             status = trans_mbytes(wch, source + passed, tries, state);
-             source[passed + tries] = save;
+             status = check_mbytes(wch, source + passed, tries, state);
+             source[passed + tries] = (char)save;
 
              if (status > 0)
                {
index 18e6d71..7daa396 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_hook.c,v 1.14 2004/12/25 22:37:27 tom Exp $")
+MODULE_ID("$Id: frm_hook.c,v 1.15 2010/01/23 21:12:08 tom Exp $")
 
 /* "Template" macro to generate function to set application specific hook */
 #define GEN_HOOK_SET_FUNCTION( typ, name ) \
@@ -47,7 +47,7 @@ NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook f
 #define GEN_HOOK_GET_FUNCTION( typ, name ) \
 NCURSES_IMPEXP Form_Hook NCURSES_API typ ## _ ## name ( const FORM *form )\
 {\
-   T((T_CALLED(#typ "_" #name "(%p)"), form));\
+   T((T_CALLED(#typ "_" #name "(%p)"), (const void *) form));\
    returnFormHook( Normalize_Form( form ) -> typ ## name );\
 }
 
index d36d618..3557fcd 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2005,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_opts.c,v 1.14 2005/04/16 16:59:18 tom Exp $")
+MODULE_ID("$Id: frm_opts.c,v 1.15 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -47,7 +47,7 @@ MODULE_ID("$Id: frm_opts.c,v 1.14 2005/04/16 16:59:18 tom Exp $")
 NCURSES_EXPORT(int)
 set_form_opts(FORM *form, Form_Options opts)
 {
-  T((T_CALLED("set_form_opts(%p,%d)"), form, opts));
+  T((T_CALLED("set_form_opts(%p,%d)"), (void *)form, opts));
 
   opts &= ALL_FORM_OPTS;
   if (opts & ~ALL_FORM_OPTS)
@@ -70,7 +70,7 @@ set_form_opts(FORM *form, Form_Options opts)
 NCURSES_EXPORT(Form_Options)
 form_opts(const FORM *form)
 {
-  T((T_CALLED("form_opts(%p)"), form));
+  T((T_CALLED("form_opts(%p)"), (const void *)form));
   returnCode((int)(Normalize_Form(form)->opts & ALL_FORM_OPTS));
 }
 
@@ -87,7 +87,7 @@ form_opts(const FORM *form)
 NCURSES_EXPORT(int)
 form_opts_on(FORM *form, Form_Options opts)
 {
-  T((T_CALLED("form_opts_on(%p,%d)"), form, opts));
+  T((T_CALLED("form_opts_on(%p,%d)"), (void *)form, opts));
 
   opts &= ALL_FORM_OPTS;
   if (opts & ~ALL_FORM_OPTS)
@@ -112,7 +112,7 @@ form_opts_on(FORM *form, Form_Options opts)
 NCURSES_EXPORT(int)
 form_opts_off(FORM *form, Form_Options opts)
 {
-  T((T_CALLED("form_opts_off(%p,%d)"), form, opts));
+  T((T_CALLED("form_opts_off(%p,%d)"), (void *)form, opts));
 
   opts &= ALL_FORM_OPTS;
   if (opts & ~ALL_FORM_OPTS)
index a371838..5a76ca9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_page.c,v 1.10 2004/12/11 22:08:21 tom Exp $")
+MODULE_ID("$Id: frm_page.c,v 1.11 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -51,7 +51,7 @@ set_form_page(FORM *form, int page)
 {
   int err = E_OK;
 
-  T((T_CALLED("set_form_page(%p,%d)"), form, page));
+  T((T_CALLED("set_form_page(%p,%d)"), (void *)form, page));
 
   if (!form || (page < 0) || (page >= form->maxpage))
     RETURN(E_BAD_ARGUMENT);
@@ -98,7 +98,7 @@ set_form_page(FORM *form, int page)
 NCURSES_EXPORT(int)
 form_page(const FORM *form)
 {
-  T((T_CALLED("form_page(%p)"), form));
+  T((T_CALLED("form_page(%p)"), (const void *)form));
 
   returnCode(Normalize_Form(form)->curpage);
 }
index 28937e9..8e29aff 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_post.c,v 1.9 2004/12/11 22:19:06 tom Exp $")
+MODULE_ID("$Id: frm_post.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -54,7 +54,7 @@ post_form(FORM *form)
   int err;
   int page;
 
-  T((T_CALLED("post_form(%p)"), form));
+  T((T_CALLED("post_form(%p)"), (void *)form));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
@@ -100,7 +100,7 @@ post_form(FORM *form)
 NCURSES_EXPORT(int)
 unpost_form(FORM *form)
 {
-  T((T_CALLED("unpost_form(%p)"), form));
+  T((T_CALLED("unpost_form(%p)"), (void *)form));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
index 7ac9abe..99abd7e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2005,2008 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2008,2009 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            *
@@ -37,7 +37,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_req_name.c,v 1.16 2008/07/05 23:22:08 tom Exp $")
+MODULE_ID("$Id: frm_req_name.c,v 1.17 2009/10/10 16:17:01 tom Exp $")
 
 static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
 {
@@ -154,14 +154,14 @@ form_request_by_name(const char *str)
       strncpy(buf, str, sizeof(buf));
       while ((i < sizeof(buf)) && (buf[i] != '\0'))
        {
-         buf[i] = toupper(UChar(buf[i]));
+         buf[i] = (char)toupper(UChar(buf[i]));
          i++;
        }
 
       for (i = 0; i < A_SIZE; i++)
        {
          if (strncmp(request_names[i], buf, sizeof(buf)) == 0)
-           returnCode(MIN_FORM_COMMAND + (int) i);
+           returnCode(MIN_FORM_COMMAND + (int)i);
        }
     }
   RETURN(E_NO_MATCH);
index 2ebf72d..27e154e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_scale.c,v 1.9 2004/12/11 22:12:34 tom Exp $")
+MODULE_ID("$Id: frm_scale.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -47,7 +47,10 @@ MODULE_ID("$Id: frm_scale.c,v 1.9 2004/12/11 22:12:34 tom Exp $")
 NCURSES_EXPORT(int)
 scale_form(const FORM *form, int *rows, int *cols)
 {
-  T((T_CALLED("scale_form(%p,%p,%p)"), form, rows, cols));
+  T((T_CALLED("scale_form(%p,%p,%p)"),
+     (const void *)form,
+     (void *)rows,
+     (void *)cols));
 
   if (!form)
     RETURN(E_BAD_ARGUMENT);
index 6db0023..1ab131a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
  ****************************************************************************/
 
 /****************************************************************************
- *   Author:  Juergen Pfeifer, 1995,1997                                    *
+ *   Author:  Juergen Pfeifer, 1995-1997,2009                               *
  ****************************************************************************/
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_sub.c,v 1.9 2004/12/11 22:13:39 tom Exp $")
+MODULE_ID("$Id: frm_sub.c,v 1.12 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,13 +46,22 @@ MODULE_ID("$Id: frm_sub.c,v 1.9 2004/12/11 22:13:39 tom Exp $")
 NCURSES_EXPORT(int)
 set_form_sub(FORM *form, WINDOW *win)
 {
-  T((T_CALLED("set_form_sub(%p,%p)"), form, win));
+  T((T_CALLED("set_form_sub(%p,%p)"), (void *)form, (void *)win));
 
   if (form && (form->status & _POSTED))
     RETURN(E_POSTED);
+  else
+    {
+#if NCURSES_SP_FUNCS
+      FORM *f = Normalize_Form(form);
 
-  Normalize_Form(form)->sub = win;
-  RETURN(E_OK);
+      f->sub = win ? win : StdScreen(Get_Form_Screen(f));
+      RETURN(E_OK);
+#else
+      Normalize_Form(form)->sub = win;
+      RETURN(E_OK);
+#endif
+    }
 }
 
 /*---------------------------------------------------------------------------
@@ -68,7 +77,7 @@ form_sub(const FORM *form)
 {
   const FORM *f;
 
-  T((T_CALLED("form_sub(%p)"), form));
+  T((T_CALLED("form_sub(%p)"), (const void *)form));
 
   f = Normalize_Form(form);
   returnWin(Get_Form_Window(f));
index 4d5e0e4..1375b5e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2004,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_user.c,v 1.14 2004/12/25 22:37:56 tom Exp $")
+MODULE_ID("$Id: frm_user.c,v 1.15 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,7 +46,7 @@ MODULE_ID("$Id: frm_user.c,v 1.14 2004/12/25 22:37:56 tom Exp $")
 NCURSES_EXPORT(int)
 set_form_userptr(FORM *form, void *usrptr)
 {
-  T((T_CALLED("set_form_userptr(%p,%p)"), form, usrptr));
+  T((T_CALLED("set_form_userptr(%p,%p)"), (void *)form, (void *)usrptr));
 
   Normalize_Form(form)->usrptr = usrptr;
   RETURN(E_OK);
@@ -65,7 +65,7 @@ set_form_userptr(FORM *form, void *usrptr)
 NCURSES_EXPORT(void *)
 form_userptr(const FORM *form)
 {
-  T((T_CALLED("form_userptr(%p)"), form));
+  T((T_CALLED("form_userptr(%p)"), (const void *)form));
   returnVoidPtr(Normalize_Form(form)->usrptr);
 }
 
index 2258f0a..a65cc59 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -32,7 +32,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: frm_win.c,v 1.13 2004/12/11 22:15:27 tom Exp $")
+MODULE_ID("$Id: frm_win.c,v 1.16 2010/01/23 21:14:36 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
@@ -46,13 +46,22 @@ MODULE_ID("$Id: frm_win.c,v 1.13 2004/12/11 22:15:27 tom Exp $")
 NCURSES_EXPORT(int)
 set_form_win(FORM *form, WINDOW *win)
 {
-  T((T_CALLED("set_form_win(%p,%p)"), form, win));
+  T((T_CALLED("set_form_win(%p,%p)"), (void *)form, (void *)win));
 
   if (form && (form->status & _POSTED))
     RETURN(E_POSTED);
+  else
+    {
+#if NCURSES_SP_FUNCS
+      FORM *f = Normalize_Form(form);
 
-  Normalize_Form(form)->win = win;
-  RETURN(E_OK);
+      f->win = win ? win : StdScreen(Get_Form_Screen(f));
+      RETURN(E_OK);
+#else
+      Normalize_Form(form)->win = win;
+      RETURN(E_OK);
+#endif
+    }
 }
 
 /*---------------------------------------------------------------------------
@@ -66,12 +75,18 @@ set_form_win(FORM *form, WINDOW *win)
 NCURSES_EXPORT(WINDOW *)
 form_win(const FORM *form)
 {
+  WINDOW *result;
   const FORM *f;
 
-  T((T_CALLED("form_win(%p)"), form));
+  T((T_CALLED("form_win(%p)"), (const void *)form));
 
   f = Normalize_Form(form);
-  returnWin(f->win ? f->win : stdscr);
+#if NCURSES_SP_FUNCS
+  result = (f->win ? f->win : StdScreen(Get_Form_Screen(f)));
+#else
+  result = (f->win ? f->win : stdscr);
+#endif
+  returnWin(result);
 }
 
 /* frm_win.c ends here */
index 59dd273..cda23dc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -34,7 +34,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_alnum.c,v 1.21 2007/10/13 19:31:52 tom Exp $")
+MODULE_ID("$Id: fty_alnum.c,v 1.24 2010/01/23 21:14:36 tom Exp $")
 
 #define thisARG alnumARG
 
@@ -46,26 +46,46 @@ thisARG;
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static void *Make_This_Type(va_list *ap)
+|   Function      :  static void *Generic_This_Type(void *arg)
 |
 |   Description   :  Allocate structure for alphanumeric type argument.
 |
 |   Return Values :  Pointer to argument structure or NULL on error
 +--------------------------------------------------------------------------*/
 static void *
-Make_This_Type(va_list *ap)
+Generic_This_Type(void *arg)
 {
-  thisARG *argp = typeMalloc(thisARG, 1);
+  thisARG *argp = (thisARG *) 0;
 
-  if (argp)
+  if (arg)
     {
-      T((T_CREATE("thisARG %p"), argp));
-      argp->width = va_arg(*ap, int);
-    }
+      argp = typeMalloc(thisARG, 1);
 
+      if (argp)
+       {
+         T((T_CREATE("thisARG %p"), (void *)argp));
+         argp->width = *((int *)arg);
+       }
+    }
   return ((void *)argp);
 }
 
+/*---------------------------------------------------------------------------
+|   Facility      :  libnform
+|   Function      :  static void *Make_This_Type(va_list *ap)
+|
+|   Description   :  Allocate structure for alphanumeric type argument.
+|
+|   Return Values :  Pointer to argument structure or NULL on error
++--------------------------------------------------------------------------*/
+static void *
+Make_This_Type(va_list *ap)
+{
+  int w = va_arg(*ap, int);
+
+  return Generic_This_Type((void *)&w);
+}
+
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
 |   Function      :  static void *Copy_ThisType(const void *argp)
@@ -82,7 +102,7 @@ Copy_This_Type(const void *argp)
 
   if (result)
     {
-      T((T_CREATE("thisARG %p"), result));
+      T((T_CREATE("thisARG %p"), (void *)result));
       *result = *ap;
     }
 
@@ -156,12 +176,27 @@ static FIELDTYPE typeTHIS =
   Make_This_Type,
   Copy_This_Type,
   Free_This_Type,
-  Check_This_Field,
-  Check_This_Character,
-  NULL,
-  NULL
+  INIT_FT_FUNC(Check_This_Field),
+  INIT_FT_FUNC(Check_This_Character),
+  INIT_FT_FUNC(NULL),
+  INIT_FT_FUNC(NULL),
+#if NCURSES_INTEROP_FUNCS
+  Generic_This_Type
+#endif
 };
 
 NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeTHIS;
 
+#if NCURSES_INTEROP_FUNCS
+/* The next routines are to simplify the use of ncurses from
+   programming languages with restictions on interop with C level
+   constructs (e.g. variable access or va_list + ellipsis constructs)
+*/
+NCURSES_EXPORT(FIELDTYPE *)
+_nc_TYPE_ALNUM(void)
+{
+  return TYPE_ALNUM;
+}
+#endif
+
 /* fty_alnum.c ends here */
index bd49544..917a9e0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -34,7 +34,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_alpha.c,v 1.23 2007/10/13 19:32:09 tom Exp $")
+MODULE_ID("$Id: fty_alpha.c,v 1.26 2010/01/23 21:14:36 tom Exp $")
 
 #define thisARG alphaARG
 
@@ -46,26 +46,46 @@ thisARG;
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
-|   Function      :  static void *Make_This_Type(va_list *ap)
+|   Function      :  static void *Generic_This_Type(va_list *ap)
 |
 |   Description   :  Allocate structure for alpha type argument.
 |
 |   Return Values :  Pointer to argument structure or NULL on error
 +--------------------------------------------------------------------------*/
 static void *
-Make_This_Type(va_list *ap)
+Generic_This_Type(void *arg)
 {
-  thisARG *argp = typeMalloc(thisARG, 1);
+  thisARG *argp = (thisARG *) 0;
 
-  if (argp)
+  if (arg)
     {
-      T((T_CREATE("thisARG %p"), argp));
-      argp->width = va_arg(*ap, int);
-    }
+      argp = typeMalloc(thisARG, 1);
 
+      if (argp)
+       {
+         T((T_CREATE("thisARG %p"), (void *)argp));
+         argp->width = *((int *)arg);
+       }
+    }
   return ((void *)argp);
 }
 
+/*---------------------------------------------------------------------------
+|   Facility      :  libnform
+|   Function      :  static void *Make_This_Type(va_list *ap)
+|
+|   Description   :  Allocate structure for alpha type argument.
+|
+|   Return Values :  Pointer to argument structure or NULL on error
++--------------------------------------------------------------------------*/
+static void *
+Make_This_Type(va_list *ap)
+{
+  int w = va_arg(*ap, int);
+
+  return Generic_This_Type((void *)&w);
+}
+
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform
 |   Function      :  static void *Copy_This_Type(const void * argp)
@@ -82,7 +102,7 @@ Copy_This_Type(const void *argp)
 
   if (result)
     {
-      T((T_CREATE("thisARG %p"), result));
+      T((T_CREATE("thisARG %p"), (void *)result));
       *result = *ap;
     }
 
@@ -156,12 +176,27 @@ static FIELDTYPE typeTHIS =
   Make_This_Type,
   Copy_This_Type,
   Free_This_Type,
-  Check_This_Field,
-  Check_This_Character,
-  NULL,
-  NULL
+  INIT_FT_FUNC(Check_This_Field),
+  INIT_FT_FUNC(Check_This_Character),
+  INIT_FT_FUNC(NULL),
+  INIT_FT_FUNC(NULL),
+#if NCURSES_INTEROP_FUNCS
+  Generic_This_Type
+#endif
 };
 
 NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeTHIS;
 
+#if NCURSES_INTEROP_FUNCS
+/* The next routines are to simplify the use of ncurses from
+   programming languages with restictions on interop with C level
+   constructs (e.g. variable access or va_list + ellipsis constructs)
+*/
+NCURSES_EXPORT(FIELDTYPE *)
+_nc_TYPE_ALPHA(void)
+{
+  return TYPE_ALPHA;
+}
+#endif
+
 /* fty_alpha.c ends here */
index c96a080..d335164 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,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            *
@@ -34,7 +34,7 @@
 
 #include "form.priv.h"
 
-MODULE_ID("$Id: fty_enum.c,v 1.22 2007/10/13 19:32:26 tom Exp $")
+MODULE_ID("$Id: fty_enum.c,v 1.26 2010/05/01 21:11:07 tom Exp $")
 
 typedef struct
   {
@@ -45,41 +45,97 @@ typedef struct
   }
 enumARG;
 
+typedef struct
+  {
+    char **kwds;
+    int ccase;
+    int cunique;
+  }
+enumParams;
+
 /*---------------------------------------------------------------------------
 |   Facility      :  libnform  
-|   Function      :  static void *Make_Enum_Type( va_list * ap )
+|   Function      :  static void *Generic_Enum_Type(void * arg)
 |   
 |   Description   :  Allocate structure for enumeration type argument.
 |
 |   Return Values :  Pointer to argument structure or NULL on error
 +--------------------------------------------------------------------------*/
 static void *
-Make_Enum_Type(va_list *ap)
+Generic_Enum_Type(void *arg)
 {
-  enumARG *argp = typeMalloc(enumARG, 1);
+  enumARG *argp = (enumARG *)0;
+  enumParams *params = (enumParams *) arg;
 
-  if (argp)
+  if (params)
     {
-      int cnt = 0;
-      char **kp = (char **)0;
-      int ccase, cunique;
-
-      T((T_CREATE("enumARG %p"), argp));
-      argp->kwds = va_arg(*ap, char **);
-      ccase = va_arg(*ap, int);
-      cunique = va_arg(*ap, int);
-
-      argp->checkcase = ccase ? TRUE : FALSE;
-      argp->checkunique = cunique ? TRUE : FALSE;
-
-      kp = argp->kwds;
-      while (kp && (*kp++))
-       cnt++;
-      argp->count = cnt;
+      argp = typeMalloc(enumARG, 1);
+
+      if (argp)
+       {
+         int cnt = 0;
+         char **kp = (char **)0;
+         char **kwds = (char **)0;
+         char **kptarget;
+         int ccase, cunique;
+
+         T((T_CREATE("enumARG %p"), (void *)argp));
+         kwds = params->kwds;
+         ccase = params->ccase;
+         cunique = params->cunique;
+
+         argp->checkcase = ccase ? TRUE : FALSE;
+         argp->checkunique = cunique ? TRUE : FALSE;
+         argp->kwds = (char **)0;
+
+         kp = kwds;
+         while (kp && (*kp++))
+           cnt++;
+         argp->count = cnt;
+
+         if (cnt > 0)
+           {
+             /* We copy the keywords, because we can't rely on the fact
+ &n