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.