set_field_type

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
form_field_validation(3X)			    form_field_validation(3X)



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  prede-
       fined 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	argu-
	    ment  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 using a list that lives  in	auto-
	    matic 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 argu-
	    ment  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 maxi-
	    mum	 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	 for-
	    matted  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(3X)
	    and regexec(3X). 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 dig-
	    its.

       TYPE_IPV4
	    An	Internet  Protocol  Version 4 address. This requires no addi-
	    tional 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  implementa-
	    tions.

       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 func-
       tion set_field_type returns one of the following:

       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 sup-
       ported on Version 7 or BSD versions.

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



						    form_field_validation(3X)