Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
form_field_validation(3X)	 Library calls	     form_field_validation(3X)

NAME
       form_field_validation - data type validation for	fields

SYNOPSIS
       #include	<form.h>

       void *field_arg(const FIELD *field);
       FIELDTYPE *field_type(const FIELD *field);
       int set_field_type(FIELD	*field,	FIELDTYPE *type, ...);

       /* field	types */
       FIELDTYPE *TYPE_ALNUM;
       FIELDTYPE *TYPE_ALPHA;
       FIELDTYPE *TYPE_ENUM;
       FIELDTYPE *TYPE_INTEGER;
       FIELDTYPE *TYPE_NUMERIC;
       FIELDTYPE *TYPE_REGEXP;
       FIELDTYPE *TYPE_IPV4;

DESCRIPTION
       By  default, no validation is done on form fields.  You can associate a
       form with a field type, making the form library validate	input.

   field_arg
       Returns a pointer to the	field's	argument block.	 The argument block is
       an opaque structure containing a	copy of	the arguments  provided	 in  a
       set_field_type call.

   field_type
       Returns	a  pointer  to	the field type associated with the form	field,
       i.e., by	calling	set_field_type.

   set_field_type
       The function set_field_type associates a	field type with	a  given  form
       field.	This  is the type checked by validation	functions.  Most field
       types are configurable, via arguments which the	caller	provides  when
       calling set_field_type.

FIELD TYPES
       The form	library	defines	several	field types.  They are implemented via
       the  FIELDTYPE data structure, which contains several pointers to func-
       tions.

       See the form_fieldtype(3X) manual page, which describes functions which
       can be used to construct	a field-type dynamically.

       The predefined types are	as follows:

   TYPE_ALNUM
       Alphanumeric data.  Required parameter:

          a third int argument, a minimum field width.

   TYPE_ALPHA
       Character data.	Required parameter:

          a third int argument, a minimum field width.

   TYPE_ENUM
       Accept one of a specified set of	strings.  Required parameters:

          a third (char **) argument pointing to a string list;

          a fourth int	flag argument to enable	case-sensitivity;

          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.

       The library copies the string list, 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).	 Required parameters:

          a third int argument	controlling the	precision,

          a fourth long argument constraining minimum value,

          a fifth long	constraining maximum value.  If	the maximum  value  is
	   less	 than  or  equal to the	minimum	value, the range is simply ig-
	   nored.

       On return, the field buffer is formatted	according to the printf	format
       specification ".*ld", where the "*" is replaced by the precision	 argu-
       ment.

       For details of the precision handling see printf(3).

   TYPE_NUMERIC
       Numeric data (may have a	decimal-point part).  Required parameters:

          a third int argument	controlling the	precision,

          a fourth double argument constraining minimum value,

          and a fifth double constraining maximum value.  If your system sup-
	   ports  locales,  the	decimal	point character	must be	the one	speci-
	   fied	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	 argu-
       ment.

       For details of the precision handling see printf(3).

   TYPE_REGEXP
       Regular expression data.	 Required parameter:

          a  third  argument, a regular expression (char *) string.  The data
	   is valid if the regular expression matches it.

       Regular expressions are in the format of	regcomp	and regexec.

       The regular expression must match the whole field.  If you have for ex-
       ample, 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.	Required parameter:

          none

       The form	library	checks whether or not the buffer has the form a.b.c.d,
       where a,	b, c, and d are	numbers	in  the	 range	0  to  255.   Trailing
       blanks in the buffer are	ignored.  The address itself is	not validated.

       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.

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(3)).

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.

SEE ALSO
       curses(3X), form(3X), form_fieldtype(3X), form_variables(3X)

ncurses	6.5			  2025-08-16	     form_field_validation(3X)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=form_field_validation&sektion=3&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help