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.