Provided by: ncurses-doc_5.9+20140118-1ubuntu1_all bug

NAME

       form_field_validation - data type validation for fields

SYNOPSIS

       #include <form.h>
       int set_field_type(FIELD *field, FIELDTYPE *type, ...);
       FIELDTYPE *field_type(const FIELD *field);
       void *field_arg(const FIELD *field);

       FIELDTYPE *TYPE_ALNUM;
       FIELDTYPE *TYPE_ALPHA;
       FIELDTYPE *TYPE_ENUM;
       FIELDTYPE *TYPE_INTEGER;
       FIELDTYPE *TYPE_NUMERIC;
       FIELDTYPE *TYPE_REGEXP;
       FIELDTYPE *TYPE_IPV4;

DESCRIPTION

       The function set_field_type declares a data type for a given form field.  This is the type
       checked by validation functions.  The predefined types are as follows:

       TYPE_ALNUM
            Alphanumeric data.  Requires a third int argument, a minimum field width.

       TYPE_ALPHA
            Character data.  Requires a third int argument, a minimum field width.

       TYPE_ENUM
            Accept one of a specified set of  strings.   Requires  a  third  (char  **)  argument
            pointing to a string list; a fourth int flag argument to enable case-sensitivity; and
            a fifth int flag argument specifying whether a partial match must be a unique one (if
            this  flag  is  off,  a  prefix  matches  the  first of any set of more than one list
            elements with that prefix). Please notice that the string list is copied. So you  may
            use a list that lives in automatic variables on the stack.

       TYPE_INTEGER
            Integer  data,  parsable  to  an  integer  by atoi(3).  Requires a third int argument
            controlling the precision, a fourth long argument constraining minimum value,  and  a
            fifth long constraining maximum value.  If the maximum value is less than or equal to
            the minimum value, the range is  simply  ignored.  On  return  the  field  buffer  is
            formatted  according  to  the  printf  format  specification ".*ld", where the '*' is
            replaced by the precision argument.   For  details  of  the  precision  handling  see
            printf's man-page.

       TYPE_NUMERIC
            Numeric  data  (may  have  a  decimal-point  part).  Requires  a  third  int argument
            controlling the precision, a fourth double argument constraining minimum value, and a
            fifth double constraining maximum value. If your system supports locales, the decimal
            point character to be used must be the one specified by your locale.  If the  maximum
            value  is  less  than  or equal to the minimum value, the range is simply ignored. On
            return the field buffer is formatted according to  the  printf  format  specification
            ".*f",  where  the  '*'  is  replaced  by the precision argument.  For details of the
            precision handling see printf's man-page.

       TYPE_REGEXP
            Regular expression data.  Requires a regular expression (char *) third argument;  the
            data  is  valid if the regular expression matches it.  Regular expressions are in the
            format of regcomp and regexec. Please notice that the regular expression  must  match
            the  whole  field.  If  you have for example an eight character wide field, a regular
            expression "^[0-9]*$" always means that you have to fill  all  eight  positions  with
            digits. If you want to allow fewer digits, you may use for example "^[0-9]* *$" which
            is good for trailing spaces (up to an empty field), or "^ *[0-9]* *$" which  is  good
            for leading and trailing spaces around the digits.

       TYPE_IPV4
            An  Internet  Protocol Version 4 address. This requires no additional argument. It is
            checked whether or not the buffer has the form a.b.c.d, where a,b,c and d are numbers
            between  0  and 255. Trailing blanks in the buffer are ignored. The address itself is
            not validated. Please note that this is an ncurses extension. This field type may not
            be available in other curses implementations.

       It  is  possible  to  set up new programmer-defined field types.  See the fieldtype(3FORM)
       manual page.

RETURN VALUE

       The functions field_type and field_arg return NULL on error. The  function  set_field_type
       returns one of the following:

       E_OK The routine succeeded.

       E_SYSTEM_ERROR
            System error occurred (see errno).

SEE ALSO

       ncurses(3NCURSES), form(3FORM), form_variables(3FORM).

NOTES

       The header file <form.h> automatically includes the header file <curses.h>.

PORTABILITY

       These  routines  emulate the System V forms library.  They were not supported on Version 7
       or BSD versions.

AUTHORS

       Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric S. Raymond.

                                                                          field_validation(3FORM)