Hello community,

here is the log from the commit of package ncurses for openSUSE:Factory checked 
in at 2013-12-11 16:52:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ncurses (Old)
 and      /work/SRC/openSUSE:Factory/.ncurses.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ncurses"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ncurses/ncurses.changes  2013-12-02 
17:02:03.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ncurses.new/ncurses.changes     2013-12-11 
16:52:13.000000000 +0100
@@ -1,0 +2,8 @@
+Tue Dec 10 14:54:55 UTC 2013 - [email protected]
+
+- Add ncurses patch 20131207
+  + add form_driver_w() entrypoint to wide-character forms library,
+    as well as test program form_driver_w (adapted from patch by
+    Gaute Hope).
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ncurses-5.9-patches.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches/ncurses-5.9-20131207.patch 
new/patches/ncurses-5.9-20131207.patch
--- old/patches/ncurses-5.9-20131207.patch      1970-01-01 01:00:00.000000000 
+0100
+++ new/patches/ncurses-5.9-20131207.patch      2013-12-10 15:53:49.000000000 
+0100
@@ -0,0 +1,691 @@
+# ncurses 5.9 - patch  - Thomas E. Dickey
+#
+# 
------------------------------------------------------------------------------
+#
+# Ncurses 5.9 is at
+#      ftp.gnu.org:/pub/gnu
+#
+# Patches for ncurses 5.9 are in the subdirectory
+#      ftp://invisible-island.net/ncurses/5.9
+#
+# 
------------------------------------------------------------------------------
+# ftp://invisible-island.net/ncurses/5.9/ncurses-5.9-20131207.patch.gz
+# patch by Thomas E. Dickey <[email protected]>
+# created  Sun Dec  8 01:49:22 UTC 2013
+# 
------------------------------------------------------------------------------
+# NEWS                                      |    7 
+# dist.mk                                   |    4 
+# form/form.h                               |    7 
+# form/frm_driver.c                         |  279 +++++++++++++++++++++++++++-
+# ncurses-5.9-20131207/test/form_driver_w.c |  155 +++++++++++++++
+# package/debian-mingw/changelog            |    4 
+# package/debian-mingw64/changelog          |    4 
+# package/debian/changelog                  |    4 
+# package/mingw-ncurses.nsi                 |    4 
+# package/mingw-ncurses.spec                |    2 
+# package/ncurses.spec                      |    2 
+# test/modules                              |    3 
+# test/programs                             |    3 
+# 13 files changed, 460 insertions(+), 18 deletions(-)
+# 
------------------------------------------------------------------------------
+Index: NEWS
+Prereq:  1.2143 
+--- ncurses-5.9-20131123+/NEWS 2013-11-23 18:29:01.000000000 +0000
++++ ncurses-5.9-20131207/NEWS  2013-12-07 18:26:50.000000000 +0000
+@@ -25,7 +25,7 @@
+ -- sale, use or other dealings in this Software without prior written        
--
+ -- authorization.                                                            
--
+ 
-------------------------------------------------------------------------------
+--- $Id: NEWS,v 1.2143 2013/11/23 18:29:01 tom Exp $
++-- $Id: NEWS,v 1.2145 2013/12/07 18:26:50 tom Exp $
+ 
-------------------------------------------------------------------------------
+ 
+ This is a log of changes that ncurses has gone through since Zeyd started
+@@ -45,6 +45,11 @@
+ Changes through 1.9.9e did not credit all contributions;
+ it is not possible to add this information.
+ 
++20131207
++      + add form_driver_w() entrypoint to wide-character forms library, as
++        well as test program form_driver_w (adapted from patch by Gaute
++        Hope).
++
+ 20131123
+       + minor fix for CF_GCC_WARNINGS to special-case options which are not
+         recognized by clang.
+Index: dist.mk
+Prereq:  1.959 
+--- ncurses-5.9-20131123+/dist.mk      2013-11-23 18:02:48.000000000 +0000
++++ ncurses-5.9-20131207/dist.mk       2013-12-07 15:21:58.000000000 +0000
+@@ -25,7 +25,7 @@
+ # use or other dealings in this Software without prior written               #
+ # authorization.                                                             #
+ ##############################################################################
+-# $Id: dist.mk,v 1.959 2013/11/23 18:02:48 tom Exp $
++# $Id: dist.mk,v 1.960 2013/12/07 15:21:58 tom Exp $
+ # Makefile for creating ncurses distributions.
+ #
+ # This only needs to be used directly as a makefile by developers, but
+@@ -37,7 +37,7 @@
+ # These define the major/minor/patch versions of ncurses.
+ NCURSES_MAJOR = 5
+ NCURSES_MINOR = 9
+-NCURSES_PATCH = 20131123
++NCURSES_PATCH = 20131207
+ 
+ # We don't append the patch to the version, since this only applies to 
releases
+ VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
+Index: form/form.h
+Prereq:  0.21 
+--- ncurses-5.9-20131123+/form/form.h  2009-11-07 19:31:11.000000000 +0000
++++ ncurses-5.9-20131207/form/form.h   2013-12-07 17:57:32.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright (c) 1998-2004,2009 Free Software Foundation, Inc.              *
++ * Copyright (c) 1998-2009,2013 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.21 2009/11/07 19:31:11 tom Exp $ */
++/* $Id: form.h,v 0.23 2013/12/07 17:57:32 tom Exp $ */
+ 
+ #ifndef FORM_H
+ #define FORM_H
+@@ -396,6 +396,9 @@
+ extern NCURSES_EXPORT(int)    unpost_form (FORM *);
+ extern NCURSES_EXPORT(int)    pos_form_cursor (FORM *);
+ extern NCURSES_EXPORT(int)    form_driver (FORM *,int);
++# if NCURSES_WIDECHAR
++extern NCURSES_EXPORT(int)    form_driver_w (FORM *,int,wchar_t);
++# endif
+ extern NCURSES_EXPORT(int)    set_form_userptr (FORM *,void *);
+ extern NCURSES_EXPORT(int)    set_form_opts (FORM *,Form_Options);
+ extern NCURSES_EXPORT(int)    form_opts_on (FORM *,Form_Options);
+Index: form/frm_driver.c
+Prereq:  1.106 
+--- ncurses-5.9-20131123+/form/frm_driver.c    2013-08-25 00:02:15.000000000 
+0000
++++ ncurses-5.9-20131207/form/frm_driver.c     2013-12-08 01:06:41.000000000 
+0000
+@@ -32,7 +32,7 @@
+ 
+ #include "form.priv.h"
+ 
+-MODULE_ID("$Id: frm_driver.c,v 1.106 2013/08/25 00:02:15 tom Exp $")
++MODULE_ID("$Id: frm_driver.c,v 1.109 2013/12/08 01:06:41 tom Exp $")
+ 
+ /*----------------------------------------------------------------------------
+   This is the core module of the form library. It contains the majority
+@@ -3982,6 +3982,94 @@
+   Helper routines for the core form driver.
+   --------------------------------------------------------------------------*/
+ 
++# if USE_WIDEC_SUPPORT
++/*---------------------------------------------------------------------------
++|   Facility      :  libnform
++|   Function      :  static int Data_Entry_w(FORM * form, wchar_t c)
++|
++|   Description   :  Enter the wide character c into at the current
++|                    position of the current field of the form.
++|
++|   Return Values :  E_OK              - success
++|                    E_REQUEST_DENIED  - driver could not process the request
++|                    E_SYSTEM_ERROR    -
+++--------------------------------------------------------------------------*/
++static int
++Data_Entry_w(FORM *form, wchar_t c)
++{
++  FIELD *field = form->current;
++  int result = E_REQUEST_DENIED;
++
++  T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
++  if (((unsigned)field->opts & O_EDIT)
++#if FIX_FORM_INACTIVE_BUG
++      && ((unsigned)field->opts & O_ACTIVE)
++#endif
++    )
++    {
++      wchar_t given[2];
++      cchar_t temp_ch;
++
++      given[0] = c;
++      given[1] = 1;
++      setcchar(&temp_ch, given, 0, 0, (void *)0);
++      if (((unsigned)field->opts & O_BLANK) &&
++        First_Position_In_Current_Field(form) &&
++        !(form->status & _FCHECK_REQUIRED) &&
++        !(form->status & _WINDOW_MODIFIED))
++      werase(form->w);
++
++      if (form->status & _OVLMODE)
++      {
++        wadd_wch(form->w, &temp_ch);
++      }
++      else
++      /* no _OVLMODE */
++      {
++        bool There_Is_Room = Is_There_Room_For_A_Char_In_Line(form);
++
++        if (!(There_Is_Room ||
++              ((Single_Line_Field(field) && Growable(field)))))
++          RETURN(E_REQUEST_DENIED);
++
++        if (!There_Is_Room && !Field_Grown(field, 1))
++          RETURN(E_SYSTEM_ERROR);
++
++        wins_wch(form->w, &temp_ch);
++      }
++
++      if ((result = Wrapping_Not_Necessary_Or_Wrapping_Ok(form)) == E_OK)
++      {
++        bool End_Of_Field = (((field->drows - 1) == form->currow) &&
++                             ((field->dcols - 1) == form->curcol));
++
++        form->status |= _WINDOW_MODIFIED;
++        if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & 
O_AUTOSKIP))
++          result = Inter_Field_Navigation(FN_Next_Field, form);
++        else
++          {
++            if (End_Of_Field && Growable(field) && !Field_Grown(field, 1))
++              result = E_SYSTEM_ERROR;
++            else
++              {
++                /*
++                 * We have just added a byte to the form field.  It may have
++                 * been part of a multibyte character.  If it was, the
++                 * addch_used field is nonzero and we should not try to move
++                 * to a new column.
++                 */
++                if (WINDOW_EXT(form->w, addch_used) == 0)
++                  IFN_Next_Character(form);
++
++                result = E_OK;
++              }
++          }
++      }
++    }
++  RETURN(result);
++}
++# endif
++
+ /*---------------------------------------------------------------------------
+ |   Facility      :  libnform
+ |   Function      :  static int Data_Entry(FORM * form,int c)
+@@ -4368,6 +4456,195 @@
+   RETURN(res);
+ }
+ 
++# if USE_WIDEC_SUPPORT
++/*---------------------------------------------------------------------------
++|   Facility      :  libnform
++|   Function      :  int form_driver_w(FORM * form,int type,wchar_t  c)
++|
++|   Description   :  This is the workhorse of the forms system.
++|
++|                    Input is either a key code (request) or a wide char
++|                    returned by e.g. get_wch (). The type must be passed
++|                    as well,so that we are able to determine whether the char
++|                    is a multibyte char or a request.
++
++|                    If it is a request, the form driver executes
++|                    the request and returns the result. If it is data
++|                    (printable character), it enters the data into the
++|                    current position in the current field. If it is not
++|                    recognized, the form driver assumes it is an application
++|                    defined command and returns E_UNKNOWN_COMMAND.
++|                    Application defined command should be defined relative
++|                    to MAX_FORM_COMMAND, the maximum value of a request.
++|
++|   Return Values :  E_OK              - success
++|                    E_SYSTEM_ERROR    - system error
++|                    E_BAD_ARGUMENT    - an argument is incorrect
++|                    E_NOT_POSTED      - form is not posted
++|                    E_INVALID_FIELD   - field contents are invalid
++|                    E_BAD_STATE       - called from inside a hook routine
++|                    E_REQUEST_DENIED  - request failed
++|                    E_NOT_CONNECTED   - no fields are connected to the form
++|                    E_UNKNOWN_COMMAND - command not known
+++--------------------------------------------------------------------------*/
++NCURSES_EXPORT(int)
++form_driver_w(FORM *form, int type, wchar_t c)
++{
++  const Binding_Info *BI = (Binding_Info *) 0;
++  int res = E_UNKNOWN_COMMAND;
++
++  T((T_CALLED("form_driver(%p,%d)"), (void *)form, c));
++
++  if (!form)
++    RETURN(E_BAD_ARGUMENT);
++
++  if (!(form->field))
++    RETURN(E_NOT_CONNECTED);
++
++  assert(form->page);
++
++  if (c == FIRST_ACTIVE_MAGIC)
++    {
++      form->current = _nc_First_Active_Field(form);
++      RETURN(E_OK);
++    }
++
++  assert(form->current &&
++       form->current->buf &&
++       (form->current->form == form)
++    );
++
++  if (form->status & _IN_DRIVER)
++    RETURN(E_BAD_STATE);
++
++  if (!(form->status & _POSTED))
++    RETURN(E_NOT_POSTED);
++
++  /* check if this is a keycode or a (wide) char */
++  if (type == KEY_CODE_YES)
++    {
++      if ((c >= MIN_FORM_COMMAND && c <= MAX_FORM_COMMAND) &&
++        ((bindings[c - MIN_FORM_COMMAND].keycode & Key_Mask) == c))
++      BI = &(bindings[c - MIN_FORM_COMMAND]);
++    }
++
++  if (BI)
++    {
++      typedef int (*Generic_Method) (int (*const) (FORM *), FORM *);
++      static const Generic_Method Generic_Methods[] =
++      {
++      Page_Navigation,        /* overloaded to call field&form hooks */
++      Inter_Field_Navigation, /* overloaded to call field hooks      */
++      NULL,                   /* Intra-Field is generic              */
++      Vertical_Scrolling,     /* Overloaded to check multi-line      */
++      Horizontal_Scrolling,   /* Overloaded to check single-line     */
++      Field_Editing,          /* Overloaded to mark modification     */
++      NULL,                   /* Edit Mode is generic                */
++      NULL,                   /* Field Validation is generic         */
++      NULL                    /* Choice Request is generic           */
++      };
++      size_t nMethods = (sizeof(Generic_Methods) / 
sizeof(Generic_Methods[0]));
++      size_t method = (size_t) (BI->keycode >> ID_Shft) & 0xffff;     /* see 
ID_Mask */
++
++      if ((method >= nMethods) || !(BI->cmd))
++      res = E_SYSTEM_ERROR;
++      else
++      {
++        Generic_Method fct = Generic_Methods[method];
++
++        if (fct)
++          res = fct(BI->cmd, form);
++        else
++          res = (BI->cmd) (form);
++      }
++    }
++#ifdef NCURSES_MOUSE_VERSION
++  else if (KEY_MOUSE == c)
++    {
++      MEVENT event;
++      WINDOW *win = form->win ? form->win : StdScreen(Get_Form_Screen(form));
++      WINDOW *sub = form->sub ? form->sub : win;
++
++      getmouse(&event);
++      if ((event.bstate & (BUTTON1_CLICKED |
++                         BUTTON1_DOUBLE_CLICKED |
++                         BUTTON1_TRIPLE_CLICKED))
++        && wenclose(win, event.y, event.x))
++      {                       /* we react only if the click was in the 
userwin, that means
++                                 * inside the form display area or at the 
decoration window.
++                               */
++        int ry = event.y, rx = event.x;       /* screen coordinates */
++
++        res = E_REQUEST_DENIED;
++        if (mouse_trafo(&ry, &rx, FALSE))
++          {                   /* rx, ry are now "curses" coordinates */
++            if (ry < sub->_begy)
++              {               /* we clicked above the display region; this is
++                                 * interpreted as "scroll up" request
++                               */
++                if (event.bstate & BUTTON1_CLICKED)
++                  res = form_driver(form, REQ_PREV_FIELD);
++                else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
++                  res = form_driver(form, REQ_PREV_PAGE);
++                else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
++                  res = form_driver(form, REQ_FIRST_FIELD);
++              }
++            else if (ry > sub->_begy + sub->_maxy)
++              {               /* we clicked below the display region; this is
++                                 * interpreted as "scroll down" request
++                               */
++                if (event.bstate & BUTTON1_CLICKED)
++                  res = form_driver(form, REQ_NEXT_FIELD);
++                else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
++                  res = form_driver(form, REQ_NEXT_PAGE);
++                else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
++                  res = form_driver(form, REQ_LAST_FIELD);
++              }
++            else if (wenclose(sub, event.y, event.x))
++              {               /* Inside the area we try to find the hit item 
*/
++                int i;
++
++                ry = event.y;
++                rx = event.x;
++                if (wmouse_trafo(sub, &ry, &rx, FALSE))
++                  {
++                    int min_field = form->page[form->curpage].pmin;
++                    int max_field = form->page[form->curpage].pmax;
++
++                    for (i = min_field; i <= max_field; ++i)
++                      {
++                        FIELD *field = form->field[i];
++
++                        if (Field_Is_Selectable(field)
++                            && Field_encloses(field, ry, rx) == E_OK)
++                          {
++                            res = _nc_Set_Current_Field(form, field);
++                            if (res == E_OK)
++                              res = _nc_Position_Form_Cursor(form);
++                            if (res == E_OK
++                                && (event.bstate & BUTTON1_DOUBLE_CLICKED))
++                              res = E_UNKNOWN_COMMAND;
++                            break;
++                          }
++                      }
++                  }
++              }
++          }
++      }
++      else
++      res = E_REQUEST_DENIED;
++    }
++#endif /* NCURSES_MOUSE_VERSION */
++  else if (type == OK)
++    {
++      res = Data_Entry_w(form, c);
++    }
++
++  _nc_Refresh_Current_Field(form);
++  RETURN(res);
++}
++# endif       /* USE_WIDEC_SUPPORT */
++
+ /*----------------------------------------------------------------------------
+   Field-Buffer manipulation routines.
+   The effects of setting a buffer are tightly coupled to the core of the form
+Index: package/debian-mingw/changelog
+--- ncurses-5.9-20131123+/package/debian-mingw/changelog       2013-11-23 
18:02:48.000000000 +0000
++++ ncurses-5.9-20131207/package/debian-mingw/changelog        2013-12-07 
15:21:58.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6 (5.9-20131123) unstable; urgency=low
++ncurses6 (5.9-20131207) unstable; urgency=low
+ 
+   * latest weekly patch
+ 
+- -- Thomas E. Dickey <[email protected]>  Sat, 23 Nov 2013 13:02:48 
-0500
++ -- Thomas E. Dickey <[email protected]>  Sat, 07 Dec 2013 10:21:58 
-0500
+ 
+ ncurses6 (5.9-20131005) unstable; urgency=low
+ 
+Index: package/debian-mingw64/changelog
+--- ncurses-5.9-20131123+/package/debian-mingw64/changelog     2013-11-23 
18:02:48.000000000 +0000
++++ ncurses-5.9-20131207/package/debian-mingw64/changelog      2013-12-07 
15:21:58.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6 (5.9-20131123) unstable; urgency=low
++ncurses6 (5.9-20131207) unstable; urgency=low
+ 
+   * latest weekly patch
+ 
+- -- Thomas E. Dickey <[email protected]>  Sat, 23 Nov 2013 13:02:48 
-0500
++ -- Thomas E. Dickey <[email protected]>  Sat, 07 Dec 2013 10:21:58 
-0500
+ 
+ ncurses6 (5.9-20131005) unstable; urgency=low
+ 
+Index: package/debian/changelog
+--- ncurses-5.9-20131123+/package/debian/changelog     2013-11-23 
18:02:48.000000000 +0000
++++ ncurses-5.9-20131207/package/debian/changelog      2013-12-07 
15:21:58.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6 (5.9-20131123) unstable; urgency=low
++ncurses6 (5.9-20131207) unstable; urgency=low
+ 
+   * latest weekly patch
+ 
+- -- Thomas E. Dickey <[email protected]>  Sat, 23 Nov 2013 13:02:48 
-0500
++ -- Thomas E. Dickey <[email protected]>  Sat, 07 Dec 2013 10:21:58 
-0500
+ 
+ ncurses6 (5.9-20120608) unstable; urgency=low
+ 
+Index: package/mingw-ncurses.nsi
+Prereq:  1.16 
+--- ncurses-5.9-20131123+/package/mingw-ncurses.nsi    2013-11-23 
18:02:48.000000000 +0000
++++ ncurses-5.9-20131207/package/mingw-ncurses.nsi     2013-12-07 
15:21:58.000000000 +0000
+@@ -1,4 +1,4 @@
+-; $Id: mingw-ncurses.nsi,v 1.16 2013/11/23 18:02:48 tom Exp $
++; $Id: mingw-ncurses.nsi,v 1.17 2013/12/07 15:21:58 tom Exp $
+ 
+ ; TODO add examples
+ ; TODO bump ABI to 6
+@@ -10,7 +10,7 @@
+ !define VERSION_MAJOR "5"
+ !define VERSION_MINOR "9"
+ !define VERSION_YYYY  "2013"
+-!define VERSION_MMDD  "1123"
++!define VERSION_MMDD  "1207"
+ !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
+ 
+ !define MY_ABI   "5"
+Index: package/mingw-ncurses.spec
+--- ncurses-5.9-20131123+/package/mingw-ncurses.spec   2013-11-23 
18:02:48.000000000 +0000
++++ ncurses-5.9-20131207/package/mingw-ncurses.spec    2013-12-07 
15:21:58.000000000 +0000
+@@ -3,7 +3,7 @@
+ Summary: shared libraries for terminal handling
+ Name: mingw32-ncurses6
+ Version: 5.9
+-Release: 20131123
++Release: 20131207
+ License: X11
+ Group: Development/Libraries
+ Source: ncurses-%{version}-%{release}.tgz
+Index: package/ncurses.spec
+--- ncurses-5.9-20131123+/package/ncurses.spec 2013-11-23 18:02:48.000000000 
+0000
++++ ncurses-5.9-20131207/package/ncurses.spec  2013-12-07 15:21:58.000000000 
+0000
+@@ -1,7 +1,7 @@
+ Summary: shared libraries for terminal handling
+ Name: ncurses6
+ Version: 5.9
+-Release: 20131123
++Release: 20131207
+ License: X11
+ Group: Development/Libraries
+ Source: ncurses-%{version}-%{release}.tgz
+Index: test/form_driver_w.c
+--- /dev/null  2013-12-07 11:36:34.536006036 +0000
++++ ncurses-5.9-20131207/test/form_driver_w.c  2013-12-07 20:35:54.000000000 
+0000
+@@ -0,0 +1,155 @@
++/****************************************************************************
++ * Copyright (c) 2013 Free Software Foundation, Inc.                        *
++ *                                                                          *
++ * Permission is hereby granted, free of charge, to any person obtaining a  *
++ * copy of this software and associated documentation files (the            *
++ * "Software"), to deal in the Software without restriction, including      *
++ * without limitation the rights to use, copy, modify, merge, publish,      *
++ * distribute, distribute with modifications, sublicense, and/or sell       *
++ * copies of the Software, and to permit persons to whom the Software is    *
++ * furnished to do so, subject to the following conditions:                 *
++ *                                                                          *
++ * The above copyright notice and this permission notice shall be included  *
++ * in all copies or substantial portions of the Software.                   *
++ *                                                                          *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
++ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
++ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
++ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
++ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
++ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
++ *                                                                          *
++ * Except as contained in this notice, the name(s) of the above copyright   *
++ * holders shall not be used in advertising or otherwise to promote the     *
++ * sale, use or other dealings in this Software without prior written       *
++ * authorization.                                                           *
++ ****************************************************************************/
++
++/****************************************************************************
++ *   Author:  Gaute Hope, 2013                                              *
++ ****************************************************************************/
++
++/*
++ * $Id: form_driver_w.c,v 1.9 2013/12/07 20:35:54 tom Exp $
++ *
++ * Test form_driver_w (int, int, wchar_t), a wide char aware
++ * replacement of form_driver.
++ */
++
++#include <locale.h>
++
++#include <test.priv.h>
++
++#if USE_WIDEC_SUPPORT && USE_LIBFORM
++
++#include <form.h>
++
++int
++main(void)
++{
++    FIELD *field[3];
++    FORM *my_form;
++    bool done = FALSE;
++
++    setlocale(LC_ALL, "");
++
++    /* Initialize curses */
++    initscr();
++    cbreak();
++    noecho();
++    keypad(stdscr, TRUE);
++
++    /* Initialize the fields */
++    field[0] = new_field(1, 10, 4, 18, 0, 0);
++    field[1] = new_field(1, 10, 6, 18, 0, 0);
++    field[2] = NULL;
++
++    /* Set field options */
++    set_field_back(field[0], A_UNDERLINE);    /* Print a line for the option  
*/
++    field_opts_off(field[0], O_AUTOSKIP);     /* Don't go to next field when 
this */
++    /* Field is filled up           */
++    set_field_back(field[1], A_UNDERLINE);
++    field_opts_off(field[1], O_AUTOSKIP);
++
++    /* Create the form and post it */
++    my_form = new_form(field);
++    post_form(my_form);
++    refresh();
++
++    mvprintw(4, 10, "Value 1:");
++    mvprintw(6, 10, "Value 2:");
++    refresh();
++
++    /* Loop through to get user requests */
++    while (!done) {
++      wint_t ch;
++      int ret = get_wch(&ch);
++
++      mvprintw(8, 10, "Got %d (%#x), type: %s", ch, ch,
++               (ret == KEY_CODE_YES)
++               ? "KEY_CODE_YES"
++               : ((ret == OK)
++                  ? "OK"
++                  : ((ret == ERR)
++                     ? "ERR"
++                     : "?")));
++      clrtoeol();
++
++      switch (ret) {
++      case KEY_CODE_YES:
++          switch (ch) {
++          case KEY_DOWN:
++              /* Go to next field */
++              form_driver(my_form, REQ_NEXT_FIELD);
++              /* Go to the end of the present buffer */
++              /* Leaves nicely at the last character */
++              form_driver(my_form, REQ_END_LINE);
++              break;
++          case KEY_UP:
++              /* Go to previous field */
++              form_driver(my_form, REQ_PREV_FIELD);
++              form_driver(my_form, REQ_END_LINE);
++              break;
++          default:
++#if 0
++              /* If this is a normal character, it gets printed */
++              form_driver(my_form, ch);
++              wadd_wch(my_form->current->working, ch);
++#endif
++              break;
++          }
++          break;
++      case OK:
++          switch (ch) {
++          case CTRL('D'):
++          case QUIT:
++          case ESCAPE:
++              done = TRUE;
++              break;
++          default:
++              form_driver_w(my_form, OK, ch);
++              break;
++          }
++          break;
++      }
++    }
++
++    /* Un post form and free the memory */
++    unpost_form(my_form);
++    free_form(my_form);
++    free_field(field[0]);
++    free_field(field[1]);
++
++    endwin();
++    ExitProgram(EXIT_SUCCESS);
++}
++
++#else
++int
++main(void)
++{
++    printf("This program requires the wide-ncurses and forms library\n");
++    ExitProgram(EXIT_FAILURE);
++}
++#endif /* USE_WIDEC_SUPPORT */
+Index: test/modules
+Prereq:  1.48 
+--- ncurses-5.9-20131123+/test/modules 2013-06-08 16:34:15.000000000 +0000
++++ ncurses-5.9-20131207/test/modules  2013-12-07 18:06:01.000000000 +0000
+@@ -1,4 +1,4 @@
+-# $Id: modules,v 1.48 2013/06/08 16:34:15 tom Exp $
++# $Id: modules,v 1.50 2013/12/07 18:06:01 tom Exp $
+ ##############################################################################
+ # Copyright (c) 1998-2012,2013 Free Software Foundation, Inc.                #
+ #                                                                            #
+@@ -57,6 +57,7 @@
+ firework      progs           $(srcdir)       $(HEADER_DEPS)
+ firstlast     progs           $(srcdir)       $(HEADER_DEPS)
+ foldkeys      progs           $(srcdir)       $(HEADER_DEPS)
++form_driver_w progs           $(srcdir)       $(HEADER_DEPS)
+ gdc           progs           $(srcdir)       $(HEADER_DEPS)
+ hanoi         progs           $(srcdir)       $(HEADER_DEPS)
+ hashtest      progs           $(srcdir)       $(HEADER_DEPS)
+Index: test/programs
+Prereq:  1.22 
+--- ncurses-5.9-20131123+/test/programs        2013-06-08 16:34:31.000000000 
+0000
++++ ncurses-5.9-20131207/test/programs 2013-12-07 18:06:24.000000000 +0000
+@@ -1,4 +1,4 @@
+-# $Id: programs,v 1.22 2013/06/08 16:34:31 tom Exp $
++# $Id: programs,v 1.24 2013/12/07 18:06:24 tom Exp $
+ ##############################################################################
+ # Copyright (c) 2006-2009,2013 Free Software Foundation, Inc.                #
+ #                                                                            #
+@@ -54,6 +54,7 @@
+ firework      $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   firework
+ firstlast     $(LDFLAGS_DEFAULT)      $(LOCAL_LIBS)   firstlast
+ foldkeys      $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   foldkeys
++form_driver_w $(LDFLAGS_DEFAULT)      $(LOCAL_LIBS)   form_driver_w
+ gdc           $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   gdc
+ hanoi         $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   hanoi
+ hashtest      $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   hashtest

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to