           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);

## DESCRIPTION

           The  function  set_field_type  declares  a data type for a
           given form field.  This is the type checked by  validation
           functions.  The 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  not  copied,  only  a
                reference to it is stored in the field. So you should
                avoid to 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  precision  argument  that  sets
                zero-padding, a fourth int argument constraining min-
                imum value, and  a  fifth  int  constraining  maximum
                value.

           TYPE_NUMERIC
                Numeric   data   (may  have  a  decimal-point  part).
                Requires a third int  precision  argument  that  sets
                zero-padding,  a  fourth double argument constraining
                minimum value, and a fifth double constraining  maxi-
                mum value. If your system supports locale's, the dec-
                imal point character to be used must be the one spec-
                ified by your locale.

           TYPE_REGEXP
                Regular  expression data.  Requires a regular expres-
                sions  are  in  the   format   of   regcomp(3x)   and
                regexec(3X).  Please  notice that the regular expres-
                sion 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 vali-
                dated. 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 form_fieldtype(3X) manual page.

## RETURN VALUE

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

           E_OK The routine succeeded.

           E_SYSTEM_ERROR
                System error occurred (see errno).

## SEE ALSO

           curses(3X), form(3X).

## 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.