diff options
Diffstat (limited to 'contrib/ncurses/form')
48 files changed, 0 insertions, 12473 deletions
diff --git a/contrib/ncurses/form/Makefile.in b/contrib/ncurses/form/Makefile.in deleted file mode 100644 index 2bf31e15f347..000000000000 --- a/contrib/ncurses/form/Makefile.in +++ /dev/null @@ -1,165 +0,0 @@ -# $Id: Makefile.in,v 1.47 2007/04/28 14:56:11 tom Exp $ -############################################################################## -# Copyright (c) 1998-2006,2007 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: Thomas E. Dickey 1996-on -# -# Makefile for form source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -THIS = Makefile - -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ -INSTALL_PROG = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -AR_OPTS = @AR_OPTS@ -AWK = @AWK@ -LD = @LD@ -LN_S = @LN_S@ - -CC = @CC@ -CPP = @CPP@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@ - -MK_SHARED_LIB = @MK_SHARED_LIB@ - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ - -RANLIB = @LIB_PREP@ - -LIBRARIES = @LIBS_TO_MAKE@ - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lform -lncurses @LIBS@ - -AUTO_SRC = \ - ../include/form.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources : $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - sh $(srcdir)/../mkdirs.sh $@ - -# make copies to simplify include-paths while still keeping form's include -# file in this directory. -../include/form.h : $(srcdir)/form.h - -rm -f $@ - cp $(srcdir)/form.h $@ - -FORM_PRIV_H = \ - $(srcdir)/form.priv.h \ - $(srcdir)/form.h \ - ../include/mf_common.h \ - ../include/curses.h \ - ../include/eti.h - -tags: - ctags *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ etags *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -../include/mf_common.h \ -../include/eti.h : - cd ../menu && $(MAKE) $@ - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/contrib/ncurses/form/READ.ME b/contrib/ncurses/form/READ.ME deleted file mode 100644 index da86bf69275d..000000000000 --- a/contrib/ncurses/form/READ.ME +++ /dev/null @@ -1,42 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. -- --- -- --- Permission is hereby granted, free of charge, to any person obtaining a -- --- copy of this software and associated documentation files (the -- --- "Software"), to deal in the Software without restriction, including -- --- without limitation the rights to use, copy, modify, merge, publish, -- --- distribute, distribute with modifications, sublicense, and/or sell copies -- --- of the Software, and to permit persons to whom the Software is furnished -- --- to do so, subject to the following conditions: -- --- -- --- The above copyright notice and this permission notice shall be included -- --- in all copies or substantial portions of the Software. -- --- -- --- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -- --- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -- --- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -- --- NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -- --- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -- --- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -- --- USE OR OTHER DEALINGS IN THE SOFTWARE. -- --- -- --- Except as contained in this notice, the name(s) of the above copyright -- --- holders shall not be used in advertising or otherwise to promote the -- --- sale, use or other dealings in this Software without prior written -- --- authorization. -- -------------------------------------------------------------------------------- --- $Id: READ.ME,v 0.7 2006/04/22 23:13:05 tom Exp $ -------------------------------------------------------------------------------- - -This is a clone of the form library that is available with typical -System V curses implementations (ETI). - -It is modelled after the documentation that comes for this library with -a 386 based SVR4 implementation (ESIX). - -The development environment was and is an ELF based Linux system. - -For things that still need doing, see the TO-DO file in the top-level -directory. - -Juergen Pfeifer diff --git a/contrib/ncurses/form/f_trace.c b/contrib/ncurses/form/f_trace.c deleted file mode 100644 index 3bb4ccd9d772..000000000000 --- a/contrib/ncurses/form/f_trace.c +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2004 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: Thomas E. Dickey * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: f_trace.c,v 1.1 2004/12/25 23:28:49 tom Exp $") - -NCURSES_EXPORT(FIELD **) -_nc_retrace_field_ptr(FIELD **code) -{ - T((T_RETURN("%p"), code)); - return code; -} - -NCURSES_EXPORT(FIELD *) -_nc_retrace_field(FIELD *code) -{ - T((T_RETURN("%p"), code)); - return code; -} - -NCURSES_EXPORT(FIELDTYPE *) -_nc_retrace_field_type(FIELDTYPE *code) -{ - T((T_RETURN("%p"), code)); - return code; -} - -NCURSES_EXPORT(FORM *) -_nc_retrace_form(FORM *code) -{ - T((T_RETURN("%p"), code)); - return code; -} - -NCURSES_EXPORT(Form_Hook) -_nc_retrace_form_hook(Form_Hook code) -{ - T((T_RETURN("%p"), code)); - return code; -} diff --git a/contrib/ncurses/form/fld_arg.c b/contrib/ncurses/form/fld_arg.c deleted file mode 100644 index f79a157aa5fc..000000000000 --- a/contrib/ncurses/form/fld_arg.c +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_arg.c,v 1.11 2004/12/25 22:20:18 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_fieldtype_arg( -| FIELDTYPE *typ, -| void * (* const make_arg)(va_list *), -| void * (* const copy_arg)(const void *), -| void (* const free_arg)(void *) ) -| -| Description : Connects to the type additional arguments necessary -| for a set_field_type call. The various function pointer -| arguments are: -| make_arg : allocates a structure for the field -| specific parameters. -| copy_arg : duplicate the structure created by -| make_arg -| free_arg : Release the memory allocated by make_arg -| or copy_arg -| -| At least make_arg must be non-NULL. -| You may pass NULL for copy_arg and free_arg if your -| make_arg function doesn't allocate memory and your -| arg fits into the storage for a (void*). -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid argument -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_fieldtype_arg(FIELDTYPE *typ, - void *(*const make_arg)(va_list *), - void *(*const copy_arg)(const void *), - void (*const free_arg) (void *)) -{ - T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"), - typ, make_arg, copy_arg, free_arg)); - - if (typ != 0 && make_arg != (void *)0) - { - typ->status |= _HAS_ARGS; - typ->makearg = make_arg; - typ->copyarg = copy_arg; - typ->freearg = free_arg; - RETURN(E_OK); - } - RETURN(E_BAD_ARGUMENT); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : void *field_arg(const FIELD *field) -| -| Description : Retrieve pointer to the fields argument structure. -| -| Return Values : Pointer to structure or NULL if none is defined. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) -field_arg(const FIELD *field) -{ - T((T_CALLED("field_arg(%p)"), field)); - returnVoidPtr(Normalize_Field(field)->arg); -} - -/* fld_arg.c ends here */ diff --git a/contrib/ncurses/form/fld_attr.c b/contrib/ncurses/form/fld_attr.c deleted file mode 100644 index c9c08384bc7f..000000000000 --- a/contrib/ncurses/form/fld_attr.c +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_attr.c,v 1.10 2004/12/11 21:33:15 tom Exp $") - -/*---------------------------------------------------------------------------- - Field-Attribute manipulation routines - --------------------------------------------------------------------------*/ -/* "Template" macro to generate a function to set a fields attribute */ -#define GEN_FIELD_ATTR_SET_FCT( name ) \ -NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\ -{\ - int res = E_BAD_ARGUMENT;\ - T((T_CALLED("set_field_" #name "(%p,%s)"), field, _traceattr(attr)));\ - if ( attr==A_NORMAL || ((attr & A_ATTRIBUTES)==attr) )\ - {\ - Normalize_Field( field );\ - if (field != 0) \ - { \ - if ((field -> name) != attr)\ - {\ - field -> name = attr;\ - res = _nc_Synchronize_Attributes( field );\ - }\ - else\ - {\ - res = E_OK;\ - }\ - }\ - }\ - RETURN(res);\ -} - -/* "Template" macro to generate a function to get a fields attribute */ -#define GEN_FIELD_ATTR_GET_FCT( name ) \ -NCURSES_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\ -{\ - T((T_CALLED("field_" #name "(%p)"), field));\ - returnAttr( A_ATTRIBUTES & (Normalize_Field( field ) -> name) );\ -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_fore(FIELD *field, chtype attr) -| -| Description : Sets the foreground of the field used to display the -| field contents. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid attributes -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -GEN_FIELD_ATTR_SET_FCT(fore) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : chtype field_fore(const FIELD *) -| -| Description : Retrieve fields foreground attribute -| -| Return Values : The foreground attribute -+--------------------------------------------------------------------------*/ -GEN_FIELD_ATTR_GET_FCT(fore) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_back(FIELD *field, chtype attr) -| -| Description : Sets the background of the field used to display the -| fields extend. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid attributes -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -GEN_FIELD_ATTR_SET_FCT(back) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : chtype field_back(const -| -| Description : Retrieve fields background attribute -| -| Return Values : The background attribute -+--------------------------------------------------------------------------*/ -GEN_FIELD_ATTR_GET_FCT(back) - -/* fld_attr.c ends here */ diff --git a/contrib/ncurses/form/fld_current.c b/contrib/ncurses/form/fld_current.c deleted file mode 100644 index 7c3a90af511d..000000000000 --- a/contrib/ncurses/form/fld_current.c +++ /dev/null @@ -1,137 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_current.c,v 1.11 2004/12/25 22:40:13 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_current_field(FORM * form,FIELD * field) -| -| Description : Set the current field of the form to the specified one. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form or field pointer -| E_REQUEST_DENIED - field not selectable -| E_BAD_STATE - called from a hook routine -| E_INVALID_FIELD - current field can't be left -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_current_field(FORM *form, FIELD *field) -{ - int err = E_OK; - - T((T_CALLED("set_current_field(%p,%p)"), form, field)); - if (form == 0 || field == 0) - { - RETURN(E_BAD_ARGUMENT); - } - else if ((form != field->form) || Field_Is_Not_Selectable(field)) - { - RETURN(E_REQUEST_DENIED); - } - else if ((form->status & _POSTED) == 0) - { - form->current = field; - form->curpage = field->page; - } - else - { - if ((form->status & _IN_DRIVER) != 0) - { - err = E_BAD_STATE; - } - else - { - if (form->current != field) - { - if (!_nc_Internal_Validation(form)) - { - err = E_INVALID_FIELD; - } - else - { - Call_Hook(form, fieldterm); - if (field->page != form->curpage) - { - Call_Hook(form, formterm); - err = _nc_Set_Form_Page(form, (int)field->page, field); - Call_Hook(form, forminit); - } - else - { - err = _nc_Set_Current_Field(form, field); - } - Call_Hook(form, fieldinit); - (void)_nc_Refresh_Current_Field(form); - } - } - } - } - RETURN(err); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD *current_field(const FORM * form) -| -| Description : Return the current field. -| -| Return Values : Pointer to the current field. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) -current_field(const FORM *form) -{ - T((T_CALLED("current_field(%p)"), form)); - returnField(Normalize_Form(form)->current); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_index(const FIELD * field) -| -| Description : Return the index of the field in the field-array of -| the form. -| -| Return Values : >= 0 : field index -| -1 : fieldpointer invalid or field not connected -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_index(const FIELD *field) -{ - T((T_CALLED("field_index(%p)"), field)); - returnCode((field != 0 && field->form != 0) ? (int)field->index : -1); -} - -/* fld_current.c ends here */ diff --git a/contrib/ncurses/form/fld_def.c b/contrib/ncurses/form/fld_def.c deleted file mode 100644 index 3559ba67241c..000000000000 --- a/contrib/ncurses/form/fld_def.c +++ /dev/null @@ -1,399 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2005,2007 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_def.c,v 1.36 2007/10/13 19:29:58 tom Exp $") - -/* this can't be readonly */ -static FIELD default_field = -{ - 0, /* status */ - 0, /* rows */ - 0, /* cols */ - 0, /* frow */ - 0, /* fcol */ - 0, /* drows */ - 0, /* dcols */ - 0, /* maxgrow */ - 0, /* nrow */ - 0, /* nbuf */ - NO_JUSTIFICATION, /* just */ - 0, /* page */ - 0, /* index */ - (int)' ', /* pad */ - A_NORMAL, /* fore */ - A_NORMAL, /* back */ - ALL_FIELD_OPTS, /* opts */ - (FIELD *)0, /* snext */ - (FIELD *)0, /* sprev */ - (FIELD *)0, /* link */ - (FORM *)0, /* form */ - (FIELDTYPE *)0, /* type */ - (char *)0, /* arg */ - (FIELD_CELL *)0, /* buf */ - (char *)0 /* usrptr */ - NCURSES_FIELD_EXTENSION -}; - -NCURSES_EXPORT_VAR(FIELD *) -_nc_Default_Field = &default_field; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : TypeArgument *_nc_Make_Argument( -| const FIELDTYPE *typ, -| va_list *ap, -| int *err ) -| -| Description : Create an argument structure for the specified type. -| Use the type-dependent argument list to construct -| it. -| -| Return Values : Pointer to argument structure. Maybe NULL. -| In case of an error in *err an error counter is increased. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(TypeArgument *) -_nc_Make_Argument(const FIELDTYPE *typ, va_list *ap, int *err) -{ - TypeArgument *res = (TypeArgument *)0; - TypeArgument *p; - - if (typ != 0 && (typ->status & _HAS_ARGS) != 0) - { - assert(err != 0 && ap != (va_list *)0); - if ((typ->status & _LINKED_TYPE) != 0) - { - p = typeMalloc(TypeArgument, 1); - - if (p != 0) - { - p->left = _nc_Make_Argument(typ->left, ap, err); - p->right = _nc_Make_Argument(typ->right, ap, err); - return p; - } - else - { - *err += 1; - } - } - else - { - assert(typ->makearg != (void *)0); - if (!(res = (TypeArgument *)typ->makearg(ap))) - { - *err += 1; - } - } - } - return res; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : TypeArgument *_nc_Copy_Argument(const FIELDTYPE *typ, -| const TypeArgument *argp, -| int *err ) -| -| Description : Create a copy of an argument structure for the specified -| type. -| -| Return Values : Pointer to argument structure. Maybe NULL. -| In case of an error in *err an error counter is increased. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(TypeArgument *) -_nc_Copy_Argument(const FIELDTYPE *typ, const TypeArgument *argp, int *err) -{ - TypeArgument *res = (TypeArgument *)0; - TypeArgument *p; - - if (typ != 0 && (typ->status & _HAS_ARGS) != 0) - { - assert(err != 0 && argp != 0); - if ((typ->status & _LINKED_TYPE) != 0) - { - p = typeMalloc(TypeArgument, 1); - - if (p != 0) - { - p->left = _nc_Copy_Argument(typ, argp->left, err); - p->right = _nc_Copy_Argument(typ, argp->right, err); - return p; - } - *err += 1; - } - else - { - if (typ->copyarg != (void *)0) - { - if (!(res = (TypeArgument *)(typ->copyarg((const void *)argp)))) - { - *err += 1; - } - } - else - { - res = (TypeArgument *)argp; - } - } - } - return res; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : void _nc_Free_Argument(const FIELDTYPE *typ, -| TypeArgument * argp ) -| -| Description : Release memory associated with the argument structure -| for the given fieldtype. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Free_Argument(const FIELDTYPE *typ, TypeArgument *argp) -{ - if (typ != 0 && (typ->status & _HAS_ARGS) != 0) - { - if ((typ->status & _LINKED_TYPE) != 0) - { - assert(argp != 0); - _nc_Free_Argument(typ->left, argp->left); - _nc_Free_Argument(typ->right, argp->right); - free(argp); - } - else - { - if (typ->freearg != (void *)0) - { - typ->freearg((void *)argp); - } - } - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : bool _nc_Copy_Type( FIELD *dst, FIELD const *src ) -| -| Description : Copy argument structure of field src to field dst -| -| Return Values : TRUE - copy worked -| FALSE - error occurred -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -_nc_Copy_Type(FIELD *dst, FIELD const *src) -{ - int err = 0; - - assert(dst != 0 && src != 0); - - dst->type = src->type; - dst->arg = (void *)_nc_Copy_Argument(src->type, (TypeArgument *)(src->arg), &err); - - if (err != 0) - { - _nc_Free_Argument(dst->type, (TypeArgument *)(dst->arg)); - dst->type = (FIELDTYPE *)0; - dst->arg = (void *)0; - return FALSE; - } - else - { - if (dst->type != 0) - { - dst->type->ref++; - } - return TRUE; - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : void _nc_Free_Type( FIELD *field ) -| -| Description : Release Argument structure for this field -| -| Return Values : - -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Free_Type(FIELD *field) -{ - assert(field != 0); - if (field->type != 0) - { - field->type->ref--; - } - _nc_Free_Argument(field->type, (TypeArgument *)(field->arg)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD *new_field( int rows, int cols, -| int frow, int fcol, -| int nrow, int nbuf ) -| -| Description : Create a new field with this many 'rows' and 'cols', -| starting at 'frow/fcol' in the subwindow of the form. -| Allocate 'nrow' off-screen rows and 'nbuf' additional -| buffers. If an error occurs, errno is set to -| -| E_BAD_ARGUMENT - invalid argument -| E_SYSTEM_ERROR - system error -| -| Return Values : Pointer to the new field or NULL if failure. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) -new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf) -{ - static const FIELD_CELL blank = BLANK; - static const FIELD_CELL zeros = ZEROS; - - FIELD *New_Field = (FIELD *)0; - int err = E_BAD_ARGUMENT; - - T((T_CALLED("new_field(%d,%d,%d,%d,%d,%d)"), rows, cols, frow, fcol, nrow, nbuf)); - if (rows > 0 && - cols > 0 && - frow >= 0 && - fcol >= 0 && - nrow >= 0 && - nbuf >= 0 && - ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */ - (New_Field = typeMalloc(FIELD, 1)) != 0) - { - T((T_CREATE("field %p"), New_Field)); - *New_Field = default_field; - New_Field->rows = rows; - New_Field->cols = cols; - New_Field->drows = rows + nrow; - New_Field->dcols = cols; - New_Field->frow = frow; - New_Field->fcol = fcol; - New_Field->nrow = nrow; - New_Field->nbuf = nbuf; - New_Field->link = New_Field; - -#if USE_WIDEC_SUPPORT - New_Field->working = newpad(1, Buffer_Length(New_Field) + 1); - New_Field->expanded = typeCalloc(char *, 1 + (unsigned)nbuf); -#endif - - if (_nc_Copy_Type(New_Field, &default_field)) - { - size_t len; - - len = Total_Buffer_Size(New_Field); - if ((New_Field->buf = (FIELD_CELL *)malloc(len))) - { - /* Prefill buffers with blanks and insert terminating zeroes - between buffers */ - int i, j; - int cells = Buffer_Length(New_Field); - - for (i = 0; i <= New_Field->nbuf; i++) - { - FIELD_CELL *buffer = &(New_Field->buf[(cells + 1) * i]); - - for (j = 0; j < cells; ++j) - { - buffer[j] = blank; - } - buffer[j] = zeros; - } - returnField(New_Field); - } - } - } - - if (New_Field) - free_field(New_Field); - - SET_ERROR(err); - returnField((FIELD *)0); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int free_field( FIELD *field ) -| -| Description : Frees the storage allocated for the field. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer -| E_CONNECTED - field is connected -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -free_field(FIELD *field) -{ - T((T_CALLED("free_field(%p)"), field)); - if (!field) - { - RETURN(E_BAD_ARGUMENT); - } - else if (field->form != 0) - { - RETURN(E_CONNECTED); - } - else if (field == field->link) - { - if (field->buf != 0) - free(field->buf); - } - else - { - FIELD *f; - - for (f = field; f->link != field; f = f->link) - { - } - f->link = field->link; - } - _nc_Free_Type(field); -#if USE_WIDEC_SUPPORT - if (field->expanded != 0) - { - int n; - - for (n = 0; n <= field->nbuf; ++n) - { - FreeIfNeeded(field->expanded[n]); - } - free(field->expanded); - (void)delwin(field->working); - } -#endif - free(field); - RETURN(E_OK); -} - -/* fld_def.c ends here */ diff --git a/contrib/ncurses/form/fld_dup.c b/contrib/ncurses/form/fld_dup.c deleted file mode 100644 index bbc38a3eb715..000000000000 --- a/contrib/ncurses/form/fld_dup.c +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2007 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_dup.c,v 1.12 2007/10/13 19:30:21 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD *dup_field(FIELD *field, int frow, int fcol) -| -| Description : Duplicates the field at the specified position. All -| field attributes and the buffers are copied. -| If an error occurs, errno is set to -| -| E_BAD_ARGUMENT - invalid argument -| E_SYSTEM_ERROR - system error -| -| Return Values : Pointer to the new field or NULL if failure -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) -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)); - 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)); - *New_Field = *_nc_Default_Field; - New_Field->frow = frow; - New_Field->fcol = fcol; - New_Field->link = New_Field; - New_Field->rows = field->rows; - New_Field->cols = field->cols; - New_Field->nrow = field->nrow; - New_Field->drows = field->drows; - New_Field->dcols = field->dcols; - New_Field->maxgrow = field->maxgrow; - New_Field->nbuf = field->nbuf; - New_Field->just = field->just; - New_Field->fore = field->fore; - New_Field->back = field->back; - New_Field->pad = field->pad; - New_Field->opts = field->opts; - New_Field->usrptr = field->usrptr; - - if (_nc_Copy_Type(New_Field, field)) - { - size_t i, len; - - len = Total_Buffer_Size(New_Field); - if ((New_Field->buf = (FIELD_CELL *)malloc(len))) - { - for (i = 0; i < len; ++i) - New_Field->buf[i] = field->buf[i]; - returnField(New_Field); - } - } - } - - if (New_Field) - free_field(New_Field); - - SET_ERROR(err); - returnField((FIELD *)0); -} - -/* fld_dup.c ends here */ diff --git a/contrib/ncurses/form/fld_ftchoice.c b/contrib/ncurses/form/fld_ftchoice.c deleted file mode 100644 index 9237f96d1d0c..000000000000 --- a/contrib/ncurses/form/fld_ftchoice.c +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_ftchoice.c,v 1.9 2004/12/11 21:44:57 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_fieldtype_choice( -| FIELDTYPE *typ, -| bool (* const next_choice)(FIELD *,const void *), -| bool (* const prev_choice)(FIELD *,const void *)) -| -| Description : Define implementation of enumeration requests. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid arguments -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -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)); - - if (!typ || !next_choice || !prev_choice) - RETURN(E_BAD_ARGUMENT); - - typ->status |= _HAS_CHOICE; - typ->next = next_choice; - typ->prev = prev_choice; - RETURN(E_OK); -} - -/* fld_ftchoice.c ends here */ diff --git a/contrib/ncurses/form/fld_ftlink.c b/contrib/ncurses/form/fld_ftlink.c deleted file mode 100644 index 4ed2219262aa..000000000000 --- a/contrib/ncurses/form/fld_ftlink.c +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2007 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_ftlink.c,v 1.13 2007/10/13 19:30:35 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELDTYPE *link_fieldtype( -| FIELDTYPE *type1, -| FIELDTYPE *type2) -| -| Description : Create a new fieldtype built from the two given types. -| They are connected by an logical 'OR'. -| If an error occurs, errno is set to -| E_BAD_ARGUMENT - invalid arguments -| E_SYSTEM_ERROR - system error (no memory) -| -| Return Values : Fieldtype pointer or NULL if error occurred. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) -link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2) -{ - FIELDTYPE *nftyp = (FIELDTYPE *)0; - - T((T_CALLED("link_fieldtype(%p,%p)"), type1, type2)); - if (type1 && type2) - { - nftyp = typeMalloc(FIELDTYPE, 1); - - if (nftyp) - { - T((T_CREATE("fieldtype %p"), nftyp)); - *nftyp = *_nc_Default_FieldType; - nftyp->status |= _LINKED_TYPE; - if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS)) - nftyp->status |= _HAS_ARGS; - if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE)) - nftyp->status |= _HAS_CHOICE; - nftyp->left = type1; - nftyp->right = type2; - type1->ref++; - type2->ref++; - } - else - { - SET_ERROR(E_SYSTEM_ERROR); - } - } - else - { - SET_ERROR(E_BAD_ARGUMENT); - } - returnFieldType(nftyp); -} - -/* fld_ftlink.c ends here */ diff --git a/contrib/ncurses/form/fld_info.c b/contrib/ncurses/form/fld_info.c deleted file mode 100644 index 324198c42bae..000000000000 --- a/contrib/ncurses/form/fld_info.c +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_info.c,v 1.10 2004/12/11 22:24:57 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_info(const FIELD *field, -| int *rows, int *cols, -| int *frow, int *fcol, -| int *nrow, int *nbuf) -| -| Description : Retrieve infos about the fields creation parameters. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_info(const FIELD *field, - int *rows, int *cols, - int *frow, int *fcol, - int *nrow, int *nbuf) -{ - T((T_CALLED("field_info(%p,%p,%p,%p,%p,%p,%p)"), - field, - rows, cols, - frow, fcol, - nrow, nbuf)); - - if (!field) - RETURN(E_BAD_ARGUMENT); - - if (rows) - *rows = field->rows; - if (cols) - *cols = field->cols; - if (frow) - *frow = field->frow; - if (fcol) - *fcol = field->fcol; - if (nrow) - *nrow = field->nrow; - if (nbuf) - *nbuf = field->nbuf; - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int dynamic_field_info(const FIELD *field, -| int *drows, int *dcols, -| int *maxgrow) -| -| Description : Retrieve informations about a dynamic fields current -| dynamic parameters. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid argument -+--------------------------------------------------------------------------*/ -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)); - - if (!field) - RETURN(E_BAD_ARGUMENT); - - if (drows) - *drows = field->drows; - if (dcols) - *dcols = field->dcols; - if (maxgrow) - *maxgrow = field->maxgrow; - - RETURN(E_OK); -} - -/* fld_info.c ends here */ diff --git a/contrib/ncurses/form/fld_just.c b/contrib/ncurses/form/fld_just.c deleted file mode 100644 index e021fb1cfb92..000000000000 --- a/contrib/ncurses/form/fld_just.c +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_just.c,v 1.11 2004/12/11 22:55:48 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_just(FIELD *field, int just) -| -| Description : Set the fields type of justification. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - one of the arguments was incorrect -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_just(FIELD *field, int just) -{ - int res = E_BAD_ARGUMENT; - - T((T_CALLED("set_field_just(%p,%d)"), field, just)); - - if ((just == NO_JUSTIFICATION) || - (just == JUSTIFY_LEFT) || - (just == JUSTIFY_CENTER) || - (just == JUSTIFY_RIGHT)) - { - Normalize_Field(field); - if (field->just != just) - { - field->just = just; - res = _nc_Synchronize_Attributes(field); - } - else - res = E_OK; - } - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_just( const FIELD *field ) -| -| Description : Retrieve the fields type of justification -| -| Return Values : The justification type. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_just(const FIELD *field) -{ - T((T_CALLED("field_just(%p)"), field)); - returnCode(Normalize_Field(field)->just); -} - -/* fld_just.c ends here */ diff --git a/contrib/ncurses/form/fld_link.c b/contrib/ncurses/form/fld_link.c deleted file mode 100644 index 0aac7db78d12..000000000000 --- a/contrib/ncurses/form/fld_link.c +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2007 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_link.c,v 1.11 2007/10/13 19:30:43 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD *link_field(FIELD *field, int frow, int fcol) -| -| Description : Duplicates the field at the specified position. The -| new field shares its buffers with the original one, -| the attributes are independent. -| If an error occurs, errno is set to -| -| E_BAD_ARGUMENT - invalid argument -| E_SYSTEM_ERROR - system error -| -| Return Values : Pointer to the new field or NULL if failure -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) -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)); - 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)); - *New_Field = *_nc_Default_Field; - New_Field->frow = frow; - New_Field->fcol = fcol; - - New_Field->link = field->link; - field->link = New_Field; - - New_Field->buf = field->buf; - New_Field->rows = field->rows; - New_Field->cols = field->cols; - New_Field->nrow = field->nrow; - New_Field->nbuf = field->nbuf; - New_Field->drows = field->drows; - New_Field->dcols = field->dcols; - New_Field->maxgrow = field->maxgrow; - New_Field->just = field->just; - New_Field->fore = field->fore; - New_Field->back = field->back; - New_Field->pad = field->pad; - New_Field->opts = field->opts; - New_Field->usrptr = field->usrptr; - - if (_nc_Copy_Type(New_Field, field)) - returnField(New_Field); - } - - if (New_Field) - free_field(New_Field); - - SET_ERROR(err); - returnField((FIELD *)0); -} - -/* fld_link.c ends here */ diff --git a/contrib/ncurses/form/fld_max.c b/contrib/ncurses/form/fld_max.c deleted file mode 100644 index 7f5352e00d6e..000000000000 --- a/contrib/ncurses/form/fld_max.c +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_max.c,v 1.9 2004/12/11 21:51:54 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_max_field(FIELD *field, int maxgrow) -| -| Description : Set the maximum growth for a dynamic field. If maxgrow=0 -| the field may grow to any possible size. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid argument -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_max_field(FIELD *field, int maxgrow) -{ - T((T_CALLED("set_max_field(%p,%d)"), field, maxgrow)); - - if (!field || (maxgrow < 0)) - RETURN(E_BAD_ARGUMENT); - else - { - bool single_line_field = Single_Line_Field(field); - - if (maxgrow > 0) - { - if ((single_line_field && (maxgrow < field->dcols)) || - (!single_line_field && (maxgrow < field->drows))) - RETURN(E_BAD_ARGUMENT); - } - field->maxgrow = maxgrow; - field->status &= ~_MAY_GROW; - if (!(field->opts & O_STATIC)) - { - if ((maxgrow == 0) || - (single_line_field && (field->dcols < maxgrow)) || - (!single_line_field && (field->drows < maxgrow))) - field->status |= _MAY_GROW; - } - } - RETURN(E_OK); -} - -/* fld_max.c ends here */ diff --git a/contrib/ncurses/form/fld_move.c b/contrib/ncurses/form/fld_move.c deleted file mode 100644 index d9ceaaec2c9c..000000000000 --- a/contrib/ncurses/form/fld_move.c +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_move.c,v 1.9 2004/12/11 21:52:44 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int move_field(FIELD *field,int frow, int fcol) -| -| Description : Moves the disconnected field to the new location in -| the forms subwindow. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid argument passed -| E_CONNECTED - field is connected -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -move_field(FIELD *field, int frow, int fcol) -{ - T((T_CALLED("move_field(%p,%d,%d)"), field, frow, fcol)); - - if (!field || (frow < 0) || (fcol < 0)) - RETURN(E_BAD_ARGUMENT); - - if (field->form) - RETURN(E_CONNECTED); - - field->frow = frow; - field->fcol = fcol; - RETURN(E_OK); -} - -/* fld_move.c ends here */ diff --git a/contrib/ncurses/form/fld_newftyp.c b/contrib/ncurses/form/fld_newftyp.c deleted file mode 100644 index c2984b10e3c7..000000000000 --- a/contrib/ncurses/form/fld_newftyp.c +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2007 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_newftyp.c,v 1.15 2007/10/13 19:30:55 tom Exp $") - -static FIELDTYPE const default_fieldtype = -{ - 0, /* status */ - 0L, /* reference count */ - (FIELDTYPE *)0, /* pointer to left operand */ - (FIELDTYPE *)0, /* pointer to right operand */ - 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 */ -}; - -NCURSES_EXPORT_VAR(const FIELDTYPE *) -_nc_Default_FieldType = &default_fieldtype; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELDTYPE *new_fieldtype( -| bool (* const field_check)(FIELD *,const void *), -| bool (* const char_check) (int, const void *) ) -| -| Description : Create a new fieldtype. The application programmer must -| write a field_check and a char_check function and give -| them as input to this call. -| If an error occurs, errno is set to -| E_BAD_ARGUMENT - invalid arguments -| E_SYSTEM_ERROR - system error (no memory) -| -| Return Values : Fieldtype pointer or NULL if error occurred -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) -new_fieldtype(bool (*const field_check) (FIELD *, const void *), - bool (*const char_check) (int, const void *)) -{ - FIELDTYPE *nftyp = (FIELDTYPE *)0; - - T((T_CALLED("new_fieldtype(%p,%p)"), field_check, char_check)); - if ((field_check) || (char_check)) - { - nftyp = typeMalloc(FIELDTYPE, 1); - - if (nftyp) - { - T((T_CREATE("fieldtype %p"), nftyp)); - *nftyp = default_fieldtype; - nftyp->fcheck = field_check; - nftyp->ccheck = char_check; - } - else - { - SET_ERROR(E_SYSTEM_ERROR); - } - } - else - { - SET_ERROR(E_BAD_ARGUMENT); - } - returnFieldType(nftyp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int free_fieldtype(FIELDTYPE *typ) -| -| Description : Release the memory associated with this fieldtype. -| -| Return Values : E_OK - success -| E_CONNECTED - there are fields referencing the type -| E_BAD_ARGUMENT - invalid fieldtype pointer -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -free_fieldtype(FIELDTYPE *typ) -{ - T((T_CALLED("free_fieldtype(%p)"), typ)); - - if (!typ) - RETURN(E_BAD_ARGUMENT); - - if (typ->ref != 0) - RETURN(E_CONNECTED); - - if (typ->status & _RESIDENT) - RETURN(E_CONNECTED); - - if (typ->status & _LINKED_TYPE) - { - if (typ->left) - typ->left->ref--; - if (typ->right) - typ->right->ref--; - } - free(typ); - RETURN(E_OK); -} - -/* fld_newftyp.c ends here */ diff --git a/contrib/ncurses/form/fld_opts.c b/contrib/ncurses/form/fld_opts.c deleted file mode 100644 index 3c881acf081a..000000000000 --- a/contrib/ncurses/form/fld_opts.c +++ /dev/null @@ -1,138 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_opts.c,v 1.11 2004/12/11 21:55:46 tom Exp $") - -/*---------------------------------------------------------------------------- - Field-Options manipulation routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_opts(FIELD *field, Field_Options opts) -| -| Description : Turns on the named options for this field and turns -| off all the remaining options. -| -| Return Values : E_OK - success -| E_CURRENT - the field is the current field -| E_BAD_ARGUMENT - invalid options -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_opts(FIELD *field, Field_Options opts) -{ - int res = E_BAD_ARGUMENT; - - T((T_CALLED("set_field_opts(%p,%d)"), field, opts)); - - opts &= ALL_FIELD_OPTS; - if (!(opts & ~ALL_FIELD_OPTS)) - res = _nc_Synchronize_Options(Normalize_Field(field), opts); - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : Field_Options field_opts(const FIELD *field) -| -| Description : Retrieve the fields options. -| -| Return Values : The options. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(Field_Options) -field_opts(const FIELD *field) -{ - T((T_CALLED("field_opts(%p)"), field)); - - returnCode(ALL_FIELD_OPTS & Normalize_Field(field)->opts); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_opts_on(FIELD *field, Field_Options opts) -| -| Description : Turns on the named options for this field and all the -| remaining options are unchanged. -| -| Return Values : E_OK - success -| E_CURRENT - the field is the current field -| E_BAD_ARGUMENT - invalid options -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_opts_on(FIELD *field, Field_Options opts) -{ - int res = E_BAD_ARGUMENT; - - T((T_CALLED("field_opts_on(%p,%d)"), field, opts)); - - opts &= ALL_FIELD_OPTS; - if (!(opts & ~ALL_FIELD_OPTS)) - { - Normalize_Field(field); - res = _nc_Synchronize_Options(field, field->opts | opts); - } - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_opts_off(FIELD *field, Field_Options opts) -| -| Description : Turns off the named options for this field and all the -| remaining options are unchanged. -| -| Return Values : E_OK - success -| E_CURRENT - the field is the current field -| E_BAD_ARGUMENT - invalid options -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_opts_off(FIELD *field, Field_Options opts) -{ - int res = E_BAD_ARGUMENT; - - T((T_CALLED("field_opts_off(%p,%d)"), field, opts)); - - opts &= ALL_FIELD_OPTS; - if (!(opts & ~ALL_FIELD_OPTS)) - { - Normalize_Field(field); - res = _nc_Synchronize_Options(field, field->opts & ~opts); - } - RETURN(res); -} - -/* fld_opts.c ends here */ diff --git a/contrib/ncurses/form/fld_pad.c b/contrib/ncurses/form/fld_pad.c deleted file mode 100644 index 63d8ad1cdbfa..000000000000 --- a/contrib/ncurses/form/fld_pad.c +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_pad.c,v 1.9 2004/12/11 21:56:49 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_pad(FIELD *field, int ch) -| -| Description : Set the pad character used to fill the field. This must -| be a printable character. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer or pad character -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_pad(FIELD *field, int ch) -{ - int res = E_BAD_ARGUMENT; - - T((T_CALLED("set_field_pad(%p,%d)"), field, ch)); - - Normalize_Field(field); - if (isprint(UChar(ch))) - { - if (field->pad != ch) - { - field->pad = ch; - res = _nc_Synchronize_Attributes(field); - } - else - res = E_OK; - } - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_pad(const FIELD *field) -| -| Description : Retrieve the fields pad character. -| -| Return Values : The pad character. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_pad(const FIELD *field) -{ - T((T_CALLED("field_pad(%p)"), field)); - - returnCode(Normalize_Field(field)->pad); -} - -/* fld_pad.c ends here */ diff --git a/contrib/ncurses/form/fld_page.c b/contrib/ncurses/form/fld_page.c deleted file mode 100644 index e1af4962b148..000000000000 --- a/contrib/ncurses/form/fld_page.c +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_page.c,v 1.9 2004/12/11 21:58:19 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_new_page(FIELD *field, bool new_page_flag) -| -| Description : Marks the field as the beginning of a new page of -| the form. -| -| Return Values : E_OK - success -| E_CONNECTED - field is connected -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_new_page(FIELD *field, bool new_page_flag) -{ - T((T_CALLED("set_new_page(%p,%d)"), field, new_page_flag)); - - Normalize_Field(field); - if (field->form) - RETURN(E_CONNECTED); - - if (new_page_flag) - field->status |= _NEWPAGE; - else - field->status &= ~_NEWPAGE; - - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : bool new_page(const FIELD *field) -| -| Description : Retrieve the info whether or not the field starts a -| new page on the form. -| -| Return Values : TRUE - field starts a new page -| FALSE - field doesn't start a new page -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -new_page(const FIELD *field) -{ - T((T_CALLED("new_page(%p)"), field)); - - returnBool((Normalize_Field(field)->status & _NEWPAGE) ? TRUE : FALSE); -} - -/* fld_page.c ends here */ diff --git a/contrib/ncurses/form/fld_stat.c b/contrib/ncurses/form/fld_stat.c deleted file mode 100644 index b85b4d55f244..000000000000 --- a/contrib/ncurses/form/fld_stat.c +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_stat.c,v 1.11 2004/12/11 22:28:00 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_status(FIELD *field, bool status) -| -| Description : Set or clear the 'changed' indication flag for that -| fields primary buffer. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_status(FIELD *field, bool status) -{ - T((T_CALLED("set_field_status(%p,%d)"), field, status)); - - Normalize_Field(field); - - if (status) - field->status |= _CHANGED; - else - field->status &= ~_CHANGED; - - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : bool field_status(const FIELD *field) -| -| Description : Retrieve the value of the 'changed' indication flag -| for that fields primary buffer. -| -| Return Values : TRUE - buffer has been changed -| FALSE - buffer has not been changed -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -field_status(const FIELD *field) -{ - T((T_CALLED("field_status(%p)"), field)); - - returnBool((Normalize_Field(field)->status & _CHANGED) ? TRUE : FALSE); -} - -/* fld_stat.c ends here */ diff --git a/contrib/ncurses/form/fld_type.c b/contrib/ncurses/form/fld_type.c deleted file mode 100644 index c9a3fbe5c804..000000000000 --- a/contrib/ncurses/form/fld_type.c +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_type.c,v 1.15 2004/12/25 22:24:10 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_type(FIELD *field, FIELDTYPE *type,...) -| -| Description : Associate the specified fieldtype with the field. -| Certain field types take additional arguments. Look -| at the spec of the field types ! -| -| Return Values : E_OK - success -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_type(FIELD *field, FIELDTYPE *type,...) -{ - va_list ap; - int res = E_SYSTEM_ERROR; - int err = 0; - - T((T_CALLED("set_field_type(%p,%p)"), field, type)); - - va_start(ap, type); - - Normalize_Field(field); - _nc_Free_Type(field); - - field->type = type; - field->arg = (void *)_nc_Make_Argument(field->type, &ap, &err); - - if (err) - { - _nc_Free_Argument(field->type, (TypeArgument *)(field->arg)); - field->type = (FIELDTYPE *)0; - field->arg = (void *)0; - } - else - { - res = E_OK; - if (field->type) - field->type->ref++; - } - - va_end(ap); - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELDTYPE *field_type(const FIELD *field) -| -| Description : Retrieve the associated fieldtype for this field. -| -| Return Values : Pointer to fieldtype of NULL if none is defined. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) -field_type(const FIELD *field) -{ - T((T_CALLED("field_type(%p)"), field)); - returnFieldType(Normalize_Field(field)->type); -} - -/* fld_type.c ends here */ diff --git a/contrib/ncurses/form/fld_user.c b/contrib/ncurses/form/fld_user.c deleted file mode 100644 index 323622c7b379..000000000000 --- a/contrib/ncurses/form/fld_user.c +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fld_user.c,v 1.15 2004/12/25 22:24:50 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_userptr(FIELD *field, void *usrptr) -| -| Description : Set the pointer that is reserved in any field to store -| application relevant informations -| -| Return Values : E_OK - on success -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_userptr(FIELD *field, void *usrptr) -{ - T((T_CALLED("set_field_userptr(%p,%p)"), field, usrptr)); - - Normalize_Field(field)->usrptr = usrptr; - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : void *field_userptr(const FIELD *field) -| -| Description : Return the pointer that is reserved in any field to -| store application relevant informations. -| -| Return Values : Value of pointer. If no such pointer has been set, -| NULL is returned -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) -field_userptr(const FIELD *field) -{ - T((T_CALLED("field_userptr(%p)"), field)); - returnVoidPtr(Normalize_Field(field)->usrptr); -} - -/* fld_user.c ends here */ diff --git a/contrib/ncurses/form/form.h b/contrib/ncurses/form/form.h deleted file mode 100644 index a4691a86e8e7..000000000000 --- a/contrib/ncurses/form/form.h +++ /dev/null @@ -1,403 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -/* $Id: form.h,v 0.20 2004/12/04 22:22:10 tom Exp $ */ - -#ifndef FORM_H -#define FORM_H - -#include <curses.h> -#include <eti.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef FORM_PRIV_H -typedef void *FIELD_CELL; -#endif - -#ifndef NCURSES_FIELD_INTERNALS -#define NCURSES_FIELD_INTERNALS /* nothing */ -#endif - -typedef int Form_Options; -typedef int Field_Options; - - /********** - * _PAGE * - **********/ - -typedef struct { - short pmin; /* index of first field on page */ - short pmax; /* index of last field on page */ - short smin; /* index of top leftmost field on page */ - short smax; /* index of bottom rightmost field on page */ -} _PAGE; - - /********** - * FIELD * - **********/ - -typedef struct fieldnode { - unsigned short status; /* flags */ - short rows; /* size in rows */ - short cols; /* size in cols */ - short frow; /* first row */ - short fcol; /* first col */ - int drows; /* dynamic rows */ - int dcols; /* dynamic cols */ - int maxgrow; /* maximum field growth */ - int nrow; /* off-screen rows */ - short nbuf; /* additional buffers */ - short just; /* justification */ - short page; /* page on form */ - short index; /* into form -> field */ - int pad; /* pad character */ - chtype fore; /* foreground attribute */ - chtype back; /* background attribute */ - Field_Options opts; /* options */ - struct fieldnode * snext; /* sorted order pointer */ - struct fieldnode * sprev; /* sorted order pointer */ - struct fieldnode * link; /* linked field chain */ - struct formnode * form; /* containing form */ - struct typenode * type; /* field type */ - void * arg; /* argument for type */ - FIELD_CELL * buf; /* field buffers */ - void * usrptr; /* user pointer */ - /* - * The wide-character configuration requires extra information. Because - * there are existing applications that manipulate the members of FIELD - * directly, we cannot make the struct opaque. Offsets of members up to - * this point are the same in the narrow- and wide-character configuration. - * But note that the type of buf depends on the configuration, and is made - * opaque for that reason. - */ - 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 */ - short rows; /* size in rows */ - short cols; /* size in cols */ - int currow; /* current row in field window */ - int curcol; /* current col in field window */ - int toprow; /* in scrollable field window */ - int begincol; /* in horiz. scrollable field */ - short maxfield; /* number of fields */ - short maxpage; /* number of pages */ - short curpage; /* index into page */ - Form_Options opts; /* options */ - WINDOW * win; /* window */ - WINDOW * sub; /* subwindow */ - WINDOW * w; /* window for current field */ - FIELD ** field; /* field [maxfield] */ - FIELD * current; /* current field */ - _PAGE * page; /* page [maxpage] */ - void * usrptr; /* user pointer */ - - void (*forminit)(struct formnode *); - void (*formterm)(struct formnode *); - void (*fieldinit)(struct formnode *); - void (*fieldterm)(struct formnode *); - -} FORM; - -typedef void (*Form_Hook)(FORM *); - - /*************************** - * miscellaneous #defines * - ***************************/ - -/* field justification */ -#define NO_JUSTIFICATION (0) -#define JUSTIFY_LEFT (1) -#define JUSTIFY_CENTER (2) -#define JUSTIFY_RIGHT (3) - -/* field options */ -#define O_VISIBLE (0x0001U) -#define O_ACTIVE (0x0002U) -#define O_PUBLIC (0x0004U) -#define O_EDIT (0x0008U) -#define O_WRAP (0x0010U) -#define O_BLANK (0x0020U) -#define O_AUTOSKIP (0x0040U) -#define O_NULLOK (0x0080U) -#define O_PASSOK (0x0100U) -#define O_STATIC (0x0200U) - -/* form options */ -#define O_NL_OVERLOAD (0x0001U) -#define O_BS_OVERLOAD (0x0002U) - -/* form driver commands */ -#define REQ_NEXT_PAGE (KEY_MAX + 1) /* move to next page */ -#define REQ_PREV_PAGE (KEY_MAX + 2) /* move to previous page */ -#define REQ_FIRST_PAGE (KEY_MAX + 3) /* move to first page */ -#define REQ_LAST_PAGE (KEY_MAX + 4) /* move to last page */ - -#define REQ_NEXT_FIELD (KEY_MAX + 5) /* move to next field */ -#define REQ_PREV_FIELD (KEY_MAX + 6) /* move to previous field */ -#define REQ_FIRST_FIELD (KEY_MAX + 7) /* move to first field */ -#define REQ_LAST_FIELD (KEY_MAX + 8) /* move to last field */ -#define REQ_SNEXT_FIELD (KEY_MAX + 9) /* move to sorted next field */ -#define REQ_SPREV_FIELD (KEY_MAX + 10) /* move to sorted prev field */ -#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field */ -#define REQ_SLAST_FIELD (KEY_MAX + 12) /* move to sorted last field */ -#define REQ_LEFT_FIELD (KEY_MAX + 13) /* move to left to field */ -#define REQ_RIGHT_FIELD (KEY_MAX + 14) /* move to right to field */ -#define REQ_UP_FIELD (KEY_MAX + 15) /* move to up to field */ -#define REQ_DOWN_FIELD (KEY_MAX + 16) /* move to down to field */ - -#define REQ_NEXT_CHAR (KEY_MAX + 17) /* move to next char in field */ -#define REQ_PREV_CHAR (KEY_MAX + 18) /* move to prev char in field */ -#define REQ_NEXT_LINE (KEY_MAX + 19) /* move to next line in field */ -#define REQ_PREV_LINE (KEY_MAX + 20) /* move to prev line in field */ -#define REQ_NEXT_WORD (KEY_MAX + 21) /* move to next word in field */ -#define REQ_PREV_WORD (KEY_MAX + 22) /* move to prev word in field */ -#define REQ_BEG_FIELD (KEY_MAX + 23) /* move to first char in field */ -#define REQ_END_FIELD (KEY_MAX + 24) /* move after last char in fld */ -#define REQ_BEG_LINE (KEY_MAX + 25) /* move to beginning of line */ -#define REQ_END_LINE (KEY_MAX + 26) /* move after last char in line */ -#define REQ_LEFT_CHAR (KEY_MAX + 27) /* move left in field */ -#define REQ_RIGHT_CHAR (KEY_MAX + 28) /* move right in field */ -#define REQ_UP_CHAR (KEY_MAX + 29) /* move up in field */ -#define REQ_DOWN_CHAR (KEY_MAX + 30) /* move down in field */ - -#define REQ_NEW_LINE (KEY_MAX + 31) /* insert/overlay new line */ -#define REQ_INS_CHAR (KEY_MAX + 32) /* insert blank char at cursor */ -#define REQ_INS_LINE (KEY_MAX + 33) /* insert blank line at cursor */ -#define REQ_DEL_CHAR (KEY_MAX + 34) /* delete char at cursor */ -#define REQ_DEL_PREV (KEY_MAX + 35) /* delete char before cursor */ -#define REQ_DEL_LINE (KEY_MAX + 36) /* delete line at cursor */ -#define REQ_DEL_WORD (KEY_MAX + 37) /* delete word at cursor */ -#define REQ_CLR_EOL (KEY_MAX + 38) /* clear to end of line */ -#define REQ_CLR_EOF (KEY_MAX + 39) /* clear to end of field */ -#define REQ_CLR_FIELD (KEY_MAX + 40) /* clear entire field */ -#define REQ_OVL_MODE (KEY_MAX + 41) /* begin overlay mode */ -#define REQ_INS_MODE (KEY_MAX + 42) /* begin insert mode */ -#define REQ_SCR_FLINE (KEY_MAX + 43) /* scroll field forward a line */ -#define REQ_SCR_BLINE (KEY_MAX + 44) /* scroll field backward a line */ -#define REQ_SCR_FPAGE (KEY_MAX + 45) /* scroll field forward a page */ -#define REQ_SCR_BPAGE (KEY_MAX + 46) /* scroll field backward a page */ -#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */ -#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */ -#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */ -#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */ -#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */ -#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */ -#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */ -#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */ - -#define REQ_VALIDATION (KEY_MAX + 55) /* validate field */ -#define REQ_NEXT_CHOICE (KEY_MAX + 56) /* display next field choice */ -#define REQ_PREV_CHOICE (KEY_MAX + 57) /* display prev field choice */ - -#define MIN_FORM_COMMAND (KEY_MAX + 1) /* used by form_driver */ -#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver */ - -#if defined(MAX_COMMAND) -# if (MAX_FORM_COMMAND > MAX_COMMAND) -# error Something is wrong -- MAX_FORM_COMMAND is greater than MAX_COMMAND -# elif (MAX_COMMAND != (KEY_MAX + 128)) -# error Something is wrong -- MAX_COMMAND is already inconsistently defined. -# endif -#else -# define MAX_COMMAND (KEY_MAX + 128) -#endif - - /************************* - * standard field types * - *************************/ -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP; - - /************************************ - * built-in additional field types * - * They are not defined in SVr4 * - ************************************/ -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 * - ***********************/ -extern NCURSES_EXPORT(FIELDTYPE *) new_fieldtype ( - bool (* const field_check)(FIELD *,const void *), - bool (* const char_check)(int,const void *)); -extern NCURSES_EXPORT(FIELDTYPE *) link_fieldtype( - FIELDTYPE *, FIELDTYPE *); - -extern NCURSES_EXPORT(int) free_fieldtype (FIELDTYPE *); -extern NCURSES_EXPORT(int) set_fieldtype_arg (FIELDTYPE *, - void * (* const make_arg)(va_list *), - void * (* const copy_arg)(const void *), - void (* const free_arg)(void *)); -extern NCURSES_EXPORT(int) set_fieldtype_choice (FIELDTYPE *, - bool (* const next_choice)(FIELD *,const void *), - bool (* const prev_choice)(FIELD *,const void *)); - - /******************* - * FIELD routines * - *******************/ -extern NCURSES_EXPORT(FIELD *) new_field (int,int,int,int,int,int); -extern NCURSES_EXPORT(FIELD *) dup_field (FIELD *,int,int); -extern NCURSES_EXPORT(FIELD *) link_field (FIELD *,int,int); - -extern NCURSES_EXPORT(int) free_field (FIELD *); -extern NCURSES_EXPORT(int) field_info (const FIELD *,int *,int *,int *,int *,int *,int *); -extern NCURSES_EXPORT(int) dynamic_field_info (const FIELD *,int *,int *,int *); -extern NCURSES_EXPORT(int) set_max_field ( FIELD *,int); -extern NCURSES_EXPORT(int) move_field (FIELD *,int,int); -extern NCURSES_EXPORT(int) set_field_type (FIELD *,FIELDTYPE *,...); -extern NCURSES_EXPORT(int) set_new_page (FIELD *,bool); -extern NCURSES_EXPORT(int) set_field_just (FIELD *,int); -extern NCURSES_EXPORT(int) field_just (const FIELD *); -extern NCURSES_EXPORT(int) set_field_fore (FIELD *,chtype); -extern NCURSES_EXPORT(int) set_field_back (FIELD *,chtype); -extern NCURSES_EXPORT(int) set_field_pad (FIELD *,int); -extern NCURSES_EXPORT(int) field_pad (const FIELD *); -extern NCURSES_EXPORT(int) set_field_buffer (FIELD *,int,const char *); -extern NCURSES_EXPORT(int) set_field_status (FIELD *,bool); -extern NCURSES_EXPORT(int) set_field_userptr (FIELD *, void *); -extern NCURSES_EXPORT(int) set_field_opts (FIELD *,Field_Options); -extern NCURSES_EXPORT(int) field_opts_on (FIELD *,Field_Options); -extern NCURSES_EXPORT(int) field_opts_off (FIELD *,Field_Options); - -extern NCURSES_EXPORT(chtype) field_fore (const FIELD *); -extern NCURSES_EXPORT(chtype) field_back (const FIELD *); - -extern NCURSES_EXPORT(bool) new_page (const FIELD *); -extern NCURSES_EXPORT(bool) field_status (const FIELD *); - -extern NCURSES_EXPORT(void *) field_arg (const FIELD *); - -extern NCURSES_EXPORT(void *) field_userptr (const FIELD *); - -extern NCURSES_EXPORT(FIELDTYPE *) field_type (const FIELD *); - -extern NCURSES_EXPORT(char *) field_buffer (const FIELD *,int); - -extern NCURSES_EXPORT(Field_Options) field_opts (const FIELD *); - - /****************** - * FORM routines * - ******************/ - -extern NCURSES_EXPORT(FORM *) new_form (FIELD **); - -extern NCURSES_EXPORT(FIELD **) form_fields (const FORM *); -extern NCURSES_EXPORT(FIELD *) current_field (const FORM *); - -extern NCURSES_EXPORT(WINDOW *) form_win (const FORM *); -extern NCURSES_EXPORT(WINDOW *) form_sub (const FORM *); - -extern NCURSES_EXPORT(Form_Hook) form_init (const FORM *); -extern NCURSES_EXPORT(Form_Hook) form_term (const FORM *); -extern NCURSES_EXPORT(Form_Hook) field_init (const FORM *); -extern NCURSES_EXPORT(Form_Hook) field_term (const FORM *); - -extern NCURSES_EXPORT(int) free_form (FORM *); -extern NCURSES_EXPORT(int) set_form_fields (FORM *,FIELD **); -extern NCURSES_EXPORT(int) field_count (const FORM *); -extern NCURSES_EXPORT(int) set_form_win (FORM *,WINDOW *); -extern NCURSES_EXPORT(int) set_form_sub (FORM *,WINDOW *); -extern NCURSES_EXPORT(int) set_current_field (FORM *,FIELD *); -extern NCURSES_EXPORT(int) field_index (const FIELD *); -extern NCURSES_EXPORT(int) set_form_page (FORM *,int); -extern NCURSES_EXPORT(int) form_page (const FORM *); -extern NCURSES_EXPORT(int) scale_form (const FORM *,int *,int *); -extern NCURSES_EXPORT(int) set_form_init (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_form_term (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_field_init (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_field_term (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) post_form (FORM *); -extern NCURSES_EXPORT(int) unpost_form (FORM *); -extern NCURSES_EXPORT(int) pos_form_cursor (FORM *); -extern NCURSES_EXPORT(int) form_driver (FORM *,int); -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); -extern NCURSES_EXPORT(int) form_opts_off (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_request_by_name (const char *); - -extern NCURSES_EXPORT(const char *) form_request_name (int); - -extern NCURSES_EXPORT(void *) form_userptr (const FORM *); - -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 *); - -#ifdef __cplusplus - } -#endif - -#endif /* FORM_H */ diff --git a/contrib/ncurses/form/form.priv.h b/contrib/ncurses/form/form.priv.h deleted file mode 100644 index e8617f1d5747..000000000000 --- a/contrib/ncurses/form/form.priv.h +++ /dev/null @@ -1,252 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -/* $Id: form.priv.h,v 0.26 2006/12/17 19:47:09 tom Exp $ */ - -#ifndef FORM_PRIV_H -#define FORM_PRIV_H 1 - -#include "curses.priv.h" -#include "mf_common.h" - -#if USE_WIDEC_SUPPORT -#include <wchar.h> - -#if HAVE_WCTYPE_H -#include <wctype.h> -#endif - -#ifndef MB_LEN_MAX -#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */ -#endif - -#define FIELD_CELL NCURSES_CH_T - -#define NCURSES_FIELD_INTERNALS char** expanded; WINDOW *working; -#define NCURSES_FIELD_EXTENSION , (char **)0, (WINDOW *)0 - -#else - -#define FIELD_CELL char - -#define NCURSES_FIELD_EXTENSION /* nothing */ - -#endif - -#include "form.h" - -/* form status values */ -#define _OVLMODE (0x04U) /* Form is in overlay mode */ -#define _WINDOW_MODIFIED (0x10U) /* Current field window has been modified */ -#define _FCHECK_REQUIRED (0x20U) /* Current field needs validation */ - -/* field status values */ -#define _CHANGED (0x01U) /* Field has been changed */ -#define _NEWTOP (0x02U) /* Vertical scrolling occurred */ -#define _NEWPAGE (0x04U) /* field begins new page of form */ -#define _MAY_GROW (0x08U) /* dynamic field may still grow */ - -/* fieldtype status values */ -#define _LINKED_TYPE (0x01U) /* Type is a linked type */ -#define _HAS_ARGS (0x02U) /* Type has arguments */ -#define _HAS_CHOICE (0x04U) /* Type has choice methods */ -#define _RESIDENT (0x08U) /* Type is built-in */ - -/* This are the field options required to be a selectable field in field - navigation requests */ -#define O_SELECTABLE (O_ACTIVE | O_VISIBLE) - -/* If form is NULL replace form argument by default-form */ -#define Normalize_Form(form) \ - ((form) = (form != 0) ? (form) : _nc_Default_Form) - -/* If field is NULL replace field argument by default-field */ -#define Normalize_Field(field) \ - ((field) = (field != 0) ? (field) : _nc_Default_Field) - -/* Retrieve forms window */ -#define Get_Form_Window(form) \ - ((form)->sub?(form)->sub:((form)->win?(form)->win:stdscr)) - -/* Calculate the size for a single buffer for this field */ -#define Buffer_Length(field) ((field)->drows * (field)->dcols) - -/* Calculate the total size of all buffers for this field */ -#define Total_Buffer_Size(field) \ - ( (Buffer_Length(field) + 1) * (1+(field)->nbuf) * sizeof(FIELD_CELL) ) - -/* Logic to determine whether or not a field is single lined */ -#define Single_Line_Field(field) \ - (((field)->rows + (field)->nrow) == 1) - -/* Logic to determine whether or not a field is selectable */ -#define Field_Is_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)==O_SELECTABLE) -#define Field_Is_Not_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)!=O_SELECTABLE) - -typedef struct typearg - { - struct typearg *left; - struct typearg *right; - } -TypeArgument; - -/* This is a dummy request code (normally invalid) to be used internally - with the form_driver() routine to position to the first active field - on the form -*/ -#define FIRST_ACTIVE_MAGIC (-291056) - -#define ALL_FORM_OPTS ( \ - O_NL_OVERLOAD |\ - O_BS_OVERLOAD ) - -#define ALL_FIELD_OPTS (Field_Options)( \ - O_VISIBLE |\ - O_ACTIVE |\ - O_PUBLIC |\ - O_EDIT |\ - O_WRAP |\ - O_BLANK |\ - O_AUTOSKIP|\ - O_NULLOK |\ - O_PASSOK |\ - O_STATIC ) - -#define C_BLANK ' ' -#define is_blank(c) ((c)==C_BLANK) - -#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*); -extern NCURSES_EXPORT(bool) _nc_Copy_Type (FIELD*, FIELD const *); -extern NCURSES_EXPORT(void) _nc_Free_Type (FIELD *); - -extern NCURSES_EXPORT(int) _nc_Synchronize_Attributes (FIELD*); -extern NCURSES_EXPORT(int) _nc_Synchronize_Options (FIELD*, Field_Options); -extern NCURSES_EXPORT(int) _nc_Set_Form_Page (FORM*, int, FIELD*); -extern NCURSES_EXPORT(int) _nc_Refresh_Current_Field (FORM*); -extern NCURSES_EXPORT(FIELD *) _nc_First_Active_Field (FORM*); -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 USE_WIDEC_SUPPORT -extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *); -#endif - -#ifdef TRACE - -#define returnField(code) TRACE_RETURN(code,field) -#define returnFieldPtr(code) TRACE_RETURN(code,field_ptr) -#define returnForm(code) TRACE_RETURN(code,form) -#define returnFieldType(code) TRACE_RETURN(code,field_type) -#define returnFormHook(code) TRACE_RETURN(code,form_hook) - -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); - -#else /* !TRACE */ - -#define returnFieldPtr(code) return code -#define returnFieldType(code) return code -#define returnField(code) return code -#define returnForm(code) return code -#define returnFormHook(code) return code - -#endif /* TRACE/!TRACE */ - -/* - * Use Check_CTYPE_Field() to simplify FIELDTYPE's that use only the ccheck() - * function. - */ -#if USE_WIDEC_SUPPORT -#define Check_CTYPE_Field(result, buffer, width, ccheck) \ - while (*buffer && *buffer == ' ') \ - buffer++; \ - if (*buffer) \ - { \ - bool blank = FALSE; \ - int len; \ - int n; \ - wchar_t *list = _nc_Widen_String((char *)buffer, &len); \ - if (list != 0) \ - { \ - result = TRUE; \ - for (n = 0; n < len; ++n) \ - { \ - if (blank) \ - { \ - if (list[n] != ' ') \ - { \ - result = FALSE; \ - break; \ - } \ - } \ - else if (list[n] == ' ') \ - { \ - blank = TRUE; \ - result = (n + 1 >= width); \ - } \ - else if (!ccheck(list[n], NULL)) \ - { \ - result = FALSE; \ - break; \ - } \ - } \ - free(list); \ - } \ - } -#else -#define Check_CTYPE_Field(result, buffer, width, ccheck) \ - while (*buffer && *buffer == ' ') \ - buffer++; \ - if (*buffer) \ - { \ - unsigned char *s = buffer; \ - int l = -1; \ - while (*buffer && ccheck(*buffer, NULL)) \ - buffer++; \ - l = (int)(buffer - s); \ - while (*buffer && *buffer == ' ') \ - buffer++; \ - result = ((*buffer || (l < width)) ? FALSE : TRUE); \ - } -#endif - -#endif /* FORM_PRIV_H */ diff --git a/contrib/ncurses/form/frm_cursor.c b/contrib/ncurses/form/frm_cursor.c deleted file mode 100644 index 18dabab20889..000000000000 --- a/contrib/ncurses/form/frm_cursor.c +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_cursor.c,v 1.9 2004/12/11 22:01:03 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int pos_form_cursor(FORM * form) -| -| Description : Moves the form window cursor to the location required -| by the form driver to resume form processing. This may -| be needed after the application calls a curses library -| I/O routine that modifies the cursor position. -| -| Return Values : E_OK - Success -| E_SYSTEM_ERROR - System error. -| E_BAD_ARGUMENT - Invalid form pointer -| E_NOT_POSTED - Form is not posted -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -pos_form_cursor(FORM *form) -{ - int res; - - T((T_CALLED("pos_form_cursor(%p)"), form)); - - if (!form) - res = E_BAD_ARGUMENT; - else - { - if (!(form->status & _POSTED)) - res = E_NOT_POSTED; - else - res = _nc_Position_Form_Cursor(form); - } - RETURN(res); -} - -/* frm_cursor.c ends here */ diff --git a/contrib/ncurses/form/frm_data.c b/contrib/ncurses/form/frm_data.c deleted file mode 100644 index 787a17919f04..000000000000 --- a/contrib/ncurses/form/frm_data.c +++ /dev/null @@ -1,193 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_data.c,v 1.14 2005/11/26 15:34:01 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : bool data_behind(const FORM *form) -| -| Description : Check for off-screen data behind. This is nearly trivial -| because the beginning of a field is fixed. -| -| Return Values : TRUE - there are off-screen data behind -| FALSE - there are no off-screen data behind -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -data_behind(const FORM *form) -{ - bool result = FALSE; - - T((T_CALLED("data_behind(%p)"), form)); - - if (form && (form->status & _POSTED) && form->current) - { - FIELD *field; - - field = form->current; - if (!Single_Line_Field(field)) - { - result = (form->toprow == 0) ? FALSE : TRUE; - } - else - { - result = (form->begincol == 0) ? FALSE : TRUE; - } - } - returnBool(result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static char * Only_Padding( -| WINDOW *w, -| int len, -| int pad) -| -| Description : Test if 'length' cells starting at the current position -| contain a padding character. -| -| Return Values : true if only padding cells are found -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static bool -Only_Padding(WINDOW *w, int len, int pad) -{ - bool result = TRUE; - int y, x, j; - FIELD_CELL cell; - - getyx(w, y, x); - for (j = 0; j < len; ++j) - { - if (wmove(w, y, x + j) != ERR) - { -#if USE_WIDEC_SUPPORT - if (win_wch(w, &cell) != ERR) - { - if ((chtype)CharOf(cell) != ChCharOf(pad) - || cell.chars[1] != 0) - { - result = FALSE; - break; - } - } -#else - cell = winch(w); - if (ChCharOf(cell) != ChCharOf(pad)) - { - result = FALSE; - break; - } -#endif - } - else - { - /* if an error, return true: no non-padding text found */ - break; - } - } - /* no need to reset the cursor position; caller does this */ - return result; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : bool data_ahead(const FORM *form) -| -| Description : Check for off-screen data ahead. This is more difficult -| because a dynamic field has a variable end. -| -| Return Values : TRUE - there are off-screen data ahead -| FALSE - there are no off-screen data ahead -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -data_ahead(const FORM *form) -{ - bool result = FALSE; - - T((T_CALLED("data_ahead(%p)"), form)); - - if (form && (form->status & _POSTED) && form->current) - { - FIELD *field; - bool cursor_moved = FALSE; - int pos; - - field = form->current; - assert(form->w); - - if (Single_Line_Field(field)) - { - int check_len; - - pos = form->begincol + field->cols; - while (pos < field->dcols) - { - check_len = field->dcols - pos; - if (check_len >= field->cols) - check_len = field->cols; - cursor_moved = TRUE; - wmove(form->w, 0, pos); - if (Only_Padding(form->w, check_len, field->pad)) - pos += field->cols; - else - { - result = TRUE; - break; - } - } - } - else - { - pos = form->toprow + field->rows; - while (pos < field->drows) - { - cursor_moved = TRUE; - wmove(form->w, pos, 0); - pos++; - if (!Only_Padding(form->w, field->cols, field->pad)) - { - result = TRUE; - break; - } - } - } - - if (cursor_moved) - wmove(form->w, form->currow, form->curcol); - } - returnBool(result); -} - -/* frm_data.c ends here */ diff --git a/contrib/ncurses/form/frm_def.c b/contrib/ncurses/form/frm_def.c deleted file mode 100644 index c2044a39dccd..000000000000 --- a/contrib/ncurses/form/frm_def.c +++ /dev/null @@ -1,409 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_def.c,v 1.22 2007/10/13 19:31:17 tom Exp $") - -/* this can't be readonly */ -static FORM default_form = -{ - 0, /* status */ - 0, /* rows */ - 0, /* cols */ - 0, /* currow */ - 0, /* curcol */ - 0, /* toprow */ - 0, /* begincol */ - -1, /* maxfield */ - -1, /* maxpage */ - -1, /* curpage */ - ALL_FORM_OPTS, /* opts */ - (WINDOW *)0, /* win */ - (WINDOW *)0, /* sub */ - (WINDOW *)0, /* w */ - (FIELD **)0, /* field */ - (FIELD *)0, /* current */ - (_PAGE *) 0, /* page */ - (char *)0, /* usrptr */ - NULL, /* forminit */ - NULL, /* formterm */ - NULL, /* fieldinit */ - NULL /* fieldterm */ -}; - -NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Insert_Field_By_Position( -| FIELD *new_field, -| FIELD *head ) -| -| Description : Insert new_field into sorted fieldlist with head "head" -| and return new head of sorted fieldlist. Sorting -| criteria is (row,column). This is a circular list. -| -| Return Values : New head of sorted fieldlist -+--------------------------------------------------------------------------*/ -static FIELD * -Insert_Field_By_Position(FIELD *newfield, FIELD *head) -{ - FIELD *current, *newhead; - - assert(newfield); - - if (!head) - { /* empty list is trivial */ - newhead = newfield->snext = newfield->sprev = newfield; - } - else - { - newhead = current = head; - while ((current->frow < newfield->frow) || - ((current->frow == newfield->frow) && - (current->fcol < newfield->fcol))) - { - current = current->snext; - if (current == head) - { /* We cycled through. Reset head to indicate that */ - head = (FIELD *)0; - break; - } - } - /* we leave the loop with current pointing to the field after newfield */ - newfield->snext = current; - newfield->sprev = current->sprev; - newfield->snext->sprev = newfield; - newfield->sprev->snext = newfield; - if (current == head) - newhead = newfield; - } - return (newhead); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Disconnect_Fields(FORM *form) -| -| Description : Break association between form and array of fields. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Disconnect_Fields(FORM *form) -{ - if (form->field) - { - FIELD **fields; - - for (fields = form->field; *fields; fields++) - { - if (form == (*fields)->form) - (*fields)->form = (FORM *)0; - } - - form->rows = form->cols = 0; - form->maxfield = form->maxpage = -1; - form->field = (FIELD **)0; - if (form->page) - free(form->page); - form->page = (_PAGE *) 0; - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Connect_Fields(FORM *form, FIELD **fields) -| -| Description : Set association between form and array of fields. -| -| Return Values : E_OK - no error -| E_CONNECTED - a field is already connected -| E_BAD_ARGUMENT - Invalid form pointer or field array -| E_SYSTEM_ERROR - not enough memory -+--------------------------------------------------------------------------*/ -static int -Connect_Fields(FORM *form, FIELD **fields) -{ - int field_cnt, j; - int page_nr; - int maximum_row_in_field, maximum_col_in_field; - _PAGE *pg; - - T((T_CALLED("Connect_Fields(%p,%p)"), form, fields)); - - assert(form); - - form->field = fields; - form->maxfield = 0; - form->maxpage = 0; - - if (!fields) - RETURN(E_OK); - - page_nr = 0; - /* store formpointer in fields and count pages */ - for (field_cnt = 0; fields[field_cnt]; field_cnt++) - { - if (fields[field_cnt]->form) - RETURN(E_CONNECTED); - if (field_cnt == 0 || - (fields[field_cnt]->status & _NEWPAGE)) - page_nr++; - fields[field_cnt]->form = form; - } - if (field_cnt == 0 || (short)field_cnt < 0) - RETURN(E_BAD_ARGUMENT); - - /* allocate page structures */ - if ((pg = typeMalloc(_PAGE, page_nr)) != (_PAGE *) 0) - { - T((T_CREATE("_PAGE %p"), pg)); - form->page = pg; - } - else - RETURN(E_SYSTEM_ERROR); - - /* Cycle through fields and calculate page boundaries as well as - size of the form */ - for (j = 0; j < field_cnt; j++) - { - if (j == 0) - pg->pmin = j; - else - { - if (fields[j]->status & _NEWPAGE) - { - pg->pmax = j - 1; - pg++; - pg->pmin = j; - } - } - - maximum_row_in_field = fields[j]->frow + fields[j]->rows; - maximum_col_in_field = fields[j]->fcol + fields[j]->cols; - - if (form->rows < maximum_row_in_field) - form->rows = maximum_row_in_field; - if (form->cols < maximum_col_in_field) - form->cols = maximum_col_in_field; - } - - pg->pmax = field_cnt - 1; - form->maxfield = field_cnt; - form->maxpage = page_nr; - - /* Sort fields on form pages */ - for (page_nr = 0; page_nr < form->maxpage; page_nr++) - { - FIELD *fld = (FIELD *)0; - - for (j = form->page[page_nr].pmin; j <= form->page[page_nr].pmax; j++) - { - fields[j]->index = j; - fields[j]->page = page_nr; - fld = Insert_Field_By_Position(fields[j], fld); - } - form->page[page_nr].smin = fld->index; - form->page[page_nr].smax = fld->sprev->index; - } - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Associate_Fields(FORM *form, FIELD **fields) -| -| Description : Set association between form and array of fields. -| If there are fields, position to first active field. -| -| Return Values : 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 -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static int -Associate_Fields(FORM *form, FIELD **fields) -{ - int res = Connect_Fields(form, fields); - - if (res == E_OK) - { - if (form->maxpage > 0) - { - form->curpage = 0; - form_driver(form, FIRST_ACTIVE_MAGIC); - } - else - { - form->curpage = -1; - form->current = (FIELD *)0; - } - } - return (res); -} - -/*--------------------------------------------------------------------------- -| 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 -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FORM *) -new_form(FIELD **fields) -{ - int err = E_SYSTEM_ERROR; - - FORM *form = typeMalloc(FORM, 1); - - T((T_CALLED("new_form(%p)"), fields)); - if (form) - { - T((T_CREATE("form %p"), form)); - *form = *_nc_Default_Form; - if ((err = Associate_Fields(form, fields)) != E_OK) - { - free_form(form); - form = (FORM *)0; - } - } - - if (!form) - SET_ERROR(err); - - returnForm(form); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int free_form( FORM *form ) -| -| Description : Release internal memory associated with form. -| -| Return Values : E_OK - no error -| E_BAD_ARGUMENT - invalid form pointer -| E_POSTED - form is posted -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -free_form(FORM *form) -{ - T((T_CALLED("free_form(%p)"), form)); - - if (!form) - RETURN(E_BAD_ARGUMENT); - - if (form->status & _POSTED) - RETURN(E_POSTED); - - Disconnect_Fields(form); - if (form->page) - free(form->page); - free(form); - - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_fields( FORM *form, FIELD **fields ) -| -| Description : Set a new association of an array of fields to a form -| -| Return Values : E_OK - no error -| E_BAD_ARGUMENT - Invalid form pointer or field array -| E_CONNECTED - a field is already connected -| E_POSTED - form is posted -| E_SYSTEM_ERROR - not enough memory -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_form_fields(FORM *form, FIELD **fields) -{ - FIELD **old; - int res; - - T((T_CALLED("set_form_fields(%p,%p)"), form, fields)); - - if (!form) - RETURN(E_BAD_ARGUMENT); - - if (form->status & _POSTED) - RETURN(E_POSTED); - - old = form->field; - Disconnect_Fields(form); - - if ((res = Associate_Fields(form, fields)) != E_OK) - Connect_Fields(form, old); - - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD **form_fields( const FORM *form ) -| -| Description : Retrieve array of fields -| -| Return Values : Pointer to field array -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD **) -form_fields(const FORM *form) -{ - T((T_CALLED("form_field(%p)"), form)); - returnFieldPtr(Normalize_Form(form)->field); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int field_count( const FORM *form ) -| -| Description : Retrieve number of fields -| -| Return Values : Number of fields, -1 if none are defined -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -field_count(const FORM *form) -{ - T((T_CALLED("field_count(%p)"), form)); - - returnCode(Normalize_Form(form)->maxfield); -} - -/* frm_def.c ends here */ diff --git a/contrib/ncurses/form/frm_driver.c b/contrib/ncurses/form/frm_driver.c deleted file mode 100644 index 0c0912576dbb..000000000000 --- a/contrib/ncurses/form/frm_driver.c +++ /dev/null @@ -1,4581 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2008 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_driver.c,v 1.86 2008/01/19 20:11:03 tom Exp $") - -/*---------------------------------------------------------------------------- - This is the core module of the form library. It contains the majority - of the driver routines as well as the form_driver function. - - Essentially this module is nearly the whole library. This is because - all the functions in this module depends on some others in the module, - so it makes no sense to split them into separate files because they - will always be linked together. The only acceptable concern is turnaround - time for this module, but now we have all Pentiums or RISCs, so what! - - The driver routines are grouped into nine generic categories: - - a) Page Navigation ( all functions prefixed by PN_ ) - The current page of the form is left and some new page is - entered. - b) Inter-Field Navigation ( all functions prefixed by FN_ ) - The current field of the form is left and some new field is - entered. - c) Intra-Field Navigation ( all functions prefixed by IFN_ ) - The current position in the current field is changed. - d) Vertical Scrolling ( all functions prefixed by VSC_ ) - Essentially this is a specialization of Intra-Field navigation. - It has to check for a multi-line field. - e) Horizontal Scrolling ( all functions prefixed by HSC_ ) - Essentially this is a specialization of Intra-Field navigation. - It has to check for a single-line field. - f) Field Editing ( all functions prefixed by FE_ ) - The content of the current field is changed - g) Edit Mode requests ( all functions prefixed by EM_ ) - Switching between insert and overlay mode - h) Field-Validation requests ( all functions prefixed by FV_ ) - Perform verifications of the field. - i) Choice requests ( all functions prefixed by CR_ ) - Requests to enumerate possible field values - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Some remarks on the placements of assert() macros : - I use them only on "strategic" places, i.e. top level entries where - I want to make sure that things are set correctly. Throughout subordinate - routines I omit them mostly. - --------------------------------------------------------------------------*/ - -/* -Some options that may effect compatibility in behavior to SVr4 forms, -but they are here to allow a more intuitive and user friendly behavior of -our form implementation. This doesn't affect the API, so we feel it is -uncritical. - -The initial implementation tries to stay very close with the behavior -of the original SVr4 implementation, although in some areas it is quite -clear that this isn't the most appropriate way. As far as possible this -sources will allow you to build a forms lib that behaves quite similar -to SVr4, but now and in the future we will give you better options. -Perhaps at some time we will make this configurable at runtime. -*/ - -/* Implement a more user-friendly previous/next word behavior */ -#define FRIENDLY_PREV_NEXT_WORD (1) -/* Fix the wrong behavior for forms with all fields inactive */ -#define FIX_FORM_INACTIVE_BUG (1) -/* Allow dynamic field growth also when navigating past the end */ -#define GROW_IF_NAVIGATE (1) - -#if USE_WIDEC_SUPPORT -#define myADDNSTR(w, s, n) wadd_wchnstr(w, s, n) -#define myINSNSTR(w, s, n) wins_wchnstr(w, s, n) -#define myINNSTR(w, s, n) fix_wchnstr(w, s, n) -#define myWCWIDTH(w, y, x) cell_width(w, y, x) -#else -#define myADDNSTR(w, s, n) waddnstr(w, s, n) -#define myINSNSTR(w, s, n) winsnstr(w, s, n) -#define myINNSTR(w, s, n) winnstr(w, s, n) -#define myWCWIDTH(w, y, x) 1 -#endif - -/*---------------------------------------------------------------------------- - Forward references to some internally used static functions - --------------------------------------------------------------------------*/ -static int Inter_Field_Navigation(int (*const fct) (FORM *), FORM *form); -static int FN_Next_Field(FORM *form); -static int FN_Previous_Field(FORM *form); -static int FE_New_Line(FORM *); -static int FE_Delete_Previous(FORM *); - -/*---------------------------------------------------------------------------- - Macro Definitions. - - Some Remarks on that: I use the convention to use UPPERCASE for constants - defined by Macros. If I provide a macro as a kind of inline routine to - provide some logic, I use my Upper_Lower case style. - --------------------------------------------------------------------------*/ - -/* Calculate the position of a single row in a field buffer */ -#define Position_Of_Row_In_Buffer(field,row) ((row)*(field)->dcols) - -/* Calculate start address for the fields buffer# N */ -#define Address_Of_Nth_Buffer(field,N) \ - ((field)->buf + (N)*(1+Buffer_Length(field))) - -/* Calculate the start address of the row in the fields specified buffer# N */ -#define Address_Of_Row_In_Nth_Buffer(field,N,row) \ - (Address_Of_Nth_Buffer(field,N) + Position_Of_Row_In_Buffer(field,row)) - -/* Calculate the start address of the row in the fields primary buffer */ -#define Address_Of_Row_In_Buffer(field,row) \ - Address_Of_Row_In_Nth_Buffer(field,0,row) - -/* Calculate the start address of the row in the forms current field - buffer# N */ -#define Address_Of_Current_Row_In_Nth_Buffer(form,N) \ - Address_Of_Row_In_Nth_Buffer((form)->current,N,(form)->currow) - -/* Calculate the start address of the row in the forms current field - primary buffer */ -#define Address_Of_Current_Row_In_Buffer(form) \ - Address_Of_Current_Row_In_Nth_Buffer(form,0) - -/* Calculate the address of the cursor in the forms current field - primary buffer */ -#define Address_Of_Current_Position_In_Nth_Buffer(form,N) \ - (Address_Of_Current_Row_In_Nth_Buffer(form,N) + (form)->curcol) - -/* Calculate the address of the cursor in the forms current field - buffer# N */ -#define Address_Of_Current_Position_In_Buffer(form) \ - Address_Of_Current_Position_In_Nth_Buffer(form,0) - -/* Logic to decide whether or not a field is actually a field with - vertical or horizontal scrolling */ -#define Is_Scroll_Field(field) \ - (((field)->drows > (field)->rows) || \ - ((field)->dcols > (field)->cols)) - -/* Logic to decide whether or not a field needs to have an individual window - instead of a derived window because it contains invisible parts. - This is true for non-public fields and for scrollable fields. */ -#define Has_Invisible_Parts(field) \ - (!((field)->opts & O_PUBLIC) || \ - Is_Scroll_Field(field)) - -/* Logic to decide whether or not a field needs justification */ -#define Justification_Allowed(field) \ - (((field)->just != NO_JUSTIFICATION) && \ - (Single_Line_Field(field)) && \ - (((field)->dcols == (field)->cols) && \ - ((field)->opts & O_STATIC)) ) - -/* Logic to determine whether or not a dynamic field may still grow */ -#define Growable(field) ((field)->status & _MAY_GROW) - -/* Macro to set the attributes for a fields window */ -#define Set_Field_Window_Attributes(field,win) \ -( wbkgdset((win),(chtype)((field)->pad | (field)->back)), \ - wattrset((win),(field)->fore) ) - -/* Logic to decide whether or not a field really appears on the form */ -#define Field_Really_Appears(field) \ - ((field->form) &&\ - (field->form->status & _POSTED) &&\ - (field->opts & O_VISIBLE) &&\ - (field->page == field->form->curpage)) - -/* Logic to determine whether or not we are on the first position in the - current field */ -#define First_Position_In_Current_Field(form) \ - (((form)->currow==0) && ((form)->curcol==0)) - -#define Minimum(a,b) (((a)<=(b)) ? (a) : (b)) -#define Maximum(a,b) (((a)>=(b)) ? (a) : (b)) - -/*---------------------------------------------------------------------------- - Useful constants - --------------------------------------------------------------------------*/ -static FIELD_CELL myBLANK = BLANK; -static FIELD_CELL myZEROS; - -#ifdef TRACE -static void -check_pos(FORM *form, int lineno) -{ - int y, x; - - if (form && form->w) - { - getyx(form->w, y, x); - if (y != form->currow || x != form->curcol) - { - T(("CHECKPOS %s@%d have position %d,%d vs want %d,%d", - __FILE__, lineno, - y, x, - form->currow, form->curcol)); - } - } -} -#define CHECKPOS(form) check_pos(form, __LINE__) -#else -#define CHECKPOS(form) /* nothing */ -#endif - -/*---------------------------------------------------------------------------- - Wide-character special functions - --------------------------------------------------------------------------*/ -#if USE_WIDEC_SUPPORT -/* like winsnstr */ -static int -wins_wchnstr(WINDOW *w, cchar_t *s, int n) -{ - int code = ERR; - int y, x; - - while (n-- > 0) - { - getyx(w, y, x); - if ((code = wins_wch(w, s++)) != OK) - break; - if ((code = wmove(w, y, x + 1)) != OK) - break; - } - return code; -} - -/* win_wchnstr is inconsistent with winnstr, since it returns OK rather than - * the number of items transferred. - */ -static int -fix_wchnstr(WINDOW *w, cchar_t *s, int n) -{ - int x; - - win_wchnstr(w, s, n); - /* - * This function is used to extract the text only from the window. - * Strip attributes and color from the string so they will not be added - * back when copying the string to the window. - */ - for (x = 0; x < n; ++x) - { - RemAttr(s[x], A_ATTRIBUTES); - SetPair(s[x], 0); - } - return n; -} - -/* - * Returns the column of the base of the given cell. - */ -static int -cell_base(WINDOW *win, int y, int x) -{ - int result = x; - - while (LEGALYX(win, y, x)) - { - cchar_t *data = &(win->_line[y].text[x]); - - if (isWidecBase(CHDEREF(data)) || !isWidecExt(CHDEREF(data))) - { - result = x; - break; - } - --x; - } - return result; -} - -/* - * Returns the number of columns needed for the given cell in a window. - */ -static int -cell_width(WINDOW *win, int y, int x) -{ - int result = 1; - - if (LEGALYX(win, y, x)) - { - cchar_t *data = &(win->_line[y].text[x]); - - if (isWidecExt(CHDEREF(data))) - { - /* recur, providing the number of columns to the next character */ - result = cell_width(win, y, x - 1); - } - else - { - result = wcwidth(CharOf(CHDEREF(data))); - } - } - return result; -} - -/* - * There is no wide-character function such as wdel_wch(), so we must find - * all of the cells that comprise a multi-column character and delete them - * one-by-one. - */ -static void -delete_char(FORM *form) -{ - int cells = cell_width(form->w, form->currow, form->curcol); - - form->curcol = cell_base(form->w, form->currow, form->curcol); - wmove(form->w, form->currow, form->curcol); - while (cells-- > 0) - { - wdelch(form->w); - } -} -#define DeleteChar(form) delete_char(form) -#else -#define DeleteChar(form) \ - wmove((form)->w, (form)->currow, (form)->curcol), \ - wdelch((form)->w) -#endif - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static char *Get_Start_Of_Data(char * buf, int blen) -| -| Description : Return pointer to first non-blank position in buffer. -| If buffer is empty return pointer to buffer itself. -| -| Return Values : Pointer to first non-blank position in buffer -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD_CELL * -Get_Start_Of_Data(FIELD_CELL *buf, int blen) -{ - FIELD_CELL *p = buf; - FIELD_CELL *end = &buf[blen]; - - assert(buf && blen >= 0); - while ((p < end) && ISBLANK(*p)) - p++; - return ((p == end) ? buf : p); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static char *After_End_Of_Data(char * buf, int blen) -| -| Description : Return pointer after last non-blank position in buffer. -| If buffer is empty, return pointer to buffer itself. -| -| Return Values : Pointer to position after last non-blank position in -| buffer. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD_CELL * -After_End_Of_Data(FIELD_CELL *buf, int blen) -{ - FIELD_CELL *p = &buf[blen]; - - assert(buf && blen >= 0); - while ((p > buf) && ISBLANK(p[-1])) - p--; - return (p); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static char *Get_First_Whitespace_Character( -| char * buf, int blen) -| -| Description : Position to the first whitespace character. -| -| Return Values : Pointer to first whitespace character in buffer. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD_CELL * -Get_First_Whitespace_Character(FIELD_CELL *buf, int blen) -{ - FIELD_CELL *p = buf; - FIELD_CELL *end = &p[blen]; - - assert(buf && blen >= 0); - while ((p < end) && !ISBLANK(*p)) - p++; - return ((p == end) ? buf : p); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static char *After_Last_Whitespace_Character( -| char * buf, int blen) -| -| Description : Get the position after the last whitespace character. -| -| Return Values : Pointer to position after last whitespace character in -| buffer. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD_CELL * -After_Last_Whitespace_Character(FIELD_CELL *buf, int blen) -{ - FIELD_CELL *p = &buf[blen]; - - assert(buf && blen >= 0); - while ((p > buf) && !ISBLANK(p[-1])) - p--; - return (p); -} - -/* Set this to 1 to use the div_t version. This is a good idea if your - compiler has an intrinsic div() support. Unfortunately GNU-C has it - not yet. - N.B.: This only works if form->curcol follows immediately form->currow - and both are of type int. -*/ -#define USE_DIV_T (0) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Adjust_Cursor_Position( -| FORM * form, const char * pos) -| -| Description : Set current row and column of the form to values -| corresponding to the buffer position. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static void -Adjust_Cursor_Position(FORM *form, const FIELD_CELL *pos) -{ - FIELD *field; - int idx; - - field = form->current; - assert(pos >= field->buf && field->dcols > 0); - idx = (int)(pos - field->buf); -#if USE_DIV_T - *((div_t *) & (form->currow)) = div(idx, field->dcols); -#else - form->currow = idx / field->dcols; - form->curcol = idx - field->cols * form->currow; -#endif - if (field->drows < form->currow) - form->currow = 0; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Buffer_To_Window( -| const FIELD * field, -| WINDOW * win) -| -| Description : Copy the buffer to the window. If it is a multi-line -| field, the buffer is split to the lines of the -| window without any editing. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Buffer_To_Window(const FIELD *field, WINDOW *win) -{ - int width, height; - int y, x; - int len; - int row; - FIELD_CELL *pBuffer; - - assert(win && field); - - getyx(win, y, x); - width = getmaxx(win); - height = getmaxy(win); - - for (row = 0, pBuffer = field->buf; - row < height; - row++, pBuffer += width) - { - if ((len = (int)(After_End_Of_Data(pBuffer, width) - pBuffer)) > 0) - { - wmove(win, row, 0); - myADDNSTR(win, pBuffer, len); - } - } - wmove(win, y, x); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Window_To_Buffer( -| WINDOW * win, -| 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(WINDOW *win, FIELD *field) -{ - int pad; - int len = 0; - FIELD_CELL *p; - int row, height; - - assert(win && field && field->buf); - - pad = field->pad; - p = field->buf; - height = getmaxy(win); - - for (row = 0; (row < height) && (row < field->drows); row++) - { - wmove(win, row, 0); - len += myINNSTR(win, p + len, field->dcols); - } - p[len] = myZEROS; - - /* replace visual padding character by blanks in buffer */ - if (pad != C_BLANK) - { - int i; - - for (i = 0; i < len; i++, p++) - { - if ((unsigned long)CharOf(*p) == ChCharOf(pad) -#if USE_WIDEC_SUPPORT - && p->chars[1] == 0 -#endif - ) - *p = myBLANK; - } - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Synchronize_Buffer(FORM * form) -| -| Description : If there was a change, copy the content of the -| window into the buffer, so the buffer is synchronized -| with the windows content. We have to indicate that the -| buffer needs validation due to the change. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static void -Synchronize_Buffer(FORM *form) -{ - if (form->status & _WINDOW_MODIFIED) - { - form->status &= ~_WINDOW_MODIFIED; - form->status |= _FCHECK_REQUIRED; - Window_To_Buffer(form->w, form->current); - wmove(form->w, form->currow, form->curcol); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Field_Grown( FIELD *field, int amount) -| -| Description : This function is called for growable dynamic fields -| only. It has to increase the buffers and to allocate -| a new window for this field. -| This function has the side effect to set a new -| field-buffer pointer, the dcols and drows values -| as well as a new current Window for the field. -| -| Return Values : TRUE - field successfully increased -| FALSE - there was some error -+--------------------------------------------------------------------------*/ -static bool -Field_Grown(FIELD *field, int amount) -{ - bool result = FALSE; - - if (field && Growable(field)) - { - bool single_line_field = Single_Line_Field(field); - int old_buflen = Buffer_Length(field); - int new_buflen; - int old_dcols = field->dcols; - int old_drows = field->drows; - FIELD_CELL *oldbuf = field->buf; - FIELD_CELL *newbuf; - - int growth; - FORM *form = field->form; - bool need_visual_update = ((form != (FORM *)0) && - (form->status & _POSTED) && - (form->current == field)); - - if (need_visual_update) - Synchronize_Buffer(form); - - if (single_line_field) - { - growth = field->cols * amount; - if (field->maxgrow) - growth = Minimum(field->maxgrow - field->dcols, growth); - field->dcols += growth; - if (field->dcols == field->maxgrow) - field->status &= ~_MAY_GROW; - } - else - { - growth = (field->rows + field->nrow) * amount; - if (field->maxgrow) - growth = Minimum(field->maxgrow - field->drows, growth); - field->drows += growth; - if (field->drows == field->maxgrow) - field->status &= ~_MAY_GROW; - } - /* drows, dcols changed, so we get really the new buffer length */ - new_buflen = Buffer_Length(field); - newbuf = (FIELD_CELL *)malloc(Total_Buffer_Size(field)); - if (!newbuf) - { - /* restore to previous state */ - field->dcols = old_dcols; - field->drows = old_drows; - if ((single_line_field && (field->dcols != field->maxgrow)) || - (!single_line_field && (field->drows != field->maxgrow))) - field->status |= _MAY_GROW; - } - else - { - /* Copy all the buffers. This is the reason why we can't just use - * realloc(). - */ - int i, j; - FIELD_CELL *old_bp; - FIELD_CELL *new_bp; - - result = TRUE; /* allow sharing of recovery on failure */ - - T((T_CREATE("fieldcell %p"), newbuf)); - field->buf = newbuf; - for (i = 0; i <= field->nbuf; i++) - { - new_bp = Address_Of_Nth_Buffer(field, i); - old_bp = oldbuf + i * (1 + old_buflen); - for (j = 0; j < old_buflen; ++j) - new_bp[j] = old_bp[j]; - while (j < new_buflen) - new_bp[j++] = myBLANK; - new_bp[new_buflen] = myZEROS; - } - -#if USE_WIDEC_SUPPORT && NCURSES_EXT_FUNCS - if (wresize(field->working, 1, Buffer_Length(field) + 1) == ERR) - result = FALSE; -#endif - - if (need_visual_update && result) - { - WINDOW *new_window = newpad(field->drows, field->dcols); - - if (new_window != 0) - { - assert(form != (FORM *)0); - if (form->w) - delwin(form->w); - form->w = new_window; - Set_Field_Window_Attributes(field, form->w); - werase(form->w); - Buffer_To_Window(field, form->w); - untouchwin(form->w); - wmove(form->w, form->currow, form->curcol); - } - else - result = FALSE; - } - - if (result) - { - free(oldbuf); - /* reflect changes in linked fields */ - if (field != field->link) - { - FIELD *linked_field; - - for (linked_field = field->link; - linked_field != field; - linked_field = linked_field->link) - { - linked_field->buf = field->buf; - linked_field->drows = field->drows; - linked_field->dcols = field->dcols; - } - } - } - else - { - /* restore old state */ - field->dcols = old_dcols; - field->drows = old_drows; - field->buf = oldbuf; - if ((single_line_field && - (field->dcols != field->maxgrow)) || - (!single_line_field && - (field->drows != field->maxgrow))) - field->status |= _MAY_GROW; - free(newbuf); - } - } - } - return (result); -} - -#ifdef NCURSES_MOUSE_VERSION -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int Field_encloses(FIELD *field, int ry, int rx) -| -| Description : Check if the given coordinates lie within the given field. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form pointer -| E_SYSTEM_ERROR - form has no current field or -| field-window -+--------------------------------------------------------------------------*/ -static int -Field_encloses(FIELD *field, int ry, int rx) -{ - T((T_CALLED("Field_encloses(%p)"), field)); - if (field != 0 - && field->frow <= ry - && (field->frow + field->rows) > ry - && field->fcol <= rx - && (field->fcol + field->cols) > rx) - { - RETURN(E_OK); - } - RETURN(E_INVALID_FIELD); -} -#endif - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int _nc_Position_Form_Cursor(FORM * form) -| -| Description : Position the cursor in the window for the current -| field to be in sync. with the currow and curcol -| values. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form pointer -| E_SYSTEM_ERROR - form has no current field or -| field-window -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Position_Form_Cursor(FORM *form) -{ - FIELD *field; - WINDOW *formwin; - - if (!form) - return (E_BAD_ARGUMENT); - - if (!form->w || !form->current) - return (E_SYSTEM_ERROR); - - field = form->current; - formwin = Get_Form_Window(form); - - wmove(form->w, form->currow, form->curcol); - if (Has_Invisible_Parts(field)) - { - /* in this case fieldwin isn't derived from formwin, so we have - to move the cursor in formwin by hand... */ - wmove(formwin, - field->frow + form->currow - form->toprow, - field->fcol + form->curcol - form->begincol); - wcursyncup(formwin); - } - else - wcursyncup(form->w); - return (E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int _nc_Refresh_Current_Field(FORM * form) -| -| Description : Propagate the changes in the fields window to the -| window of the form. -| -| Return Values : E_OK - on success -| E_BAD_ARGUMENT - invalid form pointer -| E_SYSTEM_ERROR - general error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Refresh_Current_Field(FORM *form) -{ - WINDOW *formwin; - FIELD *field; - - T((T_CALLED("_nc_Refresh_Current_Field(%p)"), form)); - - if (!form) - RETURN(E_BAD_ARGUMENT); - - if (!form->w || !form->current) - RETURN(E_SYSTEM_ERROR); - - field = form->current; - formwin = Get_Form_Window(form); - - if (field->opts & O_PUBLIC) - { - if (Is_Scroll_Field(field)) - { - /* Again, in this case the fieldwin isn't derived from formwin, - so we have to perform a copy operation. */ - if (Single_Line_Field(field)) - { - /* horizontal scrolling */ - if (form->curcol < form->begincol) - form->begincol = form->curcol; - else - { - if (form->curcol >= (form->begincol + field->cols)) - form->begincol = form->curcol - field->cols + 1; - } - copywin(form->w, - formwin, - 0, - form->begincol, - field->frow, - field->fcol, - field->frow, - field->cols + field->fcol - 1, - 0); - } - else - { - /* A multi-line, i.e. vertical scrolling field */ - int row_after_bottom, first_modified_row, first_unmodified_row; - - if (field->drows > field->rows) - { - row_after_bottom = form->toprow + field->rows; - if (form->currow < form->toprow) - { - form->toprow = form->currow; - field->status |= _NEWTOP; - } - if (form->currow >= row_after_bottom) - { - form->toprow = form->currow - field->rows + 1; - field->status |= _NEWTOP; - } - if (field->status & _NEWTOP) - { - /* means we have to copy whole range */ - first_modified_row = form->toprow; - first_unmodified_row = first_modified_row + field->rows; - field->status &= ~_NEWTOP; - } - else - { - /* we try to optimize : finding the range of touched - lines */ - first_modified_row = form->toprow; - while (first_modified_row < row_after_bottom) - { - if (is_linetouched(form->w, first_modified_row)) - break; - first_modified_row++; - } - first_unmodified_row = first_modified_row; - while (first_unmodified_row < row_after_bottom) - { - if (!is_linetouched(form->w, first_unmodified_row)) - break; - first_unmodified_row++; - } - } - } - else - { - first_modified_row = form->toprow; - first_unmodified_row = first_modified_row + field->rows; - } - if (first_unmodified_row != first_modified_row) - copywin(form->w, - formwin, - first_modified_row, - 0, - field->frow + first_modified_row - form->toprow, - field->fcol, - field->frow + first_unmodified_row - form->toprow - 1, - field->cols + field->fcol - 1, - 0); - } - wsyncup(formwin); - } - else - { - /* if the field-window is simply a derived window, i.e. contains no - * invisible parts, the whole thing is trivial - */ - wsyncup(form->w); - } - } - untouchwin(form->w); - returnCode(_nc_Position_Form_Cursor(form)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Perform_Justification( -| FIELD * field, -| WINDOW * win) -| -| Description : Output field with requested justification -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Perform_Justification(FIELD *field, WINDOW *win) -{ - FIELD_CELL *bp; - int len; - int col = 0; - - bp = Get_Start_Of_Data(field->buf, Buffer_Length(field)); - len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp); - - if (len > 0) - { - assert(win && (field->drows == 1) && (field->dcols == field->cols)); - - switch (field->just) - { - case JUSTIFY_LEFT: - break; - case JUSTIFY_CENTER: - col = (field->cols - len) / 2; - break; - case JUSTIFY_RIGHT: - col = field->cols - len; - break; - default: - break; - } - - wmove(win, 0, col); - myADDNSTR(win, bp, len); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Undo_Justification( -| FIELD * field, -| WINDOW * win) -| -| Description : Display field without any justification, i.e. -| left justified -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Undo_Justification(FIELD *field, WINDOW *win) -{ - FIELD_CELL *bp; - int len; - - bp = Get_Start_Of_Data(field->buf, Buffer_Length(field)); - len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp); - - if (len > 0) - { - assert(win); - wmove(win, 0, 0); - myADDNSTR(win, bp, len); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_Char( -| FIELDTYPE * typ, -| int ch, -| TypeArgument *argp) -| -| Description : Perform a single character check for character ch -| according to the fieldtype instance. -| -| Return Values : TRUE - Character is valid -| FALSE - Character is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_Char(FIELDTYPE *typ, int ch, TypeArgument *argp) -{ - if (typ) - { - if (typ->status & _LINKED_TYPE) - { - assert(argp); - return ( - Check_Char(typ->left, ch, argp->left) || - Check_Char(typ->right, ch, argp->right)); - } - else - { - if (typ->ccheck) - return typ->ccheck(ch, (void *)argp); - } - } - return (!iscntrl(UChar(ch)) ? TRUE : FALSE); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Display_Or_Erase_Field( -| FIELD * field, -| bool bEraseFlag) -| -| Description : Create a subwindow for the field and display the -| buffer contents (apply justification if required) -| or simply erase the field. -| -| Return Values : E_OK - on success -| E_SYSTEM_ERROR - some error (typical no memory) -+--------------------------------------------------------------------------*/ -static int -Display_Or_Erase_Field(FIELD *field, bool bEraseFlag) -{ - WINDOW *win; - WINDOW *fwin; - - if (!field) - return E_SYSTEM_ERROR; - - fwin = Get_Form_Window(field->form); - win = derwin(fwin, - field->rows, field->cols, field->frow, field->fcol); - - if (!win) - return E_SYSTEM_ERROR; - else - { - if (field->opts & O_VISIBLE) - Set_Field_Window_Attributes(field, win); - else - wattrset(win, WINDOW_ATTRS(fwin)); - werase(win); - } - - if (!bEraseFlag) - { - if (field->opts & O_PUBLIC) - { - if (Justification_Allowed(field)) - Perform_Justification(field, win); - else - Buffer_To_Window(field, win); - } - field->status &= ~_NEWTOP; - } - wsyncup(win); - delwin(win); - return E_OK; -} - -/* Macros to preset the bEraseFlag */ -#define Display_Field(field) Display_Or_Erase_Field(field,FALSE) -#define Erase_Field(field) Display_Or_Erase_Field(field,TRUE) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Synchronize_Field(FIELD * field) -| -| Description : Synchronize the windows content with the value in -| the buffer. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer -| E_SYSTEM_ERROR - some severe basic error -+--------------------------------------------------------------------------*/ -static int -Synchronize_Field(FIELD *field) -{ - FORM *form; - int res = E_OK; - - if (!field) - return (E_BAD_ARGUMENT); - - if (((form = field->form) != (FORM *)0) - && Field_Really_Appears(field)) - { - if (field == form->current) - { - form->currow = form->curcol = form->toprow = form->begincol = 0; - werase(form->w); - - if ((field->opts & O_PUBLIC) && Justification_Allowed(field)) - Undo_Justification(field, form->w); - else - Buffer_To_Window(field, form->w); - - field->status |= _NEWTOP; - res = _nc_Refresh_Current_Field(form); - } - else - res = Display_Field(field); - } - field->status |= _CHANGED; - return (res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Synchronize_Linked_Fields(FIELD * field) -| -| Description : Propagate the Synchronize_Field function to all linked -| fields. The first error that occurs in the sequence -| of updates is the return value. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer -| E_SYSTEM_ERROR - some severe basic error -+--------------------------------------------------------------------------*/ -static int -Synchronize_Linked_Fields(FIELD *field) -{ - FIELD *linked_field; - int res = E_OK; - int syncres; - - if (!field) - return (E_BAD_ARGUMENT); - - if (!field->link) - return (E_SYSTEM_ERROR); - - for (linked_field = field->link; - linked_field != field; - linked_field = linked_field->link) - { - if (((syncres = Synchronize_Field(linked_field)) != E_OK) && - (res == E_OK)) - res = syncres; - } - return (res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int _nc_Synchronize_Attributes(FIELD * field) -| -| Description : If a fields visual attributes have changed, this -| routine is called to propagate those changes to the -| screen. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer -| E_SYSTEM_ERROR - some severe basic error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Synchronize_Attributes(FIELD *field) -{ - FORM *form; - int res = E_OK; - WINDOW *formwin; - - T((T_CALLED("_nc_Synchronize_Attributes(%p)"), field)); - - if (!field) - returnCode(E_BAD_ARGUMENT); - - CHECKPOS(field->form); - if (((form = field->form) != (FORM *)0) - && Field_Really_Appears(field)) - { - if (form->current == field) - { - Synchronize_Buffer(form); - Set_Field_Window_Attributes(field, form->w); - werase(form->w); - wmove(form->w, form->currow, form->curcol); - - if (field->opts & O_PUBLIC) - { - if (Justification_Allowed(field)) - Undo_Justification(field, form->w); - else - Buffer_To_Window(field, form->w); - } - else - { - formwin = Get_Form_Window(form); - copywin(form->w, formwin, - 0, 0, - field->frow, field->fcol, - field->rows - 1, field->cols - 1, 0); - wsyncup(formwin); - Buffer_To_Window(field, form->w); - field->status |= _NEWTOP; /* fake refresh to paint all */ - _nc_Refresh_Current_Field(form); - } - } - else - { - res = Display_Field(field); - } - } - CHECKPOS(form); - returnCode(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int _nc_Synchronize_Options(FIELD * field, -| Field_Options newopts) -| -| Description : If a fields options have changed, this routine is -| called to propagate these changes to the screen and -| to really change the behavior of the field. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid field pointer -| E_CURRENT - field is the current one -| E_SYSTEM_ERROR - some severe basic error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Synchronize_Options(FIELD *field, Field_Options newopts) -{ - Field_Options oldopts; - Field_Options changed_opts; - FORM *form; - int res = E_OK; - - T((T_CALLED("_nc_Synchronize_Options(%p,%#x)"), field, newopts)); - - if (!field) - returnCode(E_BAD_ARGUMENT); - - oldopts = field->opts; - changed_opts = oldopts ^ newopts; - field->opts = newopts; - form = field->form; - - if (form) - { - if (form->current == field) - { - field->opts = oldopts; - returnCode(E_CURRENT); - } - - if (form->status & _POSTED) - { - if ((form->curpage == field->page)) - { - if (changed_opts & O_VISIBLE) - { - if (newopts & O_VISIBLE) - res = Display_Field(field); - else - res = Erase_Field(field); - } - else - { - if ((changed_opts & O_PUBLIC) && - (newopts & O_VISIBLE)) - res = Display_Field(field); - } - } - } - } - - if (changed_opts & O_STATIC) - { - bool single_line_field = Single_Line_Field(field); - int res2 = E_OK; - - if (newopts & O_STATIC) - { - /* the field becomes now static */ - field->status &= ~_MAY_GROW; - /* if actually we have no hidden columns, justification may - occur again */ - if (single_line_field && - (field->cols == field->dcols) && - (field->just != NO_JUSTIFICATION) && - Field_Really_Appears(field)) - { - res2 = Display_Field(field); - } - } - else - { - /* field is no longer static */ - if ((field->maxgrow == 0) || - (single_line_field && (field->dcols < field->maxgrow)) || - (!single_line_field && (field->drows < field->maxgrow))) - { - field->status |= _MAY_GROW; - /* a field with justification now changes its behavior, - so we must redisplay it */ - if (single_line_field && - (field->just != NO_JUSTIFICATION) && - Field_Really_Appears(field)) - { - res2 = Display_Field(field); - } - } - } - if (res2 != E_OK) - res = res2; - } - - returnCode(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int _nc_Set_Current_Field(FORM * form, -| FIELD * newfield) -| -| Description : Make the newfield the new current field. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form or field pointer -| E_SYSTEM_ERROR - some severe basic error -| E_NOT_CONNECTED - no fields are connected to the form -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Set_Current_Field(FORM *form, FIELD *newfield) -{ - FIELD *field; - WINDOW *new_window; - - T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), form, newfield)); - - if (!form || !newfield || !form->current || (newfield->form != form)) - returnCode(E_BAD_ARGUMENT); - - if ((form->status & _IN_DRIVER)) - returnCode(E_BAD_STATE); - - if (!(form->field)) - returnCode(E_NOT_CONNECTED); - - field = form->current; - - if ((field != newfield) || - !(form->status & _POSTED)) - { - if ((form->w) && - (field->opts & O_VISIBLE) && - (field->form->curpage == field->page)) - { - _nc_Refresh_Current_Field(form); - if (field->opts & O_PUBLIC) - { - if (field->drows > field->rows) - { - if (form->toprow == 0) - field->status &= ~_NEWTOP; - else - field->status |= _NEWTOP; - } - else - { - if (Justification_Allowed(field)) - { - Window_To_Buffer(form->w, field); - werase(form->w); - Perform_Justification(field, form->w); - wsyncup(form->w); - } - } - } - delwin(form->w); - form->w = (WINDOW *)0; - } - - field = newfield; - - if (Has_Invisible_Parts(field)) - new_window = newpad(field->drows, field->dcols); - else - new_window = derwin(Get_Form_Window(form), - field->rows, field->cols, field->frow, field->fcol); - - if (!new_window) - returnCode(E_SYSTEM_ERROR); - - form->current = field; - - if (form->w) - delwin(form->w); - form->w = new_window; - - form->status &= ~_WINDOW_MODIFIED; - Set_Field_Window_Attributes(field, form->w); - - if (Has_Invisible_Parts(field)) - { - werase(form->w); - Buffer_To_Window(field, form->w); - } - else - { - if (Justification_Allowed(field)) - { - werase(form->w); - Undo_Justification(field, form->w); - wsyncup(form->w); - } - } - - untouchwin(form->w); - } - - form->currow = form->curcol = form->toprow = form->begincol = 0; - returnCode(E_OK); -} - -/*---------------------------------------------------------------------------- - Intra-Field Navigation routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Next_Character(FORM * form) -| -| Description : Move to the next character in the field. In a multi-line -| field this wraps at the end of the line. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - at the rightmost position -+--------------------------------------------------------------------------*/ -static int -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)); - if ((form->curcol += step) == field->dcols) - { - if ((++(form->currow)) == field->drows) - { -#if GROW_IF_NAVIGATE - if (!Single_Line_Field(field) && Field_Grown(field, 1)) - { - form->curcol = 0; - returnCode(E_OK); - } -#endif - form->currow--; -#if GROW_IF_NAVIGATE - if (Single_Line_Field(field) && Field_Grown(field, 1)) - returnCode(E_OK); -#endif - form->curcol -= step; - returnCode(E_REQUEST_DENIED); - } - form->curcol = 0; - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Previous_Character(FORM * form) -| -| Description : Move to the previous character in the field. In a -| multi-line field this wraps and the beginning of the -| line. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - at the leftmost position -+--------------------------------------------------------------------------*/ -static int -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)); - if ((form->curcol -= amount) < 0) - { - if ((--(form->currow)) < 0) - { - form->currow++; - form->curcol = oldcol; - returnCode(E_REQUEST_DENIED); - } - form->curcol = form->current->dcols - 1; - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Next_Line(FORM * form) -| -| Description : Move to the beginning of the next line in the field -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - at the last line -+--------------------------------------------------------------------------*/ -static int -IFN_Next_Line(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("IFN_Next_Line(%p)"), form)); - if ((++(form->currow)) == field->drows) - { -#if GROW_IF_NAVIGATE - if (!Single_Line_Field(field) && Field_Grown(field, 1)) - returnCode(E_OK); -#endif - form->currow--; - returnCode(E_REQUEST_DENIED); - } - form->curcol = 0; - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Previous_Line(FORM * form) -| -| Description : Move to the beginning of the previous line in the field -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - at the first line -+--------------------------------------------------------------------------*/ -static int -IFN_Previous_Line(FORM *form) -{ - T((T_CALLED("IFN_Previous_Line(%p)"), form)); - if ((--(form->currow)) < 0) - { - form->currow++; - returnCode(E_REQUEST_DENIED); - } - form->curcol = 0; - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Next_Word(FORM * form) -| -| Description : Move to the beginning of the next word in the field. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - there is no next word -+--------------------------------------------------------------------------*/ -static int -IFN_Next_Word(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form); - FIELD_CELL *s; - FIELD_CELL *t; - - T((T_CALLED("IFN_Next_Word(%p)"), form)); - - /* We really need access to the data, so we have to synchronize */ - Synchronize_Buffer(form); - - /* Go to the first whitespace after the current position (including - current position). This is then the starting point to look for the - next non-blank data */ - s = Get_First_Whitespace_Character(bp, Buffer_Length(field) - - (int)(bp - field->buf)); - - /* Find the start of the next word */ - t = Get_Start_Of_Data(s, Buffer_Length(field) - - (int)(s - field->buf)); -#if !FRIENDLY_PREV_NEXT_WORD - if (s == t) - returnCode(E_REQUEST_DENIED); - else -#endif - { - Adjust_Cursor_Position(form, t); - returnCode(E_OK); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Previous_Word(FORM * form) -| -| Description : Move to the beginning of the previous word in the field. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - there is no previous word -+--------------------------------------------------------------------------*/ -static int -IFN_Previous_Word(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form); - FIELD_CELL *s; - FIELD_CELL *t; - bool again = FALSE; - - T((T_CALLED("IFN_Previous_Word(%p)"), form)); - - /* We really need access to the data, so we have to synchronize */ - Synchronize_Buffer(form); - - s = After_End_Of_Data(field->buf, (int)(bp - field->buf)); - /* s points now right after the last non-blank in the buffer before bp. - If bp was in a word, s equals bp. In this case we must find the last - whitespace in the buffer before bp and repeat the game to really find - the previous word! */ - if (s == bp) - again = TRUE; - - /* And next call now goes backward to look for the last whitespace - before that, pointing right after this, so it points to the begin - of the previous word. - */ - t = After_Last_Whitespace_Character(field->buf, (int)(s - field->buf)); -#if !FRIENDLY_PREV_NEXT_WORD - if (s == t) - returnCode(E_REQUEST_DENIED); -#endif - if (again) - { - /* and do it again, replacing bp by t */ - s = After_End_Of_Data(field->buf, (int)(t - field->buf)); - t = After_Last_Whitespace_Character(field->buf, (int)(s - field->buf)); -#if !FRIENDLY_PREV_NEXT_WORD - if (s == t) - returnCode(E_REQUEST_DENIED); -#endif - } - Adjust_Cursor_Position(form, t); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Beginning_Of_Field(FORM * form) -| -| Description : Place the cursor at the first non-pad character in -| the field. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -IFN_Beginning_Of_Field(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("IFN_Beginning_Of_Field(%p)"), form)); - Synchronize_Buffer(form); - Adjust_Cursor_Position(form, - Get_Start_Of_Data(field->buf, Buffer_Length(field))); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_End_Of_Field(FORM * form) -| -| Description : Place the cursor after the last non-pad character in -| the field. If the field occupies the last position in -| the buffer, the cursor is positioned on the last -| character. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -IFN_End_Of_Field(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *pos; - - T((T_CALLED("IFN_End_Of_Field(%p)"), form)); - Synchronize_Buffer(form); - pos = After_End_Of_Data(field->buf, Buffer_Length(field)); - if (pos == (field->buf + Buffer_Length(field))) - pos--; - Adjust_Cursor_Position(form, pos); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Beginning_Of_Line(FORM * form) -| -| Description : Place the cursor on the first non-pad character in -| the current line of the field. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -IFN_Beginning_Of_Line(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("IFN_Beginning_Of_Line(%p)"), form)); - Synchronize_Buffer(form); - Adjust_Cursor_Position(form, - Get_Start_Of_Data(Address_Of_Current_Row_In_Buffer(form), - field->dcols)); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_End_Of_Line(FORM * form) -| -| Description : Place the cursor after the last non-pad character in the -| current line of the field. If the field occupies the -| last column in the line, the cursor is positioned on the -| last character of the line. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -IFN_End_Of_Line(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *pos; - FIELD_CELL *bp; - - T((T_CALLED("IFN_End_Of_Line(%p)"), form)); - Synchronize_Buffer(form); - bp = Address_Of_Current_Row_In_Buffer(form); - pos = After_End_Of_Data(bp, field->dcols); - if (pos == (bp + field->dcols)) - pos--; - Adjust_Cursor_Position(form, pos); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Left_Character(FORM * form) -| -| Description : Move one character to the left in the current line. -| This doesn't cycle. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - already in first column -+--------------------------------------------------------------------------*/ -static int -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)); - if ((form->curcol -= amount) < 0) - { - form->curcol = oldcol; - returnCode(E_REQUEST_DENIED); - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Right_Character(FORM * form) -| -| Description : Move one character to the right in the current line. -| This doesn't cycle. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - already in last column -+--------------------------------------------------------------------------*/ -static int -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)); - if ((form->curcol += amount) >= form->current->dcols) - { -#if GROW_IF_NAVIGATE - FIELD *field = form->current; - - if (Single_Line_Field(field) && Field_Grown(field, 1)) - returnCode(E_OK); -#endif - form->curcol = oldcol; - returnCode(E_REQUEST_DENIED); - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Up_Character(FORM * form) -| -| Description : Move one line up. This doesn't cycle through the lines -| of the field. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - already in last column -+--------------------------------------------------------------------------*/ -static int -IFN_Up_Character(FORM *form) -{ - T((T_CALLED("IFN_Up_Character(%p)"), form)); - if ((--(form->currow)) < 0) - { - form->currow++; - returnCode(E_REQUEST_DENIED); - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int IFN_Down_Character(FORM * form) -| -| Description : Move one line down. This doesn't cycle through the -| lines of the field. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - already in last column -+--------------------------------------------------------------------------*/ -static int -IFN_Down_Character(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("IFN_Down_Character(%p)"), form)); - if ((++(form->currow)) == field->drows) - { -#if GROW_IF_NAVIGATE - if (!Single_Line_Field(field) && Field_Grown(field, 1)) - returnCode(E_OK); -#endif - --(form->currow); - returnCode(E_REQUEST_DENIED); - } - returnCode(E_OK); -} -/*---------------------------------------------------------------------------- - END of Intra-Field Navigation routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Vertical scrolling helper routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Generic(FORM *form, int nlines) -| -| Description : Scroll multi-line field forward (nlines>0) or -| backward (nlines<0) this many lines. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - can't scroll -+--------------------------------------------------------------------------*/ -static int -VSC_Generic(FORM *form, int nlines) -{ - FIELD *field = form->current; - int res = E_REQUEST_DENIED; - int rows_to_go = (nlines > 0 ? nlines : -nlines); - - if (nlines > 0) - { - if ((rows_to_go + form->toprow) > (field->drows - field->rows)) - rows_to_go = (field->drows - field->rows - form->toprow); - - if (rows_to_go > 0) - { - form->currow += rows_to_go; - form->toprow += rows_to_go; - res = E_OK; - } - } - else - { - if (rows_to_go > form->toprow) - rows_to_go = form->toprow; - - if (rows_to_go > 0) - { - form->currow -= rows_to_go; - form->toprow -= rows_to_go; - res = E_OK; - } - } - return (res); -} -/*---------------------------------------------------------------------------- - End of Vertical scrolling helper routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Vertical scrolling routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Vertical_Scrolling( -| int (* const fct) (FORM *), -| FORM * form) -| -| Description : Performs the generic vertical scrolling routines. -| This has to check for a multi-line field and to set -| the _NEWTOP flag if scrolling really occurred. -| -| Return Values : Propagated error code from low-level driver calls -+--------------------------------------------------------------------------*/ -static int -Vertical_Scrolling(int (*const fct) (FORM *), FORM *form) -{ - int res = E_REQUEST_DENIED; - - if (!Single_Line_Field(form->current)) - { - res = fct(form); - if (res == E_OK) - form->current->status |= _NEWTOP; - } - return (res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Scroll_Line_Forward(FORM * form) -| -| Description : Scroll multi-line field forward a line -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data ahead -+--------------------------------------------------------------------------*/ -static int -VSC_Scroll_Line_Forward(FORM *form) -{ - T((T_CALLED("VSC_Scroll_Line_Forward(%p)"), form)); - returnCode(VSC_Generic(form, 1)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Scroll_Line_Backward(FORM * form) -| -| Description : Scroll multi-line field backward a line -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data behind -+--------------------------------------------------------------------------*/ -static int -VSC_Scroll_Line_Backward(FORM *form) -{ - T((T_CALLED("VSC_Scroll_Line_Backward(%p)"), form)); - returnCode(VSC_Generic(form, -1)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Scroll_Page_Forward(FORM * form) -| -| Description : Scroll a multi-line field forward a page -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data ahead -+--------------------------------------------------------------------------*/ -static int -VSC_Scroll_Page_Forward(FORM *form) -{ - T((T_CALLED("VSC_Scroll_Page_Forward(%p)"), form)); - returnCode(VSC_Generic(form, form->current->rows)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Scroll_Half_Page_Forward(FORM * form) -| -| Description : Scroll a multi-line field forward half a page -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data ahead -+--------------------------------------------------------------------------*/ -static int -VSC_Scroll_Half_Page_Forward(FORM *form) -{ - T((T_CALLED("VSC_Scroll_Half_Page_Forward(%p)"), form)); - returnCode(VSC_Generic(form, (form->current->rows + 1) / 2)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Scroll_Page_Backward(FORM * form) -| -| Description : Scroll a multi-line field backward a page -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data behind -+--------------------------------------------------------------------------*/ -static int -VSC_Scroll_Page_Backward(FORM *form) -{ - T((T_CALLED("VSC_Scroll_Page_Backward(%p)"), form)); - returnCode(VSC_Generic(form, -(form->current->rows))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int VSC_Scroll_Half_Page_Backward(FORM * form) -| -| Description : Scroll a multi-line field backward half a page -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data behind -+--------------------------------------------------------------------------*/ -static int -VSC_Scroll_Half_Page_Backward(FORM *form) -{ - T((T_CALLED("VSC_Scroll_Half_Page_Backward(%p)"), form)); - returnCode(VSC_Generic(form, -((form->current->rows + 1) / 2))); -} -/*---------------------------------------------------------------------------- - End of Vertical scrolling routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Horizontal scrolling helper routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Generic(FORM *form, int ncolumns) -| -| Description : Scroll single-line field forward (ncolumns>0) or -| backward (ncolumns<0) this many columns. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - can't scroll -+--------------------------------------------------------------------------*/ -static int -HSC_Generic(FORM *form, int ncolumns) -{ - FIELD *field = form->current; - int res = E_REQUEST_DENIED; - int cols_to_go = (ncolumns > 0 ? ncolumns : -ncolumns); - - if (ncolumns > 0) - { - if ((cols_to_go + form->begincol) > (field->dcols - field->cols)) - cols_to_go = field->dcols - field->cols - form->begincol; - - if (cols_to_go > 0) - { - form->curcol += cols_to_go; - form->begincol += cols_to_go; - res = E_OK; - } - } - else - { - if (cols_to_go > form->begincol) - cols_to_go = form->begincol; - - if (cols_to_go > 0) - { - form->curcol -= cols_to_go; - form->begincol -= cols_to_go; - res = E_OK; - } - } - return (res); -} -/*---------------------------------------------------------------------------- - End of Horizontal scrolling helper routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Horizontal scrolling routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Horizontal_Scrolling( -| int (* const fct) (FORM *), -| FORM * form) -| -| Description : Performs the generic horizontal scrolling routines. -| This has to check for a single-line field. -| -| Return Values : Propagated error code from low-level driver calls -+--------------------------------------------------------------------------*/ -static int -Horizontal_Scrolling(int (*const fct) (FORM *), FORM *form) -{ - if (Single_Line_Field(form->current)) - return fct(form); - else - return (E_REQUEST_DENIED); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Scroll_Char_Forward(FORM * form) -| -| Description : Scroll single-line field forward a character -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data ahead -+--------------------------------------------------------------------------*/ -static int -HSC_Scroll_Char_Forward(FORM *form) -{ - T((T_CALLED("HSC_Scroll_Char_Forward(%p)"), form)); - returnCode(HSC_Generic(form, 1)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Scroll_Char_Backward(FORM * form) -| -| Description : Scroll single-line field backward a character -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data behind -+--------------------------------------------------------------------------*/ -static int -HSC_Scroll_Char_Backward(FORM *form) -{ - T((T_CALLED("HSC_Scroll_Char_Backward(%p)"), form)); - returnCode(HSC_Generic(form, -1)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Horizontal_Line_Forward(FORM* form) -| -| Description : Scroll single-line field forward a line -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data ahead -+--------------------------------------------------------------------------*/ -static int -HSC_Horizontal_Line_Forward(FORM *form) -{ - T((T_CALLED("HSC_Horizontal_Line_Forward(%p)"), form)); - returnCode(HSC_Generic(form, form->current->cols)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Horizontal_Half_Line_Forward(FORM* form) -| -| Description : Scroll single-line field forward half a line -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data ahead -+--------------------------------------------------------------------------*/ -static int -HSC_Horizontal_Half_Line_Forward(FORM *form) -{ - T((T_CALLED("HSC_Horizontal_Half_Line_Forward(%p)"), form)); - returnCode(HSC_Generic(form, (form->current->cols + 1) / 2)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Horizontal_Line_Backward(FORM* form) -| -| Description : Scroll single-line field backward a line -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data behind -+--------------------------------------------------------------------------*/ -static int -HSC_Horizontal_Line_Backward(FORM *form) -{ - T((T_CALLED("HSC_Horizontal_Line_Backward(%p)"), form)); - returnCode(HSC_Generic(form, -(form->current->cols))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int HSC_Horizontal_Half_Line_Backward(FORM* form) -| -| Description : Scroll single-line field backward half a line -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - no data behind -+--------------------------------------------------------------------------*/ -static int -HSC_Horizontal_Half_Line_Backward(FORM *form) -{ - T((T_CALLED("HSC_Horizontal_Half_Line_Backward(%p)"), form)); - returnCode(HSC_Generic(form, -((form->current->cols + 1) / 2))); -} - -/*---------------------------------------------------------------------------- - End of Horizontal scrolling routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Helper routines for Field Editing - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Is_There_Room_For_A_Line(FORM * form) -| -| Description : Check whether or not there is enough room in the -| buffer to enter a whole line. -| -| Return Values : TRUE - there is enough space -| FALSE - there is not enough space -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static bool -Is_There_Room_For_A_Line(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *begin_of_last_line, *s; - - Synchronize_Buffer(form); - begin_of_last_line = Address_Of_Row_In_Buffer(field, (field->drows - 1)); - s = After_End_Of_Data(begin_of_last_line, field->dcols); - return ((s == begin_of_last_line) ? TRUE : FALSE); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Is_There_Room_For_A_Char_In_Line(FORM * form) -| -| Description : Checks whether or not there is room for a new character -| in the current line. -| -| Return Values : TRUE - there is room -| FALSE - there is not enough room (line full) -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static bool -Is_There_Room_For_A_Char_In_Line(FORM *form) -{ - int last_char_in_line; - - wmove(form->w, form->currow, form->current->dcols - 1); - last_char_in_line = (int)(winch(form->w) & A_CHARTEXT); - wmove(form->w, form->currow, form->curcol); - return (((last_char_in_line == form->current->pad) || - is_blank(last_char_in_line)) ? TRUE : FALSE); -} - -#define There_Is_No_Room_For_A_Char_In_Line(f) \ - !Is_There_Room_For_A_Char_In_Line(f) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Insert_String( -| FORM * form, -| int row, -| char *txt, -| int len ) -| -| Description : Insert the 'len' characters beginning at pointer 'txt' -| into the 'row' of the 'form'. The insertion occurs -| on the beginning of the row, all other characters are -| moved to the right. After the text a pad character will -| be inserted to separate the text from the rest. If -| necessary the insertion moves characters on the next -| line to make place for the requested insertion string. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -static int -Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) -{ - FIELD *field = form->current; - FIELD_CELL *bp = Address_Of_Row_In_Buffer(field, row); - int datalen = (int)(After_End_Of_Data(bp, field->dcols) - bp); - int freelen = field->dcols - datalen; - int requiredlen = len + 1; - FIELD_CELL *split; - int result = E_REQUEST_DENIED; - - if (freelen >= requiredlen) - { - wmove(form->w, row, 0); - myINSNSTR(form->w, txt, len); - wmove(form->w, row, len); - myINSNSTR(form->w, &myBLANK, 1); - return E_OK; - } - else - { - /* we have to move characters on the next line. If we are on the - last line this may work, if the field is growable */ - if ((row == (field->drows - 1)) && Growable(field)) - { - if (!Field_Grown(field, 1)) - return (E_SYSTEM_ERROR); - /* !!!Side-Effect : might be changed due to growth!!! */ - bp = Address_Of_Row_In_Buffer(field, row); - } - - if (row < (field->drows - 1)) - { - split = - After_Last_Whitespace_Character(bp, - (int)(Get_Start_Of_Data(bp - + field->dcols - - requiredlen, - requiredlen) - - bp)); - /* split points now to the first character of the portion of the - line that must be moved to the next line */ - datalen = (int)(split - bp); /* + freelen has to stay on this line */ - freelen = field->dcols - (datalen + freelen); /* for the next line */ - - if ((result = Insert_String(form, row + 1, split, freelen)) == E_OK) - { - wmove(form->w, row, datalen); - wclrtoeol(form->w); - wmove(form->w, row, 0); - myINSNSTR(form->w, txt, len); - wmove(form->w, row, len); - myINSNSTR(form->w, &myBLANK, 1); - return E_OK; - } - } - return (result); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Wrapping_Not_Necessary_Or_Wrapping_Ok( -| FORM * form) -| -| Description : If a character has been entered into a field, it may -| be that wrapping has to occur. This routine checks -| whether or not wrapping is required and if so, performs -| the wrapping. -| -| Return Values : E_OK - no wrapping required or wrapping -| was successful -| E_REQUEST_DENIED - -| E_SYSTEM_ERROR - some system error -+--------------------------------------------------------------------------*/ -static int -Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form) -{ - FIELD *field = form->current; - int result = E_REQUEST_DENIED; - bool Last_Row = ((field->drows - 1) == form->currow); - - if ((field->opts & O_WRAP) && /* wrapping wanted */ - (!Single_Line_Field(field)) && /* must be multi-line */ - (There_Is_No_Room_For_A_Char_In_Line(form)) && /* line is full */ - (!Last_Row || Growable(field))) /* there are more lines */ - { - FIELD_CELL *bp; - FIELD_CELL *split; - int chars_to_be_wrapped; - int chars_to_remain_on_line; - - if (Last_Row) - { - /* the above logic already ensures, that in this case the field - is growable */ - if (!Field_Grown(field, 1)) - return E_SYSTEM_ERROR; - } - bp = Address_Of_Current_Row_In_Buffer(form); - Window_To_Buffer(form->w, 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 */ - chars_to_remain_on_line = (int)(split - bp); - chars_to_be_wrapped = field->dcols - chars_to_remain_on_line; - if (chars_to_remain_on_line > 0) - { - if ((result = Insert_String(form, form->currow + 1, split, - chars_to_be_wrapped)) == E_OK) - { - wmove(form->w, form->currow, chars_to_remain_on_line); - wclrtoeol(form->w); - if (form->curcol >= chars_to_remain_on_line) - { - form->currow++; - form->curcol -= chars_to_remain_on_line; - } - return E_OK; - } - } - else - return E_OK; - if (result != E_OK) - { - DeleteChar(form); - Window_To_Buffer(form->w, field); - result = E_REQUEST_DENIED; - } - } - else - result = E_OK; /* wrapping was not necessary */ - return (result); -} - -/*---------------------------------------------------------------------------- - Field Editing routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Field_Editing( -| int (* const fct) (FORM *), -| FORM * form) -| -| Description : Generic routine for field editing requests. The driver -| routines are only called for editable fields, the -| _WINDOW_MODIFIED flag is set if editing occurred. -| This is somewhat special due to the overload semantics -| of the NEW_LINE and DEL_PREV requests. -| -| Return Values : Error code from low level drivers. -+--------------------------------------------------------------------------*/ -static int -Field_Editing(int (*const fct) (FORM *), FORM *form) -{ - int res = E_REQUEST_DENIED; - - /* We have to deal here with the specific case of the overloaded - behavior of New_Line and Delete_Previous requests. - They may end up in navigational requests if we are on the first - character in a field. But navigation is also allowed on non- - editable fields. - */ - if ((fct == FE_Delete_Previous) && - (form->opts & O_BS_OVERLOAD) && - First_Position_In_Current_Field(form)) - { - res = Inter_Field_Navigation(FN_Previous_Field, form); - } - else - { - if (fct == FE_New_Line) - { - if ((form->opts & O_NL_OVERLOAD) && - First_Position_In_Current_Field(form)) - { - res = Inter_Field_Navigation(FN_Next_Field, form); - } - else - /* FE_New_Line deals itself with the _WINDOW_MODIFIED flag */ - res = fct(form); - } - else - { - /* From now on, everything must be editable */ - if (form->current->opts & O_EDIT) - { - res = fct(form); - if (res == E_OK) - form->status |= _WINDOW_MODIFIED; - } - } - } - return res; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_New_Line(FORM * form) -| -| Description : Perform a new line request. This is rather complex -| compared to other routines in this code due to the -| rather difficult to understand description in the -| manuals. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - new line not allowed -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -static int -FE_New_Line(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *bp, *t; - bool Last_Row = ((field->drows - 1) == form->currow); - - T((T_CALLED("FE_New_Line(%p)"), form)); - if (form->status & _OVLMODE) - { - if (Last_Row && - (!(Growable(field) && !Single_Line_Field(field)))) - { - if (!(form->opts & O_NL_OVERLOAD)) - returnCode(E_REQUEST_DENIED); - wmove(form->w, form->currow, form->curcol); - wclrtoeol(form->w); - /* we have to set this here, although it is also - handled in the generic routine. The reason is, - that FN_Next_Field may fail, but the form is - definitively changed */ - form->status |= _WINDOW_MODIFIED; - returnCode(Inter_Field_Navigation(FN_Next_Field, form)); - } - else - { - if (Last_Row && !Field_Grown(field, 1)) - { - /* N.B.: due to the logic in the 'if', LastRow==TRUE - means here that the field is growable and not - a single-line field */ - returnCode(E_SYSTEM_ERROR); - } - wmove(form->w, form->currow, form->curcol); - wclrtoeol(form->w); - form->currow++; - form->curcol = 0; - form->status |= _WINDOW_MODIFIED; - returnCode(E_OK); - } - } - else - { - /* Insert Mode */ - if (Last_Row && - !(Growable(field) && !Single_Line_Field(field))) - { - if (!(form->opts & O_NL_OVERLOAD)) - returnCode(E_REQUEST_DENIED); - returnCode(Inter_Field_Navigation(FN_Next_Field, form)); - } - else - { - bool May_Do_It = !Last_Row && Is_There_Room_For_A_Line(form); - - if (!(May_Do_It || Growable(field))) - returnCode(E_REQUEST_DENIED); - if (!May_Do_It && !Field_Grown(field, 1)) - returnCode(E_SYSTEM_ERROR); - - bp = Address_Of_Current_Position_In_Buffer(form); - t = After_End_Of_Data(bp, field->dcols - form->curcol); - wmove(form->w, form->currow, form->curcol); - wclrtoeol(form->w); - form->currow++; - form->curcol = 0; - wmove(form->w, form->currow, form->curcol); - winsertln(form->w); - myADDNSTR(form->w, bp, (int)(t - bp)); - form->status |= _WINDOW_MODIFIED; - returnCode(E_OK); - } - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Insert_Character(FORM * form) -| -| Description : Insert blank character at the cursor position -| -| Return Values : E_OK -| E_REQUEST_DENIED -+--------------------------------------------------------------------------*/ -static int -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))) - { - bool There_Is_Room = Is_There_Room_For_A_Char_In_Line(form); - - if (There_Is_Room || - ((Single_Line_Field(field) && Growable(field)))) - { - if (!There_Is_Room && !Field_Grown(field, 1)) - result = E_SYSTEM_ERROR; - else - { - winsch(form->w, (chtype)C_BLANK); - result = Wrapping_Not_Necessary_Or_Wrapping_Ok(form); - } - } - } - returnCode(result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Insert_Line(FORM * form) -| -| Description : Insert a blank line at the cursor position -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - line can not be inserted -+--------------------------------------------------------------------------*/ -static int -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))) - { - bool Maybe_Done = (form->currow != (field->drows - 1)) && - Is_There_Room_For_A_Line(form); - - if (!Single_Line_Field(field) && - (Maybe_Done || Growable(field))) - { - if (!Maybe_Done && !Field_Grown(field, 1)) - result = E_SYSTEM_ERROR; - else - { - form->curcol = 0; - winsertln(form->w); - result = E_OK; - } - } - } - returnCode(result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Delete_Character(FORM * form) -| -| Description : Delete character at the cursor position -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -FE_Delete_Character(FORM *form) -{ - T((T_CALLED("FE_Delete_Character(%p)"), form)); - DeleteChar(form); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Delete_Previous(FORM * form) -| -| Description : Delete character before cursor. Again this is a rather -| difficult piece compared to others due to the overloading -| semantics of backspace. -| N.B.: The case of overloaded BS on first field position -| is already handled in the generic routine. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - Character can't be deleted -+--------------------------------------------------------------------------*/ -static int -FE_Delete_Previous(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("FE_Delete_Previous(%p)"), form)); - if (First_Position_In_Current_Field(form)) - returnCode(E_REQUEST_DENIED); - - if ((--(form->curcol)) < 0) - { - FIELD_CELL *this_line, *prev_line, *prev_end, *this_end; - int this_row = form->currow; - - form->curcol++; - if (form->status & _OVLMODE) - returnCode(E_REQUEST_DENIED); - - prev_line = Address_Of_Row_In_Buffer(field, (form->currow - 1)); - this_line = Address_Of_Row_In_Buffer(field, (form->currow)); - Synchronize_Buffer(form); - prev_end = After_End_Of_Data(prev_line, field->dcols); - this_end = After_End_Of_Data(this_line, field->dcols); - if ((int)(this_end - this_line) > - (field->cols - (int)(prev_end - prev_line))) - returnCode(E_REQUEST_DENIED); - wmove(form->w, form->currow, form->curcol); - wdeleteln(form->w); - Adjust_Cursor_Position(form, prev_end); - /* - * If we did not really move to the previous line, help the user a - * little. It is however a little inconsistent. Normally, when - * backspacing around the point where text wraps to a new line in a - * multi-line form, we absorb one keystroke for the wrapping point. That - * is consistent with SVr4 forms. However, SVr4 does not allow typing - * into the last column of the field, and requires the user to enter a - * newline to move to the next line. Therefore it can consistently eat - * that keystroke. Since ncurses allows the last column, it wraps - * automatically (given the proper options). But we cannot eat the - * keystroke to back over the wrapping point, since that would put the - * cursor past the end of the form field. In this case, just delete the - * character at the end of the field. - */ - if (form->currow == this_row && this_row > 0) - { - form->currow -= 1; - form->curcol = field->dcols - 1; - DeleteChar(form); - } - else - { - wmove(form->w, form->currow, form->curcol); - myADDNSTR(form->w, this_line, (int)(this_end - this_line)); - } - } - else - { - DeleteChar(form); - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Delete_Line(FORM * form) -| -| Description : Delete line at cursor position. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -FE_Delete_Line(FORM *form) -{ - T((T_CALLED("FE_Delete_Line(%p)"), form)); - form->curcol = 0; - wdeleteln(form->w); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Delete_Word(FORM * form) -| -| Description : Delete word at cursor position -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - failure -+--------------------------------------------------------------------------*/ -static int -FE_Delete_Word(FORM *form) -{ - FIELD *field = form->current; - FIELD_CELL *bp = Address_Of_Current_Row_In_Buffer(form); - FIELD_CELL *ep = bp + field->dcols; - FIELD_CELL *cp = bp + form->curcol; - FIELD_CELL *s; - - T((T_CALLED("FE_Delete_Word(%p)"), form)); - Synchronize_Buffer(form); - if (ISBLANK(*cp)) - returnCode(E_REQUEST_DENIED); /* not in word */ - - /* move cursor to begin of word and erase to end of screen-line */ - Adjust_Cursor_Position(form, - After_Last_Whitespace_Character(bp, form->curcol)); - wmove(form->w, form->currow, form->curcol); - wclrtoeol(form->w); - - /* skip over word in buffer */ - s = Get_First_Whitespace_Character(cp, (int)(ep - cp)); - /* to begin of next word */ - s = Get_Start_Of_Data(s, (int)(ep - s)); - if ((s != cp) && !ISBLANK(*s)) - { - /* copy remaining line to window */ - myADDNSTR(form->w, s, (int)(s - After_End_Of_Data(s, (int)(ep - s)))); - } - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Clear_To_End_Of_Line(FORM * form) -| -| Description : Clear to end of current line. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -FE_Clear_To_End_Of_Line(FORM *form) -{ - T((T_CALLED("FE_Clear_To_End_Of_Line(%p)"), form)); - wmove(form->w, form->currow, form->curcol); - wclrtoeol(form->w); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Clear_To_End_Of_Field(FORM * form) -| -| Description : Clear to end of field. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -FE_Clear_To_End_Of_Field(FORM *form) -{ - T((T_CALLED("FE_Clear_To_End_Of_Field(%p)"), form)); - wmove(form->w, form->currow, form->curcol); - wclrtobot(form->w); - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FE_Clear_Field(FORM * form) -| -| Description : Clear entire field. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -FE_Clear_Field(FORM *form) -{ - T((T_CALLED("FE_Clear_Field(%p)"), form)); - form->currow = form->curcol = 0; - werase(form->w); - returnCode(E_OK); -} -/*---------------------------------------------------------------------------- - END of Field Editing routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Edit Mode routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int EM_Overlay_Mode(FORM * form) -| -| Description : Switch to overlay mode. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -EM_Overlay_Mode(FORM *form) -{ - T((T_CALLED("EM_Overlay_Mode(%p)"), form)); - form->status |= _OVLMODE; - returnCode(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int EM_Insert_Mode(FORM * form) -| -| Description : Switch to insert mode -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -static int -EM_Insert_Mode(FORM *form) -{ - T((T_CALLED("EM_Insert_Mode(%p)"), form)); - form->status &= ~_OVLMODE; - returnCode(E_OK); -} - -/*---------------------------------------------------------------------------- - END of Edit Mode routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Helper routines for Choice Requests - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Next_Choice( -| FIELDTYPE * typ, -| FIELD * field, -| TypeArgument *argp) -| -| Description : Get the next field choice. For linked types this is -| done recursively. -| -| Return Values : TRUE - next choice successfully retrieved -| FALSE - couldn't retrieve next choice -+--------------------------------------------------------------------------*/ -static bool -Next_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp) -{ - if (!typ || !(typ->status & _HAS_CHOICE)) - return FALSE; - - if (typ->status & _LINKED_TYPE) - { - assert(argp); - return ( - Next_Choice(typ->left, field, argp->left) || - Next_Choice(typ->right, field, argp->right)); - } - else - { - assert(typ->next); - return typ->next(field, (void *)argp); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Previous_Choice( -| FIELDTYPE * typ, -| FIELD * field, -| TypeArgument *argp) -| -| Description : Get the previous field choice. For linked types this -| is done recursively. -| -| Return Values : TRUE - previous choice successfully retrieved -| FALSE - couldn't retrieve previous choice -+--------------------------------------------------------------------------*/ -static bool -Previous_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp) -{ - if (!typ || !(typ->status & _HAS_CHOICE)) - return FALSE; - - if (typ->status & _LINKED_TYPE) - { - assert(argp); - return ( - Previous_Choice(typ->left, field, argp->left) || - Previous_Choice(typ->right, field, argp->right)); - } - else - { - assert(typ->prev); - return typ->prev(field, (void *)argp); - } -} -/*---------------------------------------------------------------------------- - End of Helper routines for Choice Requests - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Routines for Choice Requests - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int CR_Next_Choice(FORM * form) -| -| Description : Get the next field choice. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - next choice couldn't be retrieved -+--------------------------------------------------------------------------*/ -static int -CR_Next_Choice(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("CR_Next_Choice(%p)"), form)); - Synchronize_Buffer(form); - returnCode((Next_Choice(field->type, field, (TypeArgument *)(field->arg))) - ? E_OK - : E_REQUEST_DENIED); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int CR_Previous_Choice(FORM * form) -| -| Description : Get the previous field choice. -| -| Return Values : E_OK - success -| E_REQUEST_DENIED - prev. choice couldn't be retrieved -+--------------------------------------------------------------------------*/ -static int -CR_Previous_Choice(FORM *form) -{ - FIELD *field = form->current; - - T((T_CALLED("CR_Previous_Choice(%p)"), form)); - Synchronize_Buffer(form); - returnCode((Previous_Choice(field->type, field, (TypeArgument *)(field->arg))) - ? E_OK - : E_REQUEST_DENIED); -} -/*---------------------------------------------------------------------------- - End of Routines for Choice Requests - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Helper routines for Field Validations. - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_Field( -| FIELDTYPE * typ, -| FIELD * field, -| TypeArgument * argp) -| -| Description : Check the field according to its fieldtype and its -| actual arguments. For linked fieldtypes this is done -| recursively. -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid. -+--------------------------------------------------------------------------*/ -static bool -Check_Field(FIELDTYPE *typ, FIELD *field, TypeArgument *argp) -{ - if (typ) - { - if (field->opts & O_NULLOK) - { - FIELD_CELL *bp = field->buf; - - assert(bp); - while (ISBLANK(*bp)) - { - bp++; - } - if (CharOf(*bp) == 0) - return TRUE; - } - - if (typ->status & _LINKED_TYPE) - { - assert(argp); - return ( - Check_Field(typ->left, field, argp->left) || - Check_Field(typ->right, field, argp->right)); - } - else - { - if (typ->fcheck) - return typ->fcheck(field, (void *)argp); - } - } - return TRUE; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : bool _nc_Internal_Validation(FORM * form ) -| -| Description : Validate the current field of the form. -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -_nc_Internal_Validation(FORM *form) -{ - FIELD *field; - - field = form->current; - - Synchronize_Buffer(form); - if ((form->status & _FCHECK_REQUIRED) || - (!(field->opts & O_PASSOK))) - { - if (!Check_Field(field->type, field, (TypeArgument *)(field->arg))) - return FALSE; - form->status &= ~_FCHECK_REQUIRED; - field->status |= _CHANGED; - Synchronize_Linked_Fields(field); - } - return TRUE; -} -/*---------------------------------------------------------------------------- - End of Helper routines for Field Validations. - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Routines for Field Validation. - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FV_Validation(FORM * form) -| -| Description : Validate the current field of the form. -| -| Return Values : E_OK - field valid -| E_INVALID_FIELD - field not valid -+--------------------------------------------------------------------------*/ -static int -FV_Validation(FORM *form) -{ - T((T_CALLED("FV_Validation(%p)"), form)); - if (_nc_Internal_Validation(form)) - returnCode(E_OK); - else - returnCode(E_INVALID_FIELD); -} -/*---------------------------------------------------------------------------- - End of routines for Field Validation. - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Helper routines for Inter-Field Navigation - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Next_Field_On_Page(FIELD * field) -| -| Description : Get the next field after the given field on the current -| page. The order of fields is the one defined by the -| fields array. Only visible and active fields are -| counted. -| -| Return Values : Pointer to the next field. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD * -Next_Field_On_Page(FIELD *field) -{ - FORM *form = field->form; - FIELD **field_on_page = &form->field[field->index]; - FIELD **first_on_page = &form->field[form->page[form->curpage].pmin]; - FIELD **last_on_page = &form->field[form->page[form->curpage].pmax]; - - do - { - field_on_page = - (field_on_page == last_on_page) ? first_on_page : field_on_page + 1; - if (Field_Is_Selectable(*field_on_page)) - break; - } - while (field != (*field_on_page)); - return (*field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD* _nc_First_Active_Field(FORM * form) -| -| Description : Get the first active field on the current page, -| if there are such. If there are none, get the first -| visible field on the page. If there are also none, -| we return the first field on page and hope the best. -| -| Return Values : Pointer to calculated field. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) -_nc_First_Active_Field(FORM *form) -{ - FIELD **last_on_page = &form->field[form->page[form->curpage].pmax]; - FIELD *proposed = Next_Field_On_Page(*last_on_page); - - if (proposed == *last_on_page) - { - /* there might be the special situation, where there is no - active and visible field on the current page. We then select - the first visible field on this readonly page - */ - if (Field_Is_Not_Selectable(proposed)) - { - FIELD **field = &form->field[proposed->index]; - FIELD **first = &form->field[form->page[form->curpage].pmin]; - - do - { - field = (field == last_on_page) ? first : field + 1; - if (((*field)->opts & O_VISIBLE)) - break; - } - while (proposed != (*field)); - - proposed = *field; - - if ((proposed == *last_on_page) && !(proposed->opts & O_VISIBLE)) - { - /* This means, there is also no visible field on the page. - So we propose the first one and hope the very best... - Some very clever user has designed a readonly and invisible - page on this form. - */ - proposed = *first; - } - } - } - return (proposed); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Previous_Field_On_Page(FIELD * field) -| -| Description : Get the previous field before the given field on the -| current page. The order of fields is the one defined by -| the fields array. Only visible and active fields are -| counted. -| -| Return Values : Pointer to the previous field. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD * -Previous_Field_On_Page(FIELD *field) -{ - FORM *form = field->form; - FIELD **field_on_page = &form->field[field->index]; - FIELD **first_on_page = &form->field[form->page[form->curpage].pmin]; - FIELD **last_on_page = &form->field[form->page[form->curpage].pmax]; - - do - { - field_on_page = - (field_on_page == first_on_page) ? last_on_page : field_on_page - 1; - if (Field_Is_Selectable(*field_on_page)) - break; - } - while (field != (*field_on_page)); - - return (*field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Sorted_Next_Field(FIELD * field) -| -| Description : Get the next field after the given field on the current -| page. The order of fields is the one defined by the -| (row,column) geometry, rows are major. -| -| Return Values : Pointer to the next field. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD * -Sorted_Next_Field(FIELD *field) -{ - FIELD *field_on_page = field; - - do - { - field_on_page = field_on_page->snext; - if (Field_Is_Selectable(field_on_page)) - break; - } - while (field_on_page != field); - - return (field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Sorted_Previous_Field(FIELD * field) -| -| Description : Get the previous field before the given field on the -| current page. The order of fields is the one defined -| by the (row,column) geometry, rows are major. -| -| Return Values : Pointer to the previous field. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD * -Sorted_Previous_Field(FIELD *field) -{ - FIELD *field_on_page = field; - - do - { - field_on_page = field_on_page->sprev; - if (Field_Is_Selectable(field_on_page)) - break; - } - while (field_on_page != field); - - return (field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Left_Neighbor_Field(FIELD * field) -| -| Description : Get the left neighbor of the field on the same line -| and the same page. Cycles through the line. -| -| Return Values : Pointer to left neighbor field. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD * -Left_Neighbor_Field(FIELD *field) -{ - FIELD *field_on_page = field; - - /* For a field that has really a left neighbor, the while clause - immediately fails and the loop is left, positioned at the right - neighbor. Otherwise we cycle backwards through the sorted field list - until we enter the same line (from the right end). - */ - do - { - field_on_page = Sorted_Previous_Field(field_on_page); - } - while (field_on_page->frow != field->frow); - - return (field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Right_Neighbor_Field(FIELD * field) -| -| Description : Get the right neighbor of the field on the same line -| and the same page. -| -| Return Values : Pointer to right neighbor field. -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static FIELD * -Right_Neighbor_Field(FIELD *field) -{ - FIELD *field_on_page = field; - - /* See the comments on Left_Neighbor_Field to understand how it works */ - do - { - field_on_page = Sorted_Next_Field(field_on_page); - } - while (field_on_page->frow != field->frow); - - return (field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Upper_Neighbor_Field(FIELD * field) -| -| Description : Because of the row-major nature of sorting the fields, -| it is more difficult to define whats the upper neighbor -| field really means. We define that it must be on a -| 'previous' line (cyclic order!) and is the rightmost -| field laying on the left side of the given field. If -| this set is empty, we take the first field on the line. -| -| Return Values : Pointer to the upper neighbor field. -+--------------------------------------------------------------------------*/ -static FIELD * -Upper_Neighbor_Field(FIELD *field) -{ - FIELD *field_on_page = field; - int frow = field->frow; - int fcol = field->fcol; - - /* Walk back to the 'previous' line. The second term in the while clause - just guarantees that we stop if we cycled through the line because - there might be no 'previous' line if the page has just one line. - */ - do - { - field_on_page = Sorted_Previous_Field(field_on_page); - } - while (field_on_page->frow == frow && field_on_page->fcol != fcol); - - if (field_on_page->frow != frow) - { - /* We really found a 'previous' line. We are positioned at the - rightmost field on this line */ - frow = field_on_page->frow; - - /* We walk to the left as long as we are really right of the - field. */ - while (field_on_page->frow == frow && field_on_page->fcol > fcol) - field_on_page = Sorted_Previous_Field(field_on_page); - - /* If we wrapped, just go to the right which is the first field on - the row */ - if (field_on_page->frow != frow) - field_on_page = Sorted_Next_Field(field_on_page); - } - - return (field_on_page); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static FIELD *Down_Neighbor_Field(FIELD * field) -| -| Description : Because of the row-major nature of sorting the fields, -| its more difficult to define whats the down neighbor -| field really means. We define that it must be on a -| 'next' line (cyclic order!) and is the leftmost -| field laying on the right side of the given field. If -| this set is empty, we take the last field on the line. -| -| Return Values : Pointer to the upper neighbor field. -+--------------------------------------------------------------------------*/ -static FIELD * -Down_Neighbor_Field(FIELD *field) -{ - FIELD *field_on_page = field; - int frow = field->frow; - int fcol = field->fcol; - - /* Walk forward to the 'next' line. The second term in the while clause - just guarantees that we stop if we cycled through the line because - there might be no 'next' line if the page has just one line. - */ - do - { - field_on_page = Sorted_Next_Field(field_on_page); - } - while (field_on_page->frow == frow && field_on_page->fcol != fcol); - - if (field_on_page->frow != frow) - { - /* We really found a 'next' line. We are positioned at the rightmost - field on this line */ - frow = field_on_page->frow; - - /* We walk to the right as long as we are really left of the - field. */ - while (field_on_page->frow == frow && field_on_page->fcol < fcol) - field_on_page = Sorted_Next_Field(field_on_page); - - /* If we wrapped, just go to the left which is the last field on - the row */ - if (field_on_page->frow != frow) - field_on_page = Sorted_Previous_Field(field_on_page); - } - - return (field_on_page); -} - -/*---------------------------------------------------------------------------- - Inter-Field Navigation routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Inter_Field_Navigation( -| int (* const fct) (FORM *), -| FORM * form) -| -| Description : Generic behavior for changing the current field, the -| field is left and a new field is entered. So the field -| must be validated and the field init/term hooks must -| be called. -| -| Return Values : E_OK - success -| E_INVALID_FIELD - field is invalid -| some other - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -Inter_Field_Navigation(int (*const fct) (FORM *), FORM *form) -{ - int res; - - if (!_nc_Internal_Validation(form)) - res = E_INVALID_FIELD; - else - { - Call_Hook(form, fieldterm); - res = fct(form); - Call_Hook(form, fieldinit); - } - return res; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Next_Field(FORM * form) -| -| Description : Move to the next field on the current page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Next_Field(FORM *form) -{ - T((T_CALLED("FN_Next_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Next_Field_On_Page(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Previous_Field(FORM * form) -| -| Description : Move to the previous field on the current page of the -| form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Previous_Field(FORM *form) -{ - T((T_CALLED("FN_Previous_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Previous_Field_On_Page(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_First_Field(FORM * form) -| -| Description : Move to the first field on the current page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_First_Field(FORM *form) -{ - T((T_CALLED("FN_First_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Next_Field_On_Page(form->field[form->page[form->curpage].pmax]))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Last_Field(FORM * form) -| -| Description : Move to the last field on the current page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Last_Field(FORM *form) -{ - T((T_CALLED("FN_Last_Field(%p)"), form)); - returnCode( - _nc_Set_Current_Field(form, - Previous_Field_On_Page(form->field[form->page[form->curpage].pmin]))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Sorted_Next_Field(FORM * form) -| -| Description : Move to the sorted next field on the current page -| of the form. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Sorted_Next_Field(FORM *form) -{ - T((T_CALLED("FN_Sorted_Next_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Sorted_Next_Field(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Sorted_Previous_Field(FORM * form) -| -| Description : Move to the sorted previous field on the current page -| of the form. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Sorted_Previous_Field(FORM *form) -{ - T((T_CALLED("FN_Sorted_Previous_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Sorted_Previous_Field(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Sorted_First_Field(FORM * form) -| -| Description : Move to the sorted first field on the current page -| of the form. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Sorted_First_Field(FORM *form) -{ - T((T_CALLED("FN_Sorted_First_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Sorted_Next_Field(form->field[form->page[form->curpage].smax]))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Sorted_Last_Field(FORM * form) -| -| Description : Move to the sorted last field on the current page -| of the form. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Sorted_Last_Field(FORM *form) -{ - T((T_CALLED("FN_Sorted_Last_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Sorted_Previous_Field(form->field[form->page[form->curpage].smin]))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Left_Field(FORM * form) -| -| Description : Get the field on the left of the current field on the -| same line and the same page. Cycles through the line. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Left_Field(FORM *form) -{ - T((T_CALLED("FN_Left_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Left_Neighbor_Field(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Right_Field(FORM * form) -| -| Description : Get the field on the right of the current field on the -| same line and the same page. Cycles through the line. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Right_Field(FORM *form) -{ - T((T_CALLED("FN_Right_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Right_Neighbor_Field(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Up_Field(FORM * form) -| -| Description : Get the upper neighbor of the current field. This -| cycles through the page. See the comments of the -| Upper_Neighbor_Field function to understand how -| 'upper' is defined. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Up_Field(FORM *form) -{ - T((T_CALLED("FN_Up_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Upper_Neighbor_Field(form->current))); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int FN_Down_Field(FORM * form) -| -| Description : Get the down neighbor of the current field. This -| cycles through the page. See the comments of the -| Down_Neighbor_Field function to understand how -| 'down' is defined. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -FN_Down_Field(FORM *form) -{ - T((T_CALLED("FN_Down_Field(%p)"), form)); - returnCode(_nc_Set_Current_Field(form, - Down_Neighbor_Field(form->current))); -} -/*---------------------------------------------------------------------------- - END of Field Navigation routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Helper routines for Page Navigation - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int _nc_Set_Form_Page(FORM * form, -| int page, -| FIELD * field) -| -| Description : Make the given page number the current page and make -| the given field the current field on the page. If -| for the field NULL is given, make the first field on -| the page the current field. The routine acts only -| if the requested page is not the current page. -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -| E_BAD_ARGUMENT - invalid field pointer -| E_SYSTEM_ERROR - some severe basic error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Set_Form_Page(FORM *form, int page, FIELD *field) -{ - int res = E_OK; - - if ((form->curpage != page)) - { - FIELD *last_field, *field_on_page; - - werase(Get_Form_Window(form)); - form->curpage = page; - last_field = field_on_page = form->field[form->page[page].smin]; - do - { - if (field_on_page->opts & O_VISIBLE) - if ((res = Display_Field(field_on_page)) != E_OK) - return (res); - field_on_page = field_on_page->snext; - } - while (field_on_page != last_field); - - if (field) - res = _nc_Set_Current_Field(form, field); - else - /* N.B.: we don't encapsulate this by Inter_Field_Navigation(), - because this is already executed in a page navigation - context that contains field navigation - */ - res = FN_First_Field(form); - } - return (res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Next_Page_Number(const FORM * form) -| -| Description : Calculate the page number following the current page -| number. This cycles if the highest page number is -| reached. -| -| Return Values : The next page number -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static int -Next_Page_Number(const FORM *form) -{ - return (form->curpage + 1) % form->maxpage; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Previous_Page_Number(const FORM * form) -| -| Description : Calculate the page number before the current page -| number. This cycles if the first page number is -| reached. -| -| Return Values : The previous page number -+--------------------------------------------------------------------------*/ -NCURSES_INLINE static int -Previous_Page_Number(const FORM *form) -{ - return (form->curpage != 0 ? form->curpage - 1 : form->maxpage - 1); -} - -/*---------------------------------------------------------------------------- - Page Navigation routines - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Page_Navigation( -| int (* const fct) (FORM *), -| FORM * form) -| -| Description : Generic behavior for changing a page. This means -| that the field is left and a new field is entered. -| So the field must be validated and the field init/term -| hooks must be called. Because also the page is changed, -| the forms init/term hooks must be called also. -| -| Return Values : E_OK - success -| E_INVALID_FIELD - field is invalid -| some other - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -Page_Navigation(int (*const fct) (FORM *), FORM *form) -{ - int res; - - if (!_nc_Internal_Validation(form)) - res = E_INVALID_FIELD; - else - { - Call_Hook(form, fieldterm); - Call_Hook(form, formterm); - res = fct(form); - Call_Hook(form, forminit); - Call_Hook(form, fieldinit); - } - return res; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int PN_Next_Page(FORM * form) -| -| Description : Move to the next page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -PN_Next_Page(FORM *form) -{ - T((T_CALLED("PN_Next_Page(%p)"), form)); - returnCode(_nc_Set_Form_Page(form, Next_Page_Number(form), (FIELD *)0)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int PN_Previous_Page(FORM * form) -| -| Description : Move to the previous page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -PN_Previous_Page(FORM *form) -{ - T((T_CALLED("PN_Previous_Page(%p)"), form)); - returnCode(_nc_Set_Form_Page(form, Previous_Page_Number(form), (FIELD *)0)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int PN_First_Page(FORM * form) -| -| Description : Move to the first page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -PN_First_Page(FORM *form) -{ - T((T_CALLED("PN_First_Page(%p)"), form)); - returnCode(_nc_Set_Form_Page(form, 0, (FIELD *)0)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int PN_Last_Page(FORM * form) -| -| Description : Move to the last page of the form -| -| Return Values : E_OK - success -| != E_OK - error from subordinate call -+--------------------------------------------------------------------------*/ -static int -PN_Last_Page(FORM *form) -{ - T((T_CALLED("PN_Last_Page(%p)"), form)); - returnCode(_nc_Set_Form_Page(form, form->maxpage - 1, (FIELD *)0)); -} - -/*---------------------------------------------------------------------------- - END of Field Navigation routines - --------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------- - Helper routines for the core form driver. - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Data_Entry(FORM * form,int c) -| -| Description : Enter 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(FORM *form, int c) -{ - FIELD *field = form->current; - int result = E_REQUEST_DENIED; - - T((T_CALLED("Data_Entry(%p,%s)"), form, _tracechtype((chtype)c))); - if ((field->opts & O_EDIT) -#if FIX_FORM_INACTIVE_BUG - && (field->opts & O_ACTIVE) -#endif - ) - { - if ((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) - { - waddch(form->w, (chtype)c); - } - 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); - - winsch(form->w, (chtype)c); - } - - 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) && (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 - { -#if USE_WIDEC_SUPPORT - /* - * 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); -#else - IFN_Next_Character(form); -#endif - result = E_OK; - } - } - } - } - RETURN(result); -} - -/* Structure to describe the binding of a request code to a function. - The member keycode codes the request value as well as the generic - routine to use for the request. The code for the generic routine - is coded in the upper 16 Bits while the request code is coded in - the lower 16 bits. - - In terms of C++ you might think of a request as a class with a - virtual method "perform". The different types of request are - derived from this base class and overload (or not) the base class - implementation of perform. -*/ -typedef struct -{ - int keycode; /* must be at least 32 bit: hi:mode, lo: key */ - int (*cmd) (FORM *); /* low level driver routine for this key */ -} -Binding_Info; - -/* You may see this is the class-id of the request type class */ -#define ID_PN (0x00000000) /* Page navigation */ -#define ID_FN (0x00010000) /* Inter-Field navigation */ -#define ID_IFN (0x00020000) /* Intra-Field navigation */ -#define ID_VSC (0x00030000) /* Vertical Scrolling */ -#define ID_HSC (0x00040000) /* Horizontal Scrolling */ -#define ID_FE (0x00050000) /* Field Editing */ -#define ID_EM (0x00060000) /* Edit Mode */ -#define ID_FV (0x00070000) /* Field Validation */ -#define ID_CH (0x00080000) /* Choice */ -#define ID_Mask (0xffff0000) -#define Key_Mask (0x0000ffff) -#define ID_Shft (16) - -/* This array holds all the Binding Infos */ -/* *INDENT-OFF* */ -static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] = -{ - { REQ_NEXT_PAGE |ID_PN ,PN_Next_Page}, - { REQ_PREV_PAGE |ID_PN ,PN_Previous_Page}, - { REQ_FIRST_PAGE |ID_PN ,PN_First_Page}, - { REQ_LAST_PAGE |ID_PN ,PN_Last_Page}, - - { REQ_NEXT_FIELD |ID_FN ,FN_Next_Field}, - { REQ_PREV_FIELD |ID_FN ,FN_Previous_Field}, - { REQ_FIRST_FIELD |ID_FN ,FN_First_Field}, - { REQ_LAST_FIELD |ID_FN ,FN_Last_Field}, - { REQ_SNEXT_FIELD |ID_FN ,FN_Sorted_Next_Field}, - { REQ_SPREV_FIELD |ID_FN ,FN_Sorted_Previous_Field}, - { REQ_SFIRST_FIELD |ID_FN ,FN_Sorted_First_Field}, - { REQ_SLAST_FIELD |ID_FN ,FN_Sorted_Last_Field}, - { REQ_LEFT_FIELD |ID_FN ,FN_Left_Field}, - { REQ_RIGHT_FIELD |ID_FN ,FN_Right_Field}, - { REQ_UP_FIELD |ID_FN ,FN_Up_Field}, - { REQ_DOWN_FIELD |ID_FN ,FN_Down_Field}, - - { REQ_NEXT_CHAR |ID_IFN ,IFN_Next_Character}, - { REQ_PREV_CHAR |ID_IFN ,IFN_Previous_Character}, - { REQ_NEXT_LINE |ID_IFN ,IFN_Next_Line}, - { REQ_PREV_LINE |ID_IFN ,IFN_Previous_Line}, - { REQ_NEXT_WORD |ID_IFN ,IFN_Next_Word}, - { REQ_PREV_WORD |ID_IFN ,IFN_Previous_Word}, - { REQ_BEG_FIELD |ID_IFN ,IFN_Beginning_Of_Field}, - { REQ_END_FIELD |ID_IFN ,IFN_End_Of_Field}, - { REQ_BEG_LINE |ID_IFN ,IFN_Beginning_Of_Line}, - { REQ_END_LINE |ID_IFN ,IFN_End_Of_Line}, - { REQ_LEFT_CHAR |ID_IFN ,IFN_Left_Character}, - { REQ_RIGHT_CHAR |ID_IFN ,IFN_Right_Character}, - { REQ_UP_CHAR |ID_IFN ,IFN_Up_Character}, - { REQ_DOWN_CHAR |ID_IFN ,IFN_Down_Character}, - - { REQ_NEW_LINE |ID_FE ,FE_New_Line}, - { REQ_INS_CHAR |ID_FE ,FE_Insert_Character}, - { REQ_INS_LINE |ID_FE ,FE_Insert_Line}, - { REQ_DEL_CHAR |ID_FE ,FE_Delete_Character}, - { REQ_DEL_PREV |ID_FE ,FE_Delete_Previous}, - { REQ_DEL_LINE |ID_FE ,FE_Delete_Line}, - { REQ_DEL_WORD |ID_FE ,FE_Delete_Word}, - { REQ_CLR_EOL |ID_FE ,FE_Clear_To_End_Of_Line}, - { REQ_CLR_EOF |ID_FE ,FE_Clear_To_End_Of_Field}, - { REQ_CLR_FIELD |ID_FE ,FE_Clear_Field}, - - { REQ_OVL_MODE |ID_EM ,EM_Overlay_Mode}, - { REQ_INS_MODE |ID_EM ,EM_Insert_Mode}, - - { REQ_SCR_FLINE |ID_VSC ,VSC_Scroll_Line_Forward}, - { REQ_SCR_BLINE |ID_VSC ,VSC_Scroll_Line_Backward}, - { REQ_SCR_FPAGE |ID_VSC ,VSC_Scroll_Page_Forward}, - { REQ_SCR_BPAGE |ID_VSC ,VSC_Scroll_Page_Backward}, - { REQ_SCR_FHPAGE |ID_VSC ,VSC_Scroll_Half_Page_Forward}, - { REQ_SCR_BHPAGE |ID_VSC ,VSC_Scroll_Half_Page_Backward}, - - { REQ_SCR_FCHAR |ID_HSC ,HSC_Scroll_Char_Forward}, - { REQ_SCR_BCHAR |ID_HSC ,HSC_Scroll_Char_Backward}, - { REQ_SCR_HFLINE |ID_HSC ,HSC_Horizontal_Line_Forward}, - { REQ_SCR_HBLINE |ID_HSC ,HSC_Horizontal_Line_Backward}, - { REQ_SCR_HFHALF |ID_HSC ,HSC_Horizontal_Half_Line_Forward}, - { REQ_SCR_HBHALF |ID_HSC ,HSC_Horizontal_Half_Line_Backward}, - - { REQ_VALIDATION |ID_FV ,FV_Validation}, - - { REQ_NEXT_CHOICE |ID_CH ,CR_Next_Choice}, - { REQ_PREV_CHOICE |ID_CH ,CR_Previous_Choice} -}; -/* *INDENT-ON* */ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int form_driver(FORM * form,int c) -| -| Description : This is the workhorse of the forms system. It checks -| to determine whether the character c is a request or -| data. 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(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)); - - 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); - - 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 = ((BI->keycode & ID_Mask) >> ID_Shft) & 0xffff; - - 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 : stdscr; - 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 (!(c & (~(int)MAX_REGULAR_CHARACTER))) - { - /* - * If we're using 8-bit characters, iscntrl+isprint cover the whole set. - * But with multibyte characters, there is a third possibility, i.e., - * parts of characters that build up into printable characters which are - * not considered printable. - * - * FIXME: the wide-character branch should also use Check_Char(). - */ -#if USE_WIDEC_SUPPORT - if (!iscntrl(UChar(c))) -#else - if (isprint(UChar(c)) && - Check_Char(form->current->type, c, - (TypeArgument *)(form->current->arg))) -#endif - res = Data_Entry(form, c); - } - _nc_Refresh_Current_Field(form); - RETURN(res); -} - -/*---------------------------------------------------------------------------- - Field-Buffer manipulation routines. - The effects of setting a buffer are tightly coupled to the core of the form - driver logic. This is especially true in the case of growable fields. - So I don't separate this into a separate module. - --------------------------------------------------------------------------*/ - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_buffer(FIELD *field, -| int buffer, char *value) -| -| Description : Set the given buffer of the field to the given value. -| Buffer 0 stores the displayed content of the field. -| For dynamic fields this may grow the fieldbuffers if -| the length of the value exceeds the current buffer -| length. For buffer 0 only printable values are allowed. -| For static fields, the value needs not to be zero ter- -| minated. It is copied up to the length of the buffer. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid argument -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_buffer(FIELD *field, int buffer, const char *value) -{ - FIELD_CELL *p; - int res = E_OK; - unsigned int i; - unsigned int len; - -#if USE_WIDEC_SUPPORT - FIELD_CELL *widevalue = 0; -#endif - - T((T_CALLED("set_field_buffer(%p,%d,%s)"), field, buffer, _nc_visbuf(value))); - - if (!field || !value || ((buffer < 0) || (buffer > field->nbuf))) - RETURN(E_BAD_ARGUMENT); - - len = Buffer_Length(field); - - if (buffer == 0) - { - for (i = 0; (value[i] != '\0') && (i < len); ++i) - { - if (iscntrl(UChar(value[i]))) - RETURN(E_BAD_ARGUMENT); - } - } - - if (Growable(field)) - { - /* for a growable field we must assume zero terminated strings, because - somehow we have to detect the length of what should be copied. - */ - unsigned int vlen = strlen(value); - - if (vlen > len) - { - if (!Field_Grown(field, - (int)(1 + (vlen - len) / ((field->rows + field->nrow) - * field->cols)))) - RETURN(E_SYSTEM_ERROR); - - /* in this case we also have to check, whether or not the remaining - characters in value are also printable for buffer 0. */ - if (buffer == 0) - { - for (i = len; i < vlen; i++) - if (iscntrl(UChar(value[i]))) - RETURN(E_BAD_ARGUMENT); - } - len = vlen; - } - } - - p = Address_Of_Nth_Buffer(field, buffer); - -#if USE_WIDEC_SUPPORT - /* - * Use addstr's logic for converting a string to an array of cchar_t's. - * There should be a better way, but this handles nonspacing characters - * and other special cases that we really do not want to handle here. - */ - wclear(field->working); - mvwaddstr(field->working, 0, 0, value); - - if ((widevalue = typeCalloc(FIELD_CELL, len + 1)) == 0) - { - RETURN(E_SYSTEM_ERROR); - } - else - { - mvwin_wchnstr(field->working, 0, 0, widevalue, (int)len); - for (i = 0; i < len; ++i) - { - if (CharEq(myZEROS, widevalue[i])) - { - while (i < len) - p[i++] = myBLANK; - break; - } - p[i] = widevalue[i]; - } - free(widevalue); - } -#else - for (i = 0; i < len; ++i) - { - if (value[i] == '\0') - { - while (i < len) - p[i++] = myBLANK; - break; - } - p[i] = value[i]; - } -#endif - - if (buffer == 0) - { - int syncres; - - if (((syncres = Synchronize_Field(field)) != E_OK) && - (res == E_OK)) - res = syncres; - if (((syncres = Synchronize_Linked_Fields(field)) != E_OK) && - (res == E_OK)) - res = syncres; - } - RETURN(res); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : char *field_buffer(const FIELD *field,int buffer) -| -| Description : Return the address of the buffer for the field. -| -| Return Values : Pointer to buffer or NULL if arguments were invalid. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(char *) -field_buffer(const FIELD *field, int buffer) -{ - char *result = 0; - - T((T_CALLED("field_buffer(%p,%d)"), field, buffer)); - - if (field && (buffer >= 0) && (buffer <= field->nbuf)) - { -#if USE_WIDEC_SUPPORT - FIELD_CELL *data = Address_Of_Nth_Buffer(field, buffer); - unsigned need = 0; - int size = Buffer_Length(field); - int n; - - /* determine the number of bytes needed to store the expanded string */ - for (n = 0; n < size; ++n) - { - if (!isWidecExt(data[n])) - { - mbstate_t state; - size_t next; - - init_mb(state); - next = _nc_wcrtomb(0, data[n].chars[0], &state); - if (!isEILSEQ(next)) - need += next; - } - } - - /* allocate a place to store the expanded string */ - if (field->expanded[buffer] != 0) - free(field->expanded[buffer]); - field->expanded[buffer] = typeMalloc(char, need + 1); - - /* expand the multibyte data */ - 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); - } -#else - result = Address_Of_Nth_Buffer(field, buffer); -#endif - } - returnPtr(result); -} - -#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. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(wchar_t *) -_nc_Widen_String(char *source, int *lengthp) -{ - wchar_t *result = 0; - wchar_t wch; - size_t given = strlen(source); - size_t tries; - int pass; - int status; - -#ifdef NEED_STATE - mbstate_t state; -#endif - - for (pass = 0; pass < 2; ++pass) - { - unsigned need = 0; - size_t passed = 0; - - while (passed < given) - { - bool found = FALSE; - - for (tries = 1, status = 0; tries <= (given - passed); ++tries) - { - int save = source[passed + tries]; - - source[passed + tries] = 0; - reset_mbytes(state); - status = trans_mbytes(wch, source + passed, tries, state); - source[passed + tries] = save; - - if (status > 0) - { - found = TRUE; - break; - } - } - if (found) - { - if (pass) - { - result[need] = wch; - } - passed += status; - ++need; - } - else - { - if (pass) - { - result[need] = source[passed]; - } - ++need; - ++passed; - } - } - - if (!pass) - { - if (!need) - break; - result = typeCalloc(wchar_t, need); - - *lengthp = need; - if (result == 0) - break; - } - } - - return result; -} -#endif - -/* frm_driver.c ends here */ diff --git a/contrib/ncurses/form/frm_hook.c b/contrib/ncurses/form/frm_hook.c deleted file mode 100644 index 18e6d71f31ab..000000000000 --- a/contrib/ncurses/form/frm_hook.c +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_hook.c,v 1.14 2004/12/25 22:37:27 tom Exp $") - -/* "Template" macro to generate function to set application specific hook */ -#define GEN_HOOK_SET_FUNCTION( typ, name ) \ -NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook func)\ -{\ - T((T_CALLED("set_" #typ"_"#name"(%p,%p)"), form, func));\ - (Normalize_Form( form ) -> typ ## name) = func ;\ - RETURN(E_OK);\ -} - -/* "Template" macro to generate function to get application specific hook */ -#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));\ - returnFormHook( Normalize_Form( form ) -> typ ## name );\ -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_init(FORM *form, Form_Hook f) -| -| Description : Assigns an application defined initialization function -| to be called when the form is posted and just after -| the current field changes. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -GEN_HOOK_SET_FUNCTION(field, init) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : Form_Hook field_init(const FORM *form) -| -| Description : Retrieve field initialization routine address. -| -| Return Values : The address or NULL if no hook defined. -+--------------------------------------------------------------------------*/ -GEN_HOOK_GET_FUNCTION(field, init) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_field_term(FORM *form, Form_Hook f) -| -| Description : Assigns an application defined finalization function -| to be called when the form is unposted and just before -| the current field changes. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -GEN_HOOK_SET_FUNCTION(field, term) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : Form_Hook field_term(const FORM *form) -| -| Description : Retrieve field finalization routine address. -| -| Return Values : The address or NULL if no hook defined. -+--------------------------------------------------------------------------*/ -GEN_HOOK_GET_FUNCTION(field, term) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_init(FORM *form, Form_Hook f) -| -| Description : Assigns an application defined initialization function -| to be called when the form is posted and just after -| a page change. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -GEN_HOOK_SET_FUNCTION(form, init) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : Form_Hook form_init(const FORM *form) -| -| Description : Retrieve form initialization routine address. -| -| Return Values : The address or NULL if no hook defined. -+--------------------------------------------------------------------------*/ -GEN_HOOK_GET_FUNCTION(form, init) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_term(FORM *form, Form_Hook f) -| -| Description : Assigns an application defined finalization function -| to be called when the form is unposted and just before -| a page change. -| -| Return Values : E_OK - success -+--------------------------------------------------------------------------*/ -GEN_HOOK_SET_FUNCTION(form, term) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : Form_Hook form_term(const FORM *form) -| -| Description : Retrieve form finalization routine address. -| -| Return Values : The address or NULL if no hook defined. -+--------------------------------------------------------------------------*/ -GEN_HOOK_GET_FUNCTION(form, term) - -/* frm_hook.c ends here */ diff --git a/contrib/ncurses/form/frm_opts.c b/contrib/ncurses/form/frm_opts.c deleted file mode 100644 index d36d618a5343..000000000000 --- a/contrib/ncurses/form/frm_opts.c +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_opts.c,v 1.14 2005/04/16 16:59:18 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_opts(FORM *form, Form_Options opts) -| -| Description : Turns on the named options and turns off all the -| remaining options for that form. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid options -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_form_opts(FORM *form, Form_Options opts) -{ - T((T_CALLED("set_form_opts(%p,%d)"), form, opts)); - - opts &= ALL_FORM_OPTS; - if (opts & ~ALL_FORM_OPTS) - RETURN(E_BAD_ARGUMENT); - else - { - Normalize_Form(form)->opts = opts; - RETURN(E_OK); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : Form_Options form_opts(const FORM *) -| -| Description : Retrieves the current form options. -| -| Return Values : The option flags. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(Form_Options) -form_opts(const FORM *form) -{ - T((T_CALLED("form_opts(%p)"), form)); - returnCode((int)(Normalize_Form(form)->opts & ALL_FORM_OPTS)); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int form_opts_on(FORM *form, Form_Options opts) -| -| Description : Turns on the named options; no other options are -| changed. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid options -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -form_opts_on(FORM *form, Form_Options opts) -{ - T((T_CALLED("form_opts_on(%p,%d)"), form, opts)); - - opts &= ALL_FORM_OPTS; - if (opts & ~ALL_FORM_OPTS) - RETURN(E_BAD_ARGUMENT); - else - { - Normalize_Form(form)->opts |= opts; - RETURN(E_OK); - } -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int form_opts_off(FORM *form, Form_Options opts) -| -| Description : Turns off the named options; no other options are -| changed. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid options -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -form_opts_off(FORM *form, Form_Options opts) -{ - T((T_CALLED("form_opts_off(%p,%d)"), form, opts)); - - opts &= ALL_FORM_OPTS; - if (opts & ~ALL_FORM_OPTS) - RETURN(E_BAD_ARGUMENT); - else - { - Normalize_Form(form)->opts &= ~opts; - RETURN(E_OK); - } -} - -/* frm_opts.c ends here */ diff --git a/contrib/ncurses/form/frm_page.c b/contrib/ncurses/form/frm_page.c deleted file mode 100644 index a371838d950e..000000000000 --- a/contrib/ncurses/form/frm_page.c +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_page.c,v 1.10 2004/12/11 22:08:21 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_page(FORM * form,int page) -| -| Description : Set the page number of the form. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form pointer or page number -| E_BAD_STATE - called from a hook routine -| E_INVALID_FIELD - current field can't be left -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_form_page(FORM *form, int page) -{ - int err = E_OK; - - T((T_CALLED("set_form_page(%p,%d)"), form, page)); - - if (!form || (page < 0) || (page >= form->maxpage)) - RETURN(E_BAD_ARGUMENT); - - if (!(form->status & _POSTED)) - { - form->curpage = page; - form->current = _nc_First_Active_Field(form); - } - else - { - if (form->status & _IN_DRIVER) - err = E_BAD_STATE; - else - { - if (form->curpage != page) - { - if (!_nc_Internal_Validation(form)) - err = E_INVALID_FIELD; - else - { - Call_Hook(form, fieldterm); - Call_Hook(form, formterm); - err = _nc_Set_Form_Page(form, page, (FIELD *)0); - Call_Hook(form, forminit); - Call_Hook(form, fieldinit); - _nc_Refresh_Current_Field(form); - } - } - } - } - RETURN(err); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int form_page(const FORM * form) -| -| Description : Return the current page of the form. -| -| Return Values : >= 0 : current page number -| -1 : invalid form pointer -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -form_page(const FORM *form) -{ - T((T_CALLED("form_page(%p)"), form)); - - returnCode(Normalize_Form(form)->curpage); -} - -/* frm_page.c ends here */ diff --git a/contrib/ncurses/form/frm_post.c b/contrib/ncurses/form/frm_post.c deleted file mode 100644 index 28937e91b0b2..000000000000 --- a/contrib/ncurses/form/frm_post.c +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_post.c,v 1.9 2004/12/11 22:19:06 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int post_form(FORM * form) -| -| Description : Writes the form into its associated subwindow. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form pointer -| E_POSTED - form already posted -| E_NOT_CONNECTED - no fields connected to form -| E_NO_ROOM - form doesn't fit into subwindow -| E_SYSTEM_ERROR - system error -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -post_form(FORM *form) -{ - WINDOW *formwin; - int err; - int page; - - T((T_CALLED("post_form(%p)"), form)); - - if (!form) - RETURN(E_BAD_ARGUMENT); - - if (form->status & _POSTED) - RETURN(E_POSTED); - - if (!(form->field)) - RETURN(E_NOT_CONNECTED); - - formwin = Get_Form_Window(form); - if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin))) - RETURN(E_NO_ROOM); - - /* reset form->curpage to an invald value. This forces Set_Form_Page - to do the page initialization which is required by post_form. - */ - page = form->curpage; - form->curpage = -1; - if ((err = _nc_Set_Form_Page(form, page, form->current)) != E_OK) - RETURN(err); - - form->status |= _POSTED; - - Call_Hook(form, forminit); - Call_Hook(form, fieldinit); - - _nc_Refresh_Current_Field(form); - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int unpost_form(FORM * form) -| -| Description : Erase form from its associated subwindow. -| -| Return Values : E_OK - success -| E_BAD_ARGUMENT - invalid form pointer -| E_NOT_POSTED - form isn't posted -| E_BAD_STATE - called from a hook routine -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -unpost_form(FORM *form) -{ - T((T_CALLED("unpost_form(%p)"), form)); - - if (!form) - RETURN(E_BAD_ARGUMENT); - - if (!(form->status & _POSTED)) - RETURN(E_NOT_POSTED); - - if (form->status & _IN_DRIVER) - RETURN(E_BAD_STATE); - - Call_Hook(form, fieldterm); - Call_Hook(form, formterm); - - werase(Get_Form_Window(form)); - delwin(form->w); - form->w = (WINDOW *)0; - form->status &= ~_POSTED; - RETURN(E_OK); -} - -/* frm_post.c ends here */ diff --git a/contrib/ncurses/form/frm_req_name.c b/contrib/ncurses/form/frm_req_name.c deleted file mode 100644 index e4d5c335d8ec..000000000000 --- a/contrib/ncurses/form/frm_req_name.c +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -/*************************************************************************** -* Module form_request_name * -* Routines to handle external names of menu requests * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_req_name.c,v 1.15 2005/04/16 16:59:27 tom Exp $") - -static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] = -{ - "NEXT_PAGE", - "PREV_PAGE", - "FIRST_PAGE", - "LAST_PAGE", - - "NEXT_FIELD", - "PREV_FIELD", - "FIRST_FIELD", - "LAST_FIELD", - "SNEXT_FIELD", - "SPREV_FIELD", - "SFIRST_FIELD", - "SLAST_FIELD", - "LEFT_FIELD", - "RIGHT_FIELD", - "UP_FIELD", - "DOWN_FIELD", - - "NEXT_CHAR", - "PREV_CHAR", - "NEXT_LINE", - "PREV_LINE", - "NEXT_WORD", - "PREV_WORD", - "BEG_FIELD", - "END_FIELD", - "BEG_LINE", - "END_LINE", - "LEFT_CHAR", - "RIGHT_CHAR", - "UP_CHAR", - "DOWN_CHAR", - - "NEW_LINE", - "INS_CHAR", - "INS_LINE", - "DEL_CHAR", - "DEL_PREV", - "DEL_LINE", - "DEL_WORD", - "CLR_EOL", - "CLR_EOF", - "CLR_FIELD", - "OVL_MODE", - "INS_MODE", - "SCR_FLINE", - "SCR_BLINE", - "SCR_FPAGE", - "SCR_BPAGE", - "SCR_FHPAGE", - "SCR_BHPAGE", - "SCR_FCHAR", - "SCR_BCHAR", - "SCR_HFLINE", - "SCR_HBLINE", - "SCR_HFHALF", - "SCR_HBHALF", - - "VALIDATION", - "NEXT_CHOICE", - "PREV_CHOICE" -}; - -#define A_SIZE (sizeof(request_names)/sizeof(request_names[0])) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : const char * form_request_name (int request); -| -| Description : Get the external name of a form request. -| -| Return Values : Pointer to name - on success -| NULL - on invalid request code -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(const char *) -form_request_name(int request) -{ - T((T_CALLED("form_request_name(%d)"), request)); - - if ((request < MIN_FORM_COMMAND) || (request > MAX_FORM_COMMAND)) - { - SET_ERROR(E_BAD_ARGUMENT); - returnCPtr((const char *)0); - } - else - returnCPtr(request_names[request - MIN_FORM_COMMAND]); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int form_request_by_name (const char *str); -| -| Description : Search for a request with this name. -| -| Return Values : Request Id - on success -| E_NO_MATCH - request not found -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -form_request_by_name(const char *str) -{ - /* because the table is so small, it doesn't really hurt - to run sequentially through it. - */ - unsigned int i = 0; - char buf[16]; - - T((T_CALLED("form_request_by_name(%s)"), _nc_visbuf(str))); - - if (str) - { - strncpy(buf, str, sizeof(buf)); - while ((i < sizeof(buf)) && (buf[i] != '\0')) - { - buf[i] = toupper(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); - } - } - RETURN(E_NO_MATCH); -} - -/* frm_req_name.c ends here */ diff --git a/contrib/ncurses/form/frm_scale.c b/contrib/ncurses/form/frm_scale.c deleted file mode 100644 index 2ebf72d06c67..000000000000 --- a/contrib/ncurses/form/frm_scale.c +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_scale.c,v 1.9 2004/12/11 22:12:34 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int scale_form( const FORM *form, int *rows, int *cols ) -| -| Description : Retrieve size of form -| -| Return Values : E_OK - no error -| E_BAD_ARGUMENT - invalid form pointer -| E_NOT_CONNECTED - no fields connected to form -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -scale_form(const FORM *form, int *rows, int *cols) -{ - T((T_CALLED("scale_form(%p,%p,%p)"), form, rows, cols)); - - if (!form) - RETURN(E_BAD_ARGUMENT); - - if (!(form->field)) - RETURN(E_NOT_CONNECTED); - - if (rows) - *rows = form->rows; - if (cols) - *cols = form->cols; - - RETURN(E_OK); -} - -/* frm_scale.c ends here */ diff --git a/contrib/ncurses/form/frm_sub.c b/contrib/ncurses/form/frm_sub.c deleted file mode 100644 index 6db0023db1ab..000000000000 --- a/contrib/ncurses/form/frm_sub.c +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_sub.c,v 1.9 2004/12/11 22:13:39 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_sub(FORM *form, WINDOW *win) -| -| Description : Set the subwindow of the form to win. -| -| Return Values : E_OK - success -| E_POSTED - form is posted -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_form_sub(FORM *form, WINDOW *win) -{ - T((T_CALLED("set_form_sub(%p,%p)"), form, win)); - - if (form && (form->status & _POSTED)) - RETURN(E_POSTED); - - Normalize_Form(form)->sub = win; - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : WINDOW *form_sub(const FORM *) -| -| Description : Retrieve the window of the form. -| -| Return Values : The pointer to the Subwindow. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) -form_sub(const FORM *form) -{ - const FORM *f; - - T((T_CALLED("form_sub(%p)"), form)); - - f = Normalize_Form(form); - returnWin(Get_Form_Window(f)); -} - -/* frm_sub.c ends here */ diff --git a/contrib/ncurses/form/frm_user.c b/contrib/ncurses/form/frm_user.c deleted file mode 100644 index 4d5e0e463a43..000000000000 --- a/contrib/ncurses/form/frm_user.c +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_user.c,v 1.14 2004/12/25 22:37:56 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_userptr(FORM *form, void *usrptr) -| -| Description : Set the pointer that is reserved in any form to store -| application relevant informations -| -| Return Values : E_OK - on success -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_form_userptr(FORM *form, void *usrptr) -{ - T((T_CALLED("set_form_userptr(%p,%p)"), form, usrptr)); - - Normalize_Form(form)->usrptr = usrptr; - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : void *form_userptr(const FORM *form) -| -| Description : Return the pointer that is reserved in any form to -| store application relevant informations. -| -| Return Values : Value of pointer. If no such pointer has been set, -| NULL is returned -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) -form_userptr(const FORM *form) -{ - T((T_CALLED("form_userptr(%p)"), form)); - returnVoidPtr(Normalize_Form(form)->usrptr); -} - -/* frm_user.c ends here */ diff --git a/contrib/ncurses/form/frm_win.c b/contrib/ncurses/form/frm_win.c deleted file mode 100644 index 2258f0a6195b..000000000000 --- a/contrib/ncurses/form/frm_win.c +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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: Juergen Pfeifer, 1995,1997 * - ****************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_win.c,v 1.13 2004/12/11 22:15:27 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int set_form_win(FORM *form,WINDOW *win) -| -| Description : Set the window of the form to win. -| -| Return Values : E_OK - success -| E_POSTED - form is posted -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_form_win(FORM *form, WINDOW *win) -{ - T((T_CALLED("set_form_win(%p,%p)"), form, win)); - - if (form && (form->status & _POSTED)) - RETURN(E_POSTED); - - Normalize_Form(form)->win = win; - RETURN(E_OK); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : WINDOW *form_win(const FORM *) -| -| Description : Retrieve the window of the form. -| -| Return Values : The pointer to the Window or stdscr if there is none. -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) -form_win(const FORM *form) -{ - const FORM *f; - - T((T_CALLED("form_win(%p)"), form)); - - f = Normalize_Form(form); - returnWin(f->win ? f->win : stdscr); -} - -/* frm_win.c ends here */ diff --git a/contrib/ncurses/form/fty_alnum.c b/contrib/ncurses/form/fty_alnum.c deleted file mode 100644 index 59dd2736e8ab..000000000000 --- a/contrib/ncurses/form/fty_alnum.c +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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 : Juergen Pfeifer * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_alnum.c,v 1.21 2007/10/13 19:31:52 tom Exp $") - -#define thisARG alnumARG - -typedef struct - { - int width; - } -thisARG; - -/*--------------------------------------------------------------------------- -| 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) -{ - thisARG *argp = typeMalloc(thisARG, 1); - - if (argp) - { - T((T_CREATE("thisARG %p"), argp)); - argp->width = va_arg(*ap, int); - } - - return ((void *)argp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Copy_ThisType(const void *argp) -| -| Description : Copy structure for alphanumeric type argument. -| -| Return Values : Pointer to argument structure or NULL on error. -+--------------------------------------------------------------------------*/ -static void * -Copy_This_Type(const void *argp) -{ - const thisARG *ap = (const thisARG *)argp; - thisARG *result = typeMalloc(thisARG, 1); - - if (result) - { - T((T_CREATE("thisARG %p"), result)); - *result = *ap; - } - - return ((void *)result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Free_This_Type(void *argp) -| -| Description : Free structure for alphanumeric type argument. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Free_This_Type(void *argp) -{ - if (argp) - free(argp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Character( -| int c, -| const void *argp) -| -| Description : Check a character for the alphanumeric type. -| -| Return Values : TRUE - character is valid -| FALSE - character is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Character(int c, const void *argp GCC_UNUSED) -{ -#if USE_WIDEC_SUPPORT - if (iswalnum((wint_t) c)) - return TRUE; -#endif - return (isalnum(UChar(c)) ? TRUE : FALSE); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Field( -| FIELD *field, -| const void *argp) -| -| Description : Validate buffer content to be a valid alphanumeric value -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Field(FIELD *field, const void *argp) -{ - int width = ((const thisARG *)argp)->width; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - bool result = (width < 0); - - Check_CTYPE_Field(result, bp, width, Check_This_Character); - return (result); -} - -static FIELDTYPE typeTHIS = -{ - _HAS_ARGS | _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - Make_This_Type, - Copy_This_Type, - Free_This_Type, - Check_This_Field, - Check_This_Character, - NULL, - NULL -}; - -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeTHIS; - -/* fty_alnum.c ends here */ diff --git a/contrib/ncurses/form/fty_alpha.c b/contrib/ncurses/form/fty_alpha.c deleted file mode 100644 index bd49544ffdb5..000000000000 --- a/contrib/ncurses/form/fty_alpha.c +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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 : Juergen Pfeifer * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_alpha.c,v 1.23 2007/10/13 19:32:09 tom Exp $") - -#define thisARG alphaARG - -typedef struct - { - int width; - } -thisARG; - -/*--------------------------------------------------------------------------- -| 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) -{ - thisARG *argp = typeMalloc(thisARG, 1); - - if (argp) - { - T((T_CREATE("thisARG %p"), argp)); - argp->width = va_arg(*ap, int); - } - - return ((void *)argp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Copy_This_Type(const void * argp) -| -| Description : Copy structure for alpha type argument. -| -| Return Values : Pointer to argument structure or NULL on error. -+--------------------------------------------------------------------------*/ -static void * -Copy_This_Type(const void *argp) -{ - const thisARG *ap = (const thisARG *)argp; - thisARG *result = typeMalloc(thisARG, 1); - - if (result) - { - T((T_CREATE("thisARG %p"), result)); - *result = *ap; - } - - return ((void *)result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Free_This_Type(void *argp) -| -| Description : Free structure for alpha type argument. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Free_This_Type(void *argp) -{ - if (argp) - free(argp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Character( -| int c, -| const void *argp) -| -| Description : Check a character for the alpha type. -| -| Return Values : TRUE - character is valid -| FALSE - character is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Character(int c, const void *argp GCC_UNUSED) -{ -#if USE_WIDEC_SUPPORT - if (iswalpha((wint_t) c)) - return TRUE; -#endif - return (isalpha(UChar(c)) ? TRUE : FALSE); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Field( -| FIELD *field, -| const void *argp) -| -| Description : Validate buffer content to be a valid alpha value -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Field(FIELD *field, const void *argp) -{ - int width = ((const thisARG *)argp)->width; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - bool result = (width < 0); - - Check_CTYPE_Field(result, bp, width, Check_This_Character); - return (result); -} - -static FIELDTYPE typeTHIS = -{ - _HAS_ARGS | _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - Make_This_Type, - Copy_This_Type, - Free_This_Type, - Check_This_Field, - Check_This_Character, - NULL, - NULL -}; - -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeTHIS; - -/* fty_alpha.c ends here */ diff --git a/contrib/ncurses/form/fty_enum.c b/contrib/ncurses/form/fty_enum.c deleted file mode 100644 index c96a080db09d..000000000000 --- a/contrib/ncurses/form/fty_enum.c +++ /dev/null @@ -1,338 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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 : Juergen Pfeifer * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_enum.c,v 1.22 2007/10/13 19:32:26 tom Exp $") - -typedef struct - { - char **kwds; - int count; - bool checkcase; - bool checkunique; - } -enumARG; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Make_Enum_Type( va_list * ap ) -| -| 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) -{ - enumARG *argp = typeMalloc(enumARG, 1); - - if (argp) - { - 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; - } - return (void *)argp; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Copy_Enum_Type( const void * argp ) -| -| Description : Copy structure for enumeration type argument. -| -| Return Values : Pointer to argument structure or NULL on error. -+--------------------------------------------------------------------------*/ -static void * -Copy_Enum_Type(const void *argp) -{ - enumARG *result = (enumARG *)0; - - if (argp) - { - const enumARG *ap = (const enumARG *)argp; - - result = typeMalloc(enumARG, 1); - - if (result) - { - T((T_CREATE("enumARG %p"), result)); - *result = *ap; - } - } - return (void *)result; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Free_Enum_Type( void * argp ) -| -| Description : Free structure for enumeration type argument. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Free_Enum_Type(void *argp) -{ - if (argp) - free(argp); -} - -#define SKIP_SPACE(x) while(((*(x))!='\0') && (is_blank(*(x)))) (x)++ -#define NOMATCH 0 -#define PARTIAL 1 -#define EXACT 2 - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Compare(const unsigned char * s, -| const unsigned char * buf, -| bool ccase ) -| -| Description : Check whether or not the text in 'buf' matches the -| text in 's', at least partial. -| -| Return Values : NOMATCH - buffer doesn't match -| PARTIAL - buffer matches partially -| EXACT - buffer matches exactly -+--------------------------------------------------------------------------*/ -static int -Compare(const unsigned char *s, const unsigned char *buf, - bool ccase) -{ - SKIP_SPACE(buf); /* Skip leading spaces in both texts */ - SKIP_SPACE(s); - - if (*buf == '\0') - { - return (((*s) != '\0') ? NOMATCH : EXACT); - } - else - { - if (ccase) - { - while (*s++ == *buf) - { - if (*buf++ == '\0') - return EXACT; - } - } - else - { - while (toupper(*s++) == toupper(*buf)) - { - if (*buf++ == '\0') - return EXACT; - } - } - } - /* At this location buf points to the first character where it no longer - matches with s. So if only blanks are following, we have a partial - match otherwise there is no match */ - SKIP_SPACE(buf); - if (*buf) - return NOMATCH; - - /* If it happens that the reference buffer is at its end, the partial - match is actually an exact match. */ - return ((s[-1] != '\0') ? PARTIAL : EXACT); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_Enum_Field( -| FIELD * field, -| const void * argp) -| -| Description : Validate buffer content to be a valid enumeration value -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_Enum_Field(FIELD *field, const void *argp) -{ - char **kwds = ((const enumARG *)argp)->kwds; - bool ccase = ((const enumARG *)argp)->checkcase; - bool unique = ((const enumARG *)argp)->checkunique; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - char *s, *t, *p; - int res; - - while (kwds && (s = (*kwds++))) - { - if ((res = Compare((unsigned char *)s, bp, ccase)) != NOMATCH) - { - p = t = s; /* t is at least a partial match */ - if ((unique && res != EXACT)) - { - while (kwds && (p = *kwds++)) - { - if ((res = Compare((unsigned char *)p, bp, ccase)) != NOMATCH) - { - if (res == EXACT) - { - t = p; - break; - } - else - t = (char *)0; - } - } - } - if (t) - { - set_field_buffer(field, 0, t); - return TRUE; - } - if (!p) - break; - } - } - return FALSE; -} - -static const char *dummy[] = -{(char *)0}; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Next_Enum(FIELD * field, -| const void * argp) -| -| Description : Check for the next enumeration value -| -| Return Values : TRUE - next value found and loaded -| FALSE - no next value loaded -+--------------------------------------------------------------------------*/ -static bool -Next_Enum(FIELD *field, const void *argp) -{ - const enumARG *args = (const enumARG *)argp; - char **kwds = args->kwds; - bool ccase = args->checkcase; - int cnt = args->count; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - - if (kwds) - { - while (cnt--) - { - if (Compare((unsigned char *)(*kwds++), bp, ccase) == EXACT) - break; - } - if (cnt <= 0) - kwds = args->kwds; - if ((cnt >= 0) || (Compare((const unsigned char *)dummy, bp, ccase) == EXACT)) - { - set_field_buffer(field, 0, *kwds); - return TRUE; - } - } - return FALSE; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Previous_Enum( -| FIELD * field, -| const void * argp) -| -| Description : Check for the previous enumeration value -| -| Return Values : TRUE - previous value found and loaded -| FALSE - no previous value loaded -+--------------------------------------------------------------------------*/ -static bool -Previous_Enum(FIELD *field, const void *argp) -{ - const enumARG *args = (const enumARG *)argp; - int cnt = args->count; - char **kwds = &args->kwds[cnt - 1]; - bool ccase = args->checkcase; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - - if (kwds) - { - while (cnt--) - { - if (Compare((unsigned char *)(*kwds--), bp, ccase) == EXACT) - break; - } - - if (cnt <= 0) - kwds = &args->kwds[args->count - 1]; - - if ((cnt >= 0) || (Compare((const unsigned char *)dummy, bp, ccase) == EXACT)) - { - set_field_buffer(field, 0, *kwds); - return TRUE; - } - } - return FALSE; -} - -static FIELDTYPE typeENUM = -{ - _HAS_ARGS | _HAS_CHOICE | _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - Make_Enum_Type, - Copy_Enum_Type, - Free_Enum_Type, - Check_Enum_Field, - NULL, - Next_Enum, - Previous_Enum -}; - -NCURSES_EXPORT_VAR(FIELDTYPE *) -TYPE_ENUM = &typeENUM; - -/* fty_enum.c ends here */ diff --git a/contrib/ncurses/form/fty_int.c b/contrib/ncurses/form/fty_int.c deleted file mode 100644 index 8a5367f74084..000000000000 --- a/contrib/ncurses/form/fty_int.c +++ /dev/null @@ -1,246 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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 : Juergen Pfeifer * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_int.c,v 1.22 2007/10/13 19:32:40 tom Exp $") - -#if USE_WIDEC_SUPPORT -#define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c))) -#else -#define isDigit(c) isdigit(UChar(c)) -#endif - -#define thisARG integerARG - -typedef struct - { - int precision; - long low; - long high; - } -thisARG; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Make_This_Type( va_list * ap ) -| -| Description : Allocate structure for integer type argument. -| -| Return Values : Pointer to argument structure or NULL on error -+--------------------------------------------------------------------------*/ -static void * -Make_This_Type(va_list *ap) -{ - thisARG *argp = typeMalloc(thisARG, 1); - - if (argp) - { - T((T_CREATE("thisARG %p"), argp)); - argp->precision = va_arg(*ap, int); - argp->low = va_arg(*ap, long); - argp->high = va_arg(*ap, long); - } - return (void *)argp; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Copy_This_Type(const void * argp) -| -| Description : Copy structure for integer type argument. -| -| Return Values : Pointer to argument structure or NULL on error. -+--------------------------------------------------------------------------*/ -static void * -Copy_This_Type(const void *argp) -{ - const thisARG *ap = (const thisARG *)argp; - thisARG *result = (thisARG *) 0; - - if (argp) - { - result = typeMalloc(thisARG, 1); - if (result) - { - T((T_CREATE("thisARG %p"), result)); - *result = *ap; - } - } - return (void *)result; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Free_This_Type(void * argp) -| -| Description : Free structure for integer type argument. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Free_This_Type(void *argp) -{ - if (argp) - free(argp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Field( -| FIELD * field, -| const void * argp) -| -| Description : Validate buffer content to be a valid integer value -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Field(FIELD *field, const void *argp) -{ - const thisARG *argi = (const thisARG *)argp; - long low = argi->low; - long high = argi->high; - int prec = argi->precision; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - char *s = (char *)bp; - long val; - char buf[100]; - bool result = FALSE; - - while (*bp && *bp == ' ') - bp++; - if (*bp) - { - if (*bp == '-') - bp++; -#if USE_WIDEC_SUPPORT - if (*bp) - { - bool blank = FALSE; - int len; - int n; - wchar_t *list = _nc_Widen_String((char *)bp, &len); - - if (list != 0) - { - result = TRUE; - for (n = 0; n < len; ++n) - { - if (blank) - { - if (list[n] != ' ') - { - result = FALSE; - break; - } - } - else if (list[n] == ' ') - { - blank = TRUE; - } - else if (!isDigit(list[n])) - { - result = FALSE; - break; - } - } - free(list); - } - } -#else - while (*bp) - { - if (!isdigit(UChar(*bp))) - break; - bp++; - } - while (*bp && *bp == ' ') - bp++; - result = (*bp == '\0'); -#endif - if (result) - { - val = atol(s); - if (low < high) - { - if (val < low || val > high) - result = FALSE; - } - if (result) - { - sprintf(buf, "%.*ld", (prec > 0 ? prec : 0), val); - set_field_buffer(field, 0, buf); - } - } - } - return (result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Character( -| int c, -| const void * argp) -| -| Description : Check a character for the integer type. -| -| Return Values : TRUE - character is valid -| FALSE - character is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Character(int c, const void *argp GCC_UNUSED) -{ - return ((isDigit(UChar(c)) || (c == '-')) ? TRUE : FALSE); -} - -static FIELDTYPE typeTHIS = -{ - _HAS_ARGS | _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - Make_This_Type, - Copy_This_Type, - Free_This_Type, - Check_This_Field, - Check_This_Character, - NULL, - NULL -}; - -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeTHIS; - -/* fty_int.c ends here */ diff --git a/contrib/ncurses/form/fty_ipv4.c b/contrib/ncurses/form/fty_ipv4.c deleted file mode 100644 index 5d1a2098ef94..000000000000 --- a/contrib/ncurses/form/fty_ipv4.c +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2006 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 : Per Foreby, perf@efd.lth.se * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_ipv4.c,v 1.8 2006/12/02 19:33:02 tom Exp $") - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_IPV4_Field( -| FIELD * field, -| const void * argp) -| -| Description : Validate buffer content to be a valid IP number (Ver. 4) -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_IPV4_Field(FIELD *field, const void *argp GCC_UNUSED) -{ - char *bp = field_buffer(field, 0); - int num = 0, len; - unsigned int d1, d2, d3, d4; - - if (isdigit(UChar(*bp))) /* Must start with digit */ - { - num = sscanf(bp, "%u.%u.%u.%u%n", &d1, &d2, &d3, &d4, &len); - if (num == 4) - { - bp += len; /* Make bp point to what sscanf() left */ - while (isspace(UChar(*bp))) - bp++; /* Allow trailing whitespace */ - } - } - return ((num != 4 || *bp || d1 > 255 || d2 > 255 - || d3 > 255 || d4 > 255) ? FALSE : TRUE); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_IPV4_Character( -| int c, -| const void *argp ) -| -| Description : Check a character for unsigned type or period. -| -| Return Values : TRUE - character is valid -| FALSE - character is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_IPV4_Character(int c, const void *argp GCC_UNUSED) -{ - return ((isdigit(UChar(c)) || (c == '.')) ? TRUE : FALSE); -} - -static FIELDTYPE typeIPV4 = -{ - _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - NULL, - NULL, - NULL, - Check_IPV4_Field, - Check_IPV4_Character, - NULL, - NULL -}; - -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4; - -/* fty_ipv4.c ends here */ diff --git a/contrib/ncurses/form/fty_num.c b/contrib/ncurses/form/fty_num.c deleted file mode 100644 index e74e8e36fe25..000000000000 --- a/contrib/ncurses/form/fty_num.c +++ /dev/null @@ -1,290 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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 : Juergen Pfeifer * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_num.c,v 1.25 2007/10/13 19:32:54 tom Exp $") - -#if HAVE_LOCALE_H -#include <locale.h> -#endif - -#if HAVE_LOCALE_H -#define isDecimalPoint(c) ((c) == ((L && L->decimal_point) ? *(L->decimal_point) : '.')) -#else -#define isDecimalPoint(c) ((c) == '.') -#endif - -#if USE_WIDEC_SUPPORT -#define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c))) -#else -#define isDigit(c) isdigit(UChar(c)) -#endif - -#define thisARG numericARG - -typedef struct - { - int precision; - double low; - double high; - struct lconv *L; - } -thisARG; - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Make_This_Type(va_list * ap) -| -| Description : Allocate structure for numeric type argument. -| -| Return Values : Pointer to argument structure or NULL on error -+--------------------------------------------------------------------------*/ -static void * -Make_This_Type(va_list *ap) -{ - thisARG *argn = typeMalloc(thisARG, 1); - - if (argn) - { - T((T_CREATE("thisARG %p"), argn)); - argn->precision = va_arg(*ap, int); - argn->low = va_arg(*ap, double); - argn->high = va_arg(*ap, double); - -#if HAVE_LOCALE_H - argn->L = localeconv(); -#else - argn->L = NULL; -#endif - } - return (void *)argn; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Copy_This_Type(const void * argp) -| -| Description : Copy structure for numeric type argument. -| -| Return Values : Pointer to argument structure or NULL on error. -+--------------------------------------------------------------------------*/ -static void * -Copy_This_Type(const void *argp) -{ - const thisARG *ap = (const thisARG *)argp; - thisARG *result = (thisARG *) 0; - - if (argp) - { - result = typeMalloc(thisARG, 1); - if (result) - { - T((T_CREATE("thisARG %p"), result)); - *result = *ap; - } - } - return (void *)result; -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Free_This_Type(void * argp) -| -| Description : Free structure for numeric type argument. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Free_This_Type(void *argp) -{ - if (argp) - free(argp); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Field(FIELD * field, -| const void * argp) -| -| Description : Validate buffer content to be a valid numeric value -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Field(FIELD *field, const void *argp) -{ - const thisARG *argn = (const thisARG *)argp; - double low = argn->low; - double high = argn->high; - int prec = argn->precision; - unsigned char *bp = (unsigned char *)field_buffer(field, 0); - char *s = (char *)bp; - double val = 0.0; - struct lconv *L = argn->L; - char buf[64]; - bool result = FALSE; - - while (*bp && *bp == ' ') - bp++; - if (*bp) - { - if (*bp == '-' || *bp == '+') - bp++; -#if USE_WIDEC_SUPPORT - if (*bp) - { - bool blank = FALSE; - int state = 0; - int len; - int n; - wchar_t *list = _nc_Widen_String((char *)bp, &len); - - if (list != 0) - { - result = TRUE; - for (n = 0; n < len; ++n) - { - if (blank) - { - if (list[n] != ' ') - { - result = FALSE; - break; - } - } - else if (list[n] == ' ') - { - blank = TRUE; - } - else if (isDecimalPoint(list[n])) - { - if (++state > 1) - { - result = FALSE; - break; - } - } - else if (!isDigit(list[n])) - { - result = FALSE; - break; - } - } - free(list); - } - } -#else - while (*bp) - { - if (!isdigit(UChar(*bp))) - break; - bp++; - } - if (isDecimalPoint(*bp)) - { - bp++; - while (*bp) - { - if (!isdigit(UChar(*bp))) - break; - bp++; - } - } - while (*bp && *bp == ' ') - bp++; - result = (*bp == '\0'); -#endif - if (result) - { - val = atof(s); - if (low < high) - { - if (val < low || val > high) - result = FALSE; - } - if (result) - { - sprintf(buf, "%.*f", (prec > 0 ? prec : 0), val); - set_field_buffer(field, 0, buf); - } - } - } - return (result); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_This_Character( -| int c, -| const void * argp) -| -| Description : Check a character for the numeric type. -| -| Return Values : TRUE - character is valid -| FALSE - character is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_This_Character(int c, const void *argp) -{ - const thisARG *argn = (const thisARG *)argp; - struct lconv *L = argn->L; - - return ((isDigit(c) || - c == '+' || - c == '-' || - isDecimalPoint(c)) - ? TRUE - : FALSE); -} - -static FIELDTYPE typeTHIS = -{ - _HAS_ARGS | _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - Make_This_Type, - Copy_This_Type, - Free_This_Type, - Check_This_Field, - Check_This_Character, - NULL, - NULL -}; - -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeTHIS; - -/* fty_num.c ends here */ diff --git a/contrib/ncurses/form/fty_regex.c b/contrib/ncurses/form/fty_regex.c deleted file mode 100644 index 247779f28c1d..000000000000 --- a/contrib/ncurses/form/fty_regex.c +++ /dev/null @@ -1,306 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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 : Juergen Pfeifer * -* * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: fty_regex.c,v 1.21 2007/10/13 19:33:50 tom Exp $") - -#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */ -#include <regex.h> - -typedef struct - { - regex_t *pRegExp; - unsigned long *refCount; - } -RegExp_Arg; - -#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS -#undef RETURN -static int reg_errno; - -static char * -RegEx_Init(char *instring) -{ - reg_errno = 0; - return instring; -} - -static char * -RegEx_Error(int code) -{ - reg_errno = code; - return 0; -} - -#define INIT register char *sp = RegEx_Init(instring); -#define GETC() (*sp++) -#define PEEKC() (*sp) -#define UNGETC(c) (--sp) -#define RETURN(c) return(c) -#define ERROR(c) return RegEx_Error(c) - -#if HAVE_REGEXP_H_FUNCS -#include <regexp.h> -#else -#include <regexpr.h> -#endif - -typedef struct -{ - char *compiled_expression; - unsigned long *refCount; -} -RegExp_Arg; - -/* Maximum Length we allow for a compiled regular expression */ -#define MAX_RX_LEN (2048) -#define RX_INCREMENT (256) - -#endif - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Make_RegularExpression_Type(va_list * ap) -| -| Description : Allocate structure for regex type argument. -| -| Return Values : Pointer to argument structure or NULL on error -+--------------------------------------------------------------------------*/ -static void * -Make_RegularExpression_Type(va_list *ap) -{ -#if HAVE_REGEX_H_FUNCS - char *rx = va_arg(*ap, char *); - RegExp_Arg *preg; - - preg = typeMalloc(RegExp_Arg, 1); - - if (preg) - { - T((T_CREATE("RegExp_Arg %p"), preg)); - if (((preg->pRegExp = typeMalloc(regex_t, 1)) != 0) - && !regcomp(preg->pRegExp, rx, - (REG_EXTENDED | REG_NOSUB | REG_NEWLINE))) - { - T((T_CREATE("regex_t %p"), preg->pRegExp)); - preg->refCount = typeMalloc(unsigned long, 1); - - *(preg->refCount) = 1; - } - else - { - if (preg->pRegExp) - free(preg->pRegExp); - free(preg); - preg = (RegExp_Arg *)0; - } - } - return ((void *)preg); -#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS - char *rx = va_arg(*ap, char *); - RegExp_Arg *pArg; - - pArg = typeMalloc(RegExp_Arg, 1); - - if (pArg) - { - int blen = RX_INCREMENT; - - T((T_CREATE("RegExp_Arg %p"), pArg)); - pArg->compiled_expression = NULL; - pArg->refCount = typeMalloc(unsigned long, 1); - - *(pArg->refCount) = 1; - - do - { - char *buf = typeMalloc(char, blen); - - if (buf) - { -#if HAVE_REGEXP_H_FUNCS - char *last_pos = compile(rx, buf, &buf[blen], '\0'); - -#else /* HAVE_REGEXPR_H_FUNCS */ - char *last_pos = compile(rx, buf, &buf[blen]); -#endif - if (reg_errno) - { - free(buf); - if (reg_errno == 50) - blen += RX_INCREMENT; - else - { - free(pArg); - pArg = NULL; - break; - } - } - else - { - pArg->compiled_expression = buf; - break; - } - } - } - while (blen <= MAX_RX_LEN); - } - if (pArg && !pArg->compiled_expression) - { - free(pArg); - pArg = NULL; - } - return (void *)pArg; -#else - return 0; -#endif -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void *Copy_RegularExpression_Type( -| const void * argp) -| -| Description : Copy structure for regex type argument. -| -| Return Values : Pointer to argument structure or NULL on error. -+--------------------------------------------------------------------------*/ -static void * -Copy_RegularExpression_Type(const void *argp) -{ -#if (HAVE_REGEX_H_FUNCS | HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS) - const RegExp_Arg *ap = (const RegExp_Arg *)argp; - const RegExp_Arg *result = (const RegExp_Arg *)0; - - if (ap) - { - *(ap->refCount) += 1; - result = ap; - } - return (void *)result; -#else - return 0; -#endif -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static void Free_RegularExpression_Type(void * argp) -| -| Description : Free structure for regex type argument. -| -| Return Values : - -+--------------------------------------------------------------------------*/ -static void -Free_RegularExpression_Type(void *argp) -{ -#if HAVE_REGEX_H_FUNCS | HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS - RegExp_Arg *ap = (RegExp_Arg *)argp; - - if (ap) - { - if (--(*(ap->refCount)) == 0) - { -#if HAVE_REGEX_H_FUNCS - if (ap->pRegExp) - { - free(ap->refCount); - regfree(ap->pRegExp); - } -#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS - if (ap->compiled_expression) - { - free(ap->refCount); - free(ap->compiled_expression); - } -#endif - free(ap); - } - } -#endif -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static bool Check_RegularExpression_Field( -| FIELD * field, -| const void * argp) -| -| Description : Validate buffer content to be a valid regular expression -| -| Return Values : TRUE - field is valid -| FALSE - field is invalid -+--------------------------------------------------------------------------*/ -static bool -Check_RegularExpression_Field(FIELD *field, const void *argp) -{ - bool match = FALSE; - -#if HAVE_REGEX_H_FUNCS - const RegExp_Arg *ap = (const RegExp_Arg *)argp; - - if (ap && ap->pRegExp) - match = (regexec(ap->pRegExp, field_buffer(field, 0), 0, NULL, 0) - ? FALSE - : TRUE); -#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS - RegExp_Arg *ap = (RegExp_Arg *)argp; - - if (ap && ap->compiled_expression) - match = (step(field_buffer(field, 0), ap->compiled_expression) - ? TRUE - : FALSE); -#endif - return match; -} - -static FIELDTYPE typeREGEXP = -{ - _HAS_ARGS | _RESIDENT, - 1, /* this is mutable, so we can't be const */ - (FIELDTYPE *)0, - (FIELDTYPE *)0, - Make_RegularExpression_Type, - Copy_RegularExpression_Type, - Free_RegularExpression_Type, - Check_RegularExpression_Field, - NULL, - NULL, - NULL -}; - -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP; - -/* fty_regex.c ends here */ diff --git a/contrib/ncurses/form/headers b/contrib/ncurses/form/headers deleted file mode 100644 index 56d72f012238..000000000000 --- a/contrib/ncurses/form/headers +++ /dev/null @@ -1,32 +0,0 @@ -############################################################################## -# Copyright (c) 1998,2006 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: Thomas E. Dickey <dickey@clark.net> 1996 -# -$(srcdir)/form.h -# vile:makemode diff --git a/contrib/ncurses/form/llib-lform b/contrib/ncurses/form/llib-lform deleted file mode 100644 index bd7c3a4f1d87..000000000000 --- a/contrib/ncurses/form/llib-lform +++ /dev/null @@ -1,734 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2002,2005 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: Thomas E. Dickey 1996,1997,2002,2005 * - ****************************************************************************/ -/* LINTLIBRARY */ - -/* ./f_trace.c */ - -#include "form.priv.h" - -#undef _nc_retrace_field_ptr -FIELD **_nc_retrace_field_ptr( - FIELD **code) - { return(*(FIELD ***)0); } - -#undef _nc_retrace_field -FIELD *_nc_retrace_field( - FIELD *code) - { return(*(FIELD **)0); } - -#undef _nc_retrace_field_type -FIELDTYPE *_nc_retrace_field_type( - FIELDTYPE *code) - { return(*(FIELDTYPE **)0); } - -#undef _nc_retrace_form -FORM *_nc_retrace_form( - FORM *code) - { return(*(FORM **)0); } - -#undef _nc_retrace_form_hook -Form_Hook _nc_retrace_form_hook( - Form_Hook code) - { return(*(Form_Hook *)0); } - -/* ./fld_arg.c */ - -#undef set_fieldtype_arg -int set_fieldtype_arg( - FIELDTYPE *typ, - void *(*const make_arg)( - va_list *p1), - void *(*const copy_arg)( - const void *p1), - void (*const free_arg)( - void *p1)) - { return(*(int *)0); } - -#undef field_arg -void *field_arg( - const FIELD *field) - { return(*(void **)0); } - -/* ./fld_attr.c */ - -#undef set_field_fore -int set_field_fore( - FIELD *field, - chtype attr) - { return(*(int *)0); } - -#undef field_fore -chtype field_fore( - const FIELD *field) - { return(*(chtype *)0); } - -#undef set_field_back -int set_field_back( - FIELD *field, - chtype attr) - { return(*(int *)0); } - -#undef field_back -chtype field_back( - const FIELD *field) - { return(*(chtype *)0); } - -/* ./fld_current.c */ - -#undef set_current_field -int set_current_field( - FORM *form, - FIELD *field) - { return(*(int *)0); } - -#undef current_field -FIELD *current_field( - const FORM *form) - { return(*(FIELD **)0); } - -#undef field_index -int field_index( - const FIELD *field) - { return(*(int *)0); } - -/* ./fld_def.c */ - -#undef _nc_Default_Field -FIELD *_nc_Default_Field; - -#undef _nc_Make_Argument -TypeArgument *_nc_Make_Argument( - const FIELDTYPE *typ, - va_list *ap, - int *err) - { return(*(TypeArgument **)0); } - -#undef _nc_Copy_Argument -TypeArgument *_nc_Copy_Argument( - const FIELDTYPE *typ, - const TypeArgument *argp, - int *err) - { return(*(TypeArgument **)0); } - -#undef _nc_Free_Argument -void _nc_Free_Argument( - const FIELDTYPE *typ, - TypeArgument *argp) - { /* void */ } - -#undef _nc_Copy_Type -NCURSES_BOOL _nc_Copy_Type( - FIELD *dst, - FIELD const *src) - { return(*(NCURSES_BOOL *)0); } - -#undef _nc_Free_Type -void _nc_Free_Type( - FIELD *field) - { /* void */ } - -#undef new_field -FIELD *new_field( - int rows, - int cols, - int frow, - int fcol, - int nrow, - int nbuf) - { return(*(FIELD **)0); } - -#undef free_field -int free_field( - FIELD *field) - { return(*(int *)0); } - -/* ./fld_dup.c */ - -#undef dup_field -FIELD *dup_field( - FIELD *field, - int frow, - int fcol) - { return(*(FIELD **)0); } - -/* ./fld_ftchoice.c */ - -#undef set_fieldtype_choice -int set_fieldtype_choice( - FIELDTYPE *typ, - NCURSES_BOOL (*const next_choice)( - FIELD *p1, - const void *p2), - NCURSES_BOOL (*const prev_choice)( - FIELD *p1, - const void *p2)) - { return(*(int *)0); } - -/* ./fld_ftlink.c */ - -#undef link_fieldtype -FIELDTYPE *link_fieldtype( - FIELDTYPE *type1, - FIELDTYPE *type2) - { return(*(FIELDTYPE **)0); } - -/* ./fld_info.c */ - -#undef field_info -int field_info( - const FIELD *field, - int *rows, - int *cols, - int *frow, - int *fcol, - int *nrow, - int *nbuf) - { return(*(int *)0); } - -#undef dynamic_field_info -int dynamic_field_info( - const FIELD *field, - int *drows, - int *dcols, - int *maxgrow) - { return(*(int *)0); } - -/* ./fld_just.c */ - -#undef set_field_just -int set_field_just( - FIELD *field, - int just) - { return(*(int *)0); } - -#undef field_just -int field_just( - const FIELD *field) - { return(*(int *)0); } - -/* ./fld_link.c */ - -#undef link_field -FIELD *link_field( - FIELD *field, - int frow, - int fcol) - { return(*(FIELD **)0); } - -/* ./fld_max.c */ - -#undef set_max_field -int set_max_field( - FIELD *field, - int maxgrow) - { return(*(int *)0); } - -/* ./fld_move.c */ - -#undef move_field -int move_field( - FIELD *field, - int frow, - int fcol) - { return(*(int *)0); } - -/* ./fld_newftyp.c */ - -#undef _nc_Default_FieldType -const FIELDTYPE *_nc_Default_FieldType = {0}; - -#undef new_fieldtype -FIELDTYPE *new_fieldtype( - NCURSES_BOOL (*const field_check)( - FIELD *p1, - const void *p2), - NCURSES_BOOL (*const char_check)( - int p1, - const void *p2)) - { return(*(FIELDTYPE **)0); } - -#undef free_fieldtype -int free_fieldtype( - FIELDTYPE *typ) - { return(*(int *)0); } - -/* ./fld_opts.c */ - -#undef set_field_opts -int set_field_opts( - FIELD *field, - Field_Options opts) - { return(*(int *)0); } - -#undef field_opts -Field_Options field_opts( - const FIELD *field) - { return(*(Field_Options *)0); } - -#undef field_opts_on -int field_opts_on( - FIELD *field, - Field_Options opts) - { return(*(int *)0); } - -#undef field_opts_off -int field_opts_off( - FIELD *field, - Field_Options opts) - { return(*(int *)0); } - -/* ./fld_pad.c */ - -#undef set_field_pad -int set_field_pad( - FIELD *field, - int ch) - { return(*(int *)0); } - -#undef field_pad -int field_pad( - const FIELD *field) - { return(*(int *)0); } - -/* ./fld_page.c */ - -#undef set_new_page -int set_new_page( - FIELD *field, - NCURSES_BOOL new_page_flag) - { return(*(int *)0); } - -#undef new_page -NCURSES_BOOL new_page( - const FIELD *field) - { return(*(NCURSES_BOOL *)0); } - -/* ./fld_stat.c */ - -#undef set_field_status -int set_field_status( - FIELD *field, - NCURSES_BOOL status) - { return(*(int *)0); } - -#undef field_status -NCURSES_BOOL field_status( - const FIELD *field) - { return(*(NCURSES_BOOL *)0); } - -/* ./fld_type.c */ - -#undef set_field_type -int set_field_type( - FIELD *field, - FIELDTYPE *type, - ...) - { return(*(int *)0); } - -#undef field_type -FIELDTYPE *field_type( - const FIELD *field) - { return(*(FIELDTYPE **)0); } - -/* ./fld_user.c */ - -#undef set_field_userptr -int set_field_userptr( - FIELD *field, - void *usrptr) - { return(*(int *)0); } - -#undef field_userptr -void *field_userptr( - const FIELD *field) - { return(*(void **)0); } - -/* ./frm_cursor.c */ - -#undef pos_form_cursor -int pos_form_cursor( - FORM *form) - { return(*(int *)0); } - -/* ./frm_data.c */ - -#undef data_behind -NCURSES_BOOL data_behind( - const FORM *form) - { return(*(NCURSES_BOOL *)0); } - -#undef data_ahead -NCURSES_BOOL data_ahead( - const FORM *form) - { return(*(NCURSES_BOOL *)0); } - -/* ./frm_def.c */ - -#undef _nc_Default_Form -FORM *_nc_Default_Form; - -#undef new_form -FORM *new_form( - FIELD **fields) - { return(*(FORM **)0); } - -#undef free_form -int free_form( - FORM *form) - { return(*(int *)0); } - -#undef set_form_fields -int set_form_fields( - FORM *form, - FIELD **fields) - { return(*(int *)0); } - -#undef form_fields -FIELD **form_fields( - const FORM *form) - { return(*(FIELD ***)0); } - -#undef field_count -int field_count( - const FORM *form) - { return(*(int *)0); } - -/* ./frm_driver.c */ - -#undef _nc_Position_Form_Cursor -int _nc_Position_Form_Cursor( - FORM *form) - { return(*(int *)0); } - -#undef _nc_Refresh_Current_Field -int _nc_Refresh_Current_Field( - FORM *form) - { return(*(int *)0); } - -#undef _nc_Synchronize_Attributes -int _nc_Synchronize_Attributes( - FIELD *field) - { return(*(int *)0); } - -#undef _nc_Synchronize_Options -int _nc_Synchronize_Options( - FIELD *field, - Field_Options newopts) - { return(*(int *)0); } - -#undef _nc_Set_Current_Field -int _nc_Set_Current_Field( - FORM *form, - FIELD *newfield) - { return(*(int *)0); } - -#undef _nc_Internal_Validation -NCURSES_BOOL _nc_Internal_Validation( - FORM *form) - { return(*(NCURSES_BOOL *)0); } - -#undef _nc_First_Active_Field -FIELD *_nc_First_Active_Field( - FORM *form) - { return(*(FIELD **)0); } - -#undef _nc_Set_Form_Page -int _nc_Set_Form_Page( - FORM *form, - int page, - FIELD *field) - { return(*(int *)0); } - -typedef struct -{ - int keycode; - int (*cmd) (FORM *); -} -Binding_Info; - -#undef form_driver -int form_driver( - FORM *form, - int c) - { return(*(int *)0); } - -#undef set_field_buffer -int set_field_buffer( - FIELD *field, - int buffer, - const char *value) - { return(*(int *)0); } - -#undef field_buffer -char *field_buffer( - const FIELD *field, - int buffer) - { return(*(char **)0); } - -/* ./frm_hook.c */ - -#undef set_field_init -int set_field_init( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef field_init -Form_Hook field_init( - const FORM *form) - { return(*(Form_Hook *)0); } - -#undef set_field_term -int set_field_term( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef field_term -Form_Hook field_term( - const FORM *form) - { return(*(Form_Hook *)0); } - -#undef set_form_init -int set_form_init( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef form_init -Form_Hook form_init( - const FORM *form) - { return(*(Form_Hook *)0); } - -#undef set_form_term -int set_form_term( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef form_term -Form_Hook form_term( - const FORM *form) - { return(*(Form_Hook *)0); } - -/* ./frm_opts.c */ - -#undef set_form_opts -int set_form_opts( - FORM *form, - Form_Options opts) - { return(*(int *)0); } - -#undef form_opts -Form_Options form_opts( - const FORM *form) - { return(*(Form_Options *)0); } - -#undef form_opts_on -int form_opts_on( - FORM *form, - Form_Options opts) - { return(*(int *)0); } - -#undef form_opts_off -int form_opts_off( - FORM *form, - Form_Options opts) - { return(*(int *)0); } - -/* ./frm_page.c */ - -#undef set_form_page -int set_form_page( - FORM *form, - int page) - { return(*(int *)0); } - -#undef form_page -int form_page( - const FORM *form) - { return(*(int *)0); } - -/* ./frm_post.c */ - -#undef post_form -int post_form( - FORM *form) - { return(*(int *)0); } - -#undef unpost_form -int unpost_form( - FORM *form) - { return(*(int *)0); } - -/* ./frm_req_name.c */ - -#undef form_request_name -const char *form_request_name( - int request) - { return(*(const char **)0); } - -#undef form_request_by_name -int form_request_by_name( - const char *str) - { return(*(int *)0); } - -/* ./frm_scale.c */ - -#undef scale_form -int scale_form( - const FORM *form, - int *rows, - int *cols) - { return(*(int *)0); } - -/* ./frm_sub.c */ - -#undef set_form_sub -int set_form_sub( - FORM *form, - WINDOW *win) - { return(*(int *)0); } - -#undef form_sub -WINDOW *form_sub( - const FORM *form) - { return(*(WINDOW **)0); } - -/* ./frm_user.c */ - -#undef set_form_userptr -int set_form_userptr( - FORM *form, - void *usrptr) - { return(*(int *)0); } - -#undef form_userptr -void *form_userptr( - const FORM *form) - { return(*(void **)0); } - -/* ./frm_win.c */ - -#undef set_form_win -int set_form_win( - FORM *form, - WINDOW *win) - { return(*(int *)0); } - -#undef form_win -WINDOW *form_win( - const FORM *form) - { return(*(WINDOW **)0); } - -/* ./fty_alnum.c */ - -typedef struct - { - int width; - } -alnumARG; - -#undef TYPE_ALNUM -FIELDTYPE *TYPE_ALNUM; - -/* ./fty_alpha.c */ - -typedef struct - { - int width; - } -alphaARG; - -#undef TYPE_ALPHA -FIELDTYPE *TYPE_ALPHA; - -/* ./fty_enum.c */ - -typedef struct - { - char **kwds; - int count; - NCURSES_BOOL checkcase; - NCURSES_BOOL checkunique; - } -enumARG; - -#undef TYPE_ENUM -FIELDTYPE *TYPE_ENUM; - -/* ./fty_int.c */ - -typedef struct - { - int precision; - long low; - long high; - } -integerARG; - -#undef TYPE_INTEGER -FIELDTYPE *TYPE_INTEGER; - -/* ./fty_ipv4.c */ -#undef TYPE_IPV4 -FIELDTYPE *TYPE_IPV4; - -/* ./fty_num.c */ - -#include <locale.h> - -typedef struct - { - int precision; - double low; - double high; - struct lconv *L; - } -numericARG; - -#undef TYPE_NUMERIC -FIELDTYPE *TYPE_NUMERIC; - -/* ./fty_regex.c */ - -#include <regex.h> - -typedef struct - { - regex_t *pRegExp; - unsigned long *refCount; - } -RegExp_Arg; - -#undef TYPE_REGEXP -FIELDTYPE *TYPE_REGEXP; diff --git a/contrib/ncurses/form/llib-lformw b/contrib/ncurses/form/llib-lformw deleted file mode 100644 index 7690c5b0bd88..000000000000 --- a/contrib/ncurses/form/llib-lformw +++ /dev/null @@ -1,740 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2002,2005 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: Thomas E. Dickey 2002,2005 * - ****************************************************************************/ -/* LINTLIBRARY */ - -/* ./f_trace.c */ - -#include "form.priv.h" - -#undef _nc_retrace_field_ptr -FIELD **_nc_retrace_field_ptr( - FIELD **code) - { return(*(FIELD ***)0); } - -#undef _nc_retrace_field -FIELD *_nc_retrace_field( - FIELD *code) - { return(*(FIELD **)0); } - -#undef _nc_retrace_field_type -FIELDTYPE *_nc_retrace_field_type( - FIELDTYPE *code) - { return(*(FIELDTYPE **)0); } - -#undef _nc_retrace_form -FORM *_nc_retrace_form( - FORM *code) - { return(*(FORM **)0); } - -#undef _nc_retrace_form_hook -Form_Hook _nc_retrace_form_hook( - Form_Hook code) - { return(*(Form_Hook *)0); } - -/* ./fld_arg.c */ - -#undef set_fieldtype_arg -int set_fieldtype_arg( - FIELDTYPE *typ, - void *(*const make_arg)( - va_list *p1), - void *(*const copy_arg)( - const void *p1), - void (*const free_arg)( - void *p1)) - { return(*(int *)0); } - -#undef field_arg -void *field_arg( - const FIELD *field) - { return(*(void **)0); } - -/* ./fld_attr.c */ - -#undef set_field_fore -int set_field_fore( - FIELD *field, - chtype attr) - { return(*(int *)0); } - -#undef field_fore -chtype field_fore( - const FIELD *field) - { return(*(chtype *)0); } - -#undef set_field_back -int set_field_back( - FIELD *field, - chtype attr) - { return(*(int *)0); } - -#undef field_back -chtype field_back( - const FIELD *field) - { return(*(chtype *)0); } - -/* ./fld_current.c */ - -#undef set_current_field -int set_current_field( - FORM *form, - FIELD *field) - { return(*(int *)0); } - -#undef current_field -FIELD *current_field( - const FORM *form) - { return(*(FIELD **)0); } - -#undef field_index -int field_index( - const FIELD *field) - { return(*(int *)0); } - -/* ./fld_def.c */ - -#undef _nc_Default_Field -FIELD *_nc_Default_Field; - -#undef _nc_Make_Argument -TypeArgument *_nc_Make_Argument( - const FIELDTYPE *typ, - va_list *ap, - int *err) - { return(*(TypeArgument **)0); } - -#undef _nc_Copy_Argument -TypeArgument *_nc_Copy_Argument( - const FIELDTYPE *typ, - const TypeArgument *argp, - int *err) - { return(*(TypeArgument **)0); } - -#undef _nc_Free_Argument -void _nc_Free_Argument( - const FIELDTYPE *typ, - TypeArgument *argp) - { /* void */ } - -#undef _nc_Copy_Type -NCURSES_BOOL _nc_Copy_Type( - FIELD *dst, - FIELD const *src) - { return(*(NCURSES_BOOL *)0); } - -#undef _nc_Free_Type -void _nc_Free_Type( - FIELD *field) - { /* void */ } - -#undef new_field -FIELD *new_field( - int rows, - int cols, - int frow, - int fcol, - int nrow, - int nbuf) - { return(*(FIELD **)0); } - -#undef free_field -int free_field( - FIELD *field) - { return(*(int *)0); } - -/* ./fld_dup.c */ - -#undef dup_field -FIELD *dup_field( - FIELD *field, - int frow, - int fcol) - { return(*(FIELD **)0); } - -/* ./fld_ftchoice.c */ - -#undef set_fieldtype_choice -int set_fieldtype_choice( - FIELDTYPE *typ, - NCURSES_BOOL (*const next_choice)( - FIELD *p1, - const void *p2), - NCURSES_BOOL (*const prev_choice)( - FIELD *p1, - const void *p2)) - { return(*(int *)0); } - -/* ./fld_ftlink.c */ - -#undef link_fieldtype -FIELDTYPE *link_fieldtype( - FIELDTYPE *type1, - FIELDTYPE *type2) - { return(*(FIELDTYPE **)0); } - -/* ./fld_info.c */ - -#undef field_info -int field_info( - const FIELD *field, - int *rows, - int *cols, - int *frow, - int *fcol, - int *nrow, - int *nbuf) - { return(*(int *)0); } - -#undef dynamic_field_info -int dynamic_field_info( - const FIELD *field, - int *drows, - int *dcols, - int *maxgrow) - { return(*(int *)0); } - -/* ./fld_just.c */ - -#undef set_field_just -int set_field_just( - FIELD *field, - int just) - { return(*(int *)0); } - -#undef field_just -int field_just( - const FIELD *field) - { return(*(int *)0); } - -/* ./fld_link.c */ - -#undef link_field -FIELD *link_field( - FIELD *field, - int frow, - int fcol) - { return(*(FIELD **)0); } - -/* ./fld_max.c */ - -#undef set_max_field -int set_max_field( - FIELD *field, - int maxgrow) - { return(*(int *)0); } - -/* ./fld_move.c */ - -#undef move_field -int move_field( - FIELD *field, - int frow, - int fcol) - { return(*(int *)0); } - -/* ./fld_newftyp.c */ - -#undef _nc_Default_FieldType -const FIELDTYPE *_nc_Default_FieldType = {0}; - -#undef new_fieldtype -FIELDTYPE *new_fieldtype( - NCURSES_BOOL (*const field_check)( - FIELD *p1, - const void *p2), - NCURSES_BOOL (*const char_check)( - int p1, - const void *p2)) - { return(*(FIELDTYPE **)0); } - -#undef free_fieldtype -int free_fieldtype( - FIELDTYPE *typ) - { return(*(int *)0); } - -/* ./fld_opts.c */ - -#undef set_field_opts -int set_field_opts( - FIELD *field, - Field_Options opts) - { return(*(int *)0); } - -#undef field_opts -Field_Options field_opts( - const FIELD *field) - { return(*(Field_Options *)0); } - -#undef field_opts_on -int field_opts_on( - FIELD *field, - Field_Options opts) - { return(*(int *)0); } - -#undef field_opts_off -int field_opts_off( - FIELD *field, - Field_Options opts) - { return(*(int *)0); } - -/* ./fld_pad.c */ - -#undef set_field_pad -int set_field_pad( - FIELD *field, - int ch) - { return(*(int *)0); } - -#undef field_pad -int field_pad( - const FIELD *field) - { return(*(int *)0); } - -/* ./fld_page.c */ - -#undef set_new_page -int set_new_page( - FIELD *field, - NCURSES_BOOL new_page_flag) - { return(*(int *)0); } - -#undef new_page -NCURSES_BOOL new_page( - const FIELD *field) - { return(*(NCURSES_BOOL *)0); } - -/* ./fld_stat.c */ - -#undef set_field_status -int set_field_status( - FIELD *field, - NCURSES_BOOL status) - { return(*(int *)0); } - -#undef field_status -NCURSES_BOOL field_status( - const FIELD *field) - { return(*(NCURSES_BOOL *)0); } - -/* ./fld_type.c */ - -#undef set_field_type -int set_field_type( - FIELD *field, - FIELDTYPE *type, - ...) - { return(*(int *)0); } - -#undef field_type -FIELDTYPE *field_type( - const FIELD *field) - { return(*(FIELDTYPE **)0); } - -/* ./fld_user.c */ - -#undef set_field_userptr -int set_field_userptr( - FIELD *field, - void *usrptr) - { return(*(int *)0); } - -#undef field_userptr -void *field_userptr( - const FIELD *field) - { return(*(void **)0); } - -/* ./frm_cursor.c */ - -#undef pos_form_cursor -int pos_form_cursor( - FORM *form) - { return(*(int *)0); } - -/* ./frm_data.c */ - -#undef data_behind -NCURSES_BOOL data_behind( - const FORM *form) - { return(*(NCURSES_BOOL *)0); } - -#undef data_ahead -NCURSES_BOOL data_ahead( - const FORM *form) - { return(*(NCURSES_BOOL *)0); } - -/* ./frm_def.c */ - -#undef _nc_Default_Form -FORM *_nc_Default_Form; - -#undef new_form -FORM *new_form( - FIELD **fields) - { return(*(FORM **)0); } - -#undef free_form -int free_form( - FORM *form) - { return(*(int *)0); } - -#undef set_form_fields -int set_form_fields( - FORM *form, - FIELD **fields) - { return(*(int *)0); } - -#undef form_fields -FIELD **form_fields( - const FORM *form) - { return(*(FIELD ***)0); } - -#undef field_count -int field_count( - const FORM *form) - { return(*(int *)0); } - -/* ./frm_driver.c */ - -#undef _nc_Position_Form_Cursor -int _nc_Position_Form_Cursor( - FORM *form) - { return(*(int *)0); } - -#undef _nc_Refresh_Current_Field -int _nc_Refresh_Current_Field( - FORM *form) - { return(*(int *)0); } - -#undef _nc_Synchronize_Attributes -int _nc_Synchronize_Attributes( - FIELD *field) - { return(*(int *)0); } - -#undef _nc_Synchronize_Options -int _nc_Synchronize_Options( - FIELD *field, - Field_Options newopts) - { return(*(int *)0); } - -#undef _nc_Set_Current_Field -int _nc_Set_Current_Field( - FORM *form, - FIELD *newfield) - { return(*(int *)0); } - -#undef _nc_Internal_Validation -NCURSES_BOOL _nc_Internal_Validation( - FORM *form) - { return(*(NCURSES_BOOL *)0); } - -#undef _nc_First_Active_Field -FIELD *_nc_First_Active_Field( - FORM *form) - { return(*(FIELD **)0); } - -#undef _nc_Set_Form_Page -int _nc_Set_Form_Page( - FORM *form, - int page, - FIELD *field) - { return(*(int *)0); } - -typedef struct -{ - int keycode; - int (*cmd) (FORM *); -} -Binding_Info; - -#undef form_driver -int form_driver( - FORM *form, - int c) - { return(*(int *)0); } - -#undef set_field_buffer -int set_field_buffer( - FIELD *field, - int buffer, - const char *value) - { return(*(int *)0); } - -#undef field_buffer -char *field_buffer( - const FIELD *field, - int buffer) - { return(*(char **)0); } - -#undef _nc_Widen_String -wchar_t *_nc_Widen_String( - char *source, - int *lengthp) - { return(*(wchar_t **)0); } - -/* ./frm_hook.c */ - -#undef set_field_init -int set_field_init( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef field_init -Form_Hook field_init( - const FORM *form) - { return(*(Form_Hook *)0); } - -#undef set_field_term -int set_field_term( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef field_term -Form_Hook field_term( - const FORM *form) - { return(*(Form_Hook *)0); } - -#undef set_form_init -int set_form_init( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef form_init -Form_Hook form_init( - const FORM *form) - { return(*(Form_Hook *)0); } - -#undef set_form_term -int set_form_term( - FORM *form, - Form_Hook func) - { return(*(int *)0); } - -#undef form_term -Form_Hook form_term( - const FORM *form) - { return(*(Form_Hook *)0); } - -/* ./frm_opts.c */ - -#undef set_form_opts -int set_form_opts( - FORM *form, - Form_Options opts) - { return(*(int *)0); } - -#undef form_opts -Form_Options form_opts( - const FORM *form) - { return(*(Form_Options *)0); } - -#undef form_opts_on -int form_opts_on( - FORM *form, - Form_Options opts) - { return(*(int *)0); } - -#undef form_opts_off -int form_opts_off( - FORM *form, - Form_Options opts) - { return(*(int *)0); } - -/* ./frm_page.c */ - -#undef set_form_page -int set_form_page( - FORM *form, - int page) - { return(*(int *)0); } - -#undef form_page -int form_page( - const FORM *form) - { return(*(int *)0); } - -/* ./frm_post.c */ - -#undef post_form -int post_form( - FORM *form) - { return(*(int *)0); } - -#undef unpost_form -int unpost_form( - FORM *form) - { return(*(int *)0); } - -/* ./frm_req_name.c */ - -#undef form_request_name -const char *form_request_name( - int request) - { return(*(const char **)0); } - -#undef form_request_by_name -int form_request_by_name( - const char *str) - { return(*(int *)0); } - -/* ./frm_scale.c */ - -#undef scale_form -int scale_form( - const FORM *form, - int *rows, - int *cols) - { return(*(int *)0); } - -/* ./frm_sub.c */ - -#undef set_form_sub -int set_form_sub( - FORM *form, - WINDOW *win) - { return(*(int *)0); } - -#undef form_sub -WINDOW *form_sub( - const FORM *form) - { return(*(WINDOW **)0); } - -/* ./frm_user.c */ - -#undef set_form_userptr -int set_form_userptr( - FORM *form, - void *usrptr) - { return(*(int *)0); } - -#undef form_userptr -void *form_userptr( - const FORM *form) - { return(*(void **)0); } - -/* ./frm_win.c */ - -#undef set_form_win -int set_form_win( - FORM *form, - WINDOW *win) - { return(*(int *)0); } - -#undef form_win -WINDOW *form_win( - const FORM *form) - { return(*(WINDOW **)0); } - -/* ./fty_alnum.c */ - -typedef struct - { - int width; - } -alnumARG; - -#undef TYPE_ALNUM -FIELDTYPE *TYPE_ALNUM; - -/* ./fty_alpha.c */ - -typedef struct - { - int width; - } -alphaARG; - -#undef TYPE_ALPHA -FIELDTYPE *TYPE_ALPHA; - -/* ./fty_enum.c */ - -typedef struct - { - char **kwds; - int count; - NCURSES_BOOL checkcase; - NCURSES_BOOL checkunique; - } -enumARG; - -#undef TYPE_ENUM -FIELDTYPE *TYPE_ENUM; - -/* ./fty_int.c */ - -typedef struct - { - int precision; - long low; - long high; - } -integerARG; - -#undef TYPE_INTEGER -FIELDTYPE *TYPE_INTEGER; - -/* ./fty_ipv4.c */ -#undef TYPE_IPV4 -FIELDTYPE *TYPE_IPV4; - -/* ./fty_num.c */ - -#include <locale.h> - -typedef struct - { - int precision; - double low; - double high; - struct lconv *L; - } -numericARG; - -#undef TYPE_NUMERIC -FIELDTYPE *TYPE_NUMERIC; - -/* ./fty_regex.c */ - -#include <regex.h> - -typedef struct - { - regex_t *pRegExp; - unsigned long *refCount; - } -RegExp_Arg; - -#undef TYPE_REGEXP -FIELDTYPE *TYPE_REGEXP; diff --git a/contrib/ncurses/form/modules b/contrib/ncurses/form/modules deleted file mode 100644 index 89f9f9f54346..000000000000 --- a/contrib/ncurses/form/modules +++ /dev/null @@ -1,76 +0,0 @@ -# $Id: modules,v 1.15 2006/12/24 00:52:58 tom Exp $ -############################################################################## -# Copyright (c) 1998-2004,2006 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: Thomas E. Dickey 1995-on -# - -@ base -# Library objects -f_trace lib $(srcdir) $(FORM_PRIV_H) -fld_arg lib $(srcdir) $(FORM_PRIV_H) -fld_attr lib $(srcdir) $(FORM_PRIV_H) -fld_current lib $(srcdir) $(FORM_PRIV_H) -fld_def lib $(srcdir) $(FORM_PRIV_H) -fld_dup lib $(srcdir) $(FORM_PRIV_H) -fld_ftchoice lib $(srcdir) $(FORM_PRIV_H) -fld_ftlink lib $(srcdir) $(FORM_PRIV_H) -fld_info lib $(srcdir) $(FORM_PRIV_H) -fld_just lib $(srcdir) $(FORM_PRIV_H) -fld_link lib $(srcdir) $(FORM_PRIV_H) -fld_max lib $(srcdir) $(FORM_PRIV_H) -fld_move lib $(srcdir) $(FORM_PRIV_H) -fld_newftyp lib $(srcdir) $(FORM_PRIV_H) -fld_opts lib $(srcdir) $(FORM_PRIV_H) -fld_pad lib $(srcdir) $(FORM_PRIV_H) -fld_page lib $(srcdir) $(FORM_PRIV_H) -fld_stat lib $(srcdir) $(FORM_PRIV_H) -fld_type lib $(srcdir) $(FORM_PRIV_H) -fld_user lib $(srcdir) $(FORM_PRIV_H) -frm_cursor lib $(srcdir) $(FORM_PRIV_H) -frm_data lib $(srcdir) $(FORM_PRIV_H) -frm_def lib $(srcdir) $(FORM_PRIV_H) -frm_driver lib $(srcdir) $(FORM_PRIV_H) -frm_hook lib $(srcdir) $(FORM_PRIV_H) -frm_opts lib $(srcdir) $(FORM_PRIV_H) -frm_page lib $(srcdir) $(FORM_PRIV_H) -frm_post lib $(srcdir) $(FORM_PRIV_H) -frm_req_name lib $(srcdir) $(FORM_PRIV_H) -frm_scale lib $(srcdir) $(FORM_PRIV_H) -frm_sub lib $(srcdir) $(FORM_PRIV_H) -frm_user lib $(srcdir) $(FORM_PRIV_H) -frm_win lib $(srcdir) $(FORM_PRIV_H) -fty_alnum lib $(srcdir) $(FORM_PRIV_H) -fty_alpha lib $(srcdir) $(FORM_PRIV_H) -fty_enum lib $(srcdir) $(FORM_PRIV_H) -fty_int lib $(srcdir) $(FORM_PRIV_H) -fty_ipv4 lib $(srcdir) $(FORM_PRIV_H) -fty_num lib $(srcdir) $(FORM_PRIV_H) -fty_regex lib $(srcdir) $(FORM_PRIV_H) - -# vile:makemode |