ncurses 6.2 - patch 20201212
[ncurses.git] / man / form_field_validation.3x
index 3505fdb231b8b11c040d786dd95d8657bed5c944..8ce9132c13c73694ac45a118add28327ea12692a 100644 (file)
@@ -1,5 +1,6 @@
 .\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc.              *
+.\" Copyright 2018-2019,2020 Thomas E. Dickey                                *
+.\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" copy of this software and associated documentation files (the            *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_validation.3x,v 1.20 2010/12/04 18:38:55 tom Exp $
+.\" $Id: form_field_validation.3x,v 1.33 2020/12/12 19:57:55 tom Exp $
 .TH form_field_validation 3X ""
+.ie \n(.g .ds `` \(lq
+.el       .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el       .ds '' ''
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
 \fBform_field_validation\fR \- data type validation for fields
 .SH SYNOPSIS
 \fB#include <form.h>\fR
+.sp
+\fBvoid *field_arg(const FIELD *\fP\fIfield\fP\fB);\fP
 .br
-int set_field_type(FIELD *field, FIELDTYPE *type, ...);
-.br
-FIELDTYPE *field_type(const FIELD *field);
+\fBFIELDTYPE *field_type(const FIELD *\fP\fIfield\fP\fB);\fP
 .br
-void *field_arg(const FIELD *field);
+\fBint set_field_type(FIELD *\fP\fIfield\fP\fB, FIELDTYPE *\fP\fItype\fP\fB, ...);\fP
 .sp
-FIELDTYPE *TYPE_ALNUM;
+/* predefined field types */
+.br
+\fBFIELDTYPE *TYPE_ALNUM;\fP
 .br
-FIELDTYPE *TYPE_ALPHA;
+\fBFIELDTYPE *TYPE_ALPHA;\fP
 .br
-FIELDTYPE *TYPE_ENUM;
+\fBFIELDTYPE *TYPE_ENUM;\fP
 .br
-FIELDTYPE *TYPE_INTEGER;
+\fBFIELDTYPE *TYPE_INTEGER;\fP
 .br
-FIELDTYPE *TYPE_NUMERIC;
+\fBFIELDTYPE *TYPE_NUMERIC;\fP
 .br
-FIELDTYPE *TYPE_REGEXP;
+\fBFIELDTYPE *TYPE_REGEXP;\fP
 .br
-FIELDTYPE *TYPE_IPV4;
+\fBFIELDTYPE *TYPE_IPV4;\fP
 .br
 .SH DESCRIPTION
-The function \fBset_field_type\fR declares a data type for a given form field.
+By default, no validation is done on form fields.
+You can associate a form with with a \fIfield type\fP,
+making the form library validate input.
+.SS field_arg
+Returns a pointer to the field's argument block.
+The \fIargument block\fP is an opaque structure containing
+a copy of the arguments provided in a \fBset_field_type\fP call.
+.SS field_type
+Returns a pointer to the \fIfield type\fP associated with the form field,
+i.e., by calling \fBset_field_type\fP.
+.SS set_field_type
+The function \fBset_field_type\fR 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 \fBset_field_type\fP.
+.PP
+Several field types are predefined by the form library.
+.SS Predefined types
+.PP
+It is possible to set up new programmer-defined field types.
+Field types are implemented via the \fBFIELDTYPE\fP data
+structure, which contains several pointers to functions.
+.PP
+See the \fBform_fieldtype\fR(3X) manual page,
+which describes functions which can be used to construct
+a field-type dynamically.
+.PP
 The predefined types are as follows:
 .TP 5
 TYPE_ALNUM
-Alphanumeric data.  Requires a third \fBint\fR argument, a minimum field width.
+Alphanumeric data.
+Required parameter:
+.RS
+.bP
+a third \fBint\fR argument, a minimum field width.
+.RE
 .TP 5
 TYPE_ALPHA
-Character data.  Requires a third \fBint\fR argument, a minimum field width.
+Character data.
+Required parameter:
+.RS
+.bP
+a third \fBint\fR argument, a minimum field width.
+.RE
 .TP 5
 TYPE_ENUM
-Accept one of a specified set of strings.  Requires a third \fB(char **)\fR
-argument pointing to a string list; a fourth \fBint\fR flag argument to enable
-case-sensitivity; and a fifth \fBint\fR 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 copied. So you may use a list that lives in automatic variables on the stack.
+Accept one of a specified set of strings.
+Required parameters:
+.RS
+.bP
+a third \fB(char **)\fR argument pointing to a string list;
+.bP
+a fourth \fBint\fR flag argument to enable case-sensitivity;
+.bP
+a fifth \fBint\fR 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.
+.RE
+.IP
+The library copies the string list,
+so you may use a list that lives in automatic variables on the stack.
 .TP 5
 TYPE_INTEGER
-Integer data, parsable to an integer by \fBatoi(3)\fR.  Requires a third
-\fBint\fR argument controlling the precision, a fourth \fBlong\fR argument
-constraining minimum value, and a fifth \fBlong\fR constraining maximum value.
+Integer data, parsable to an integer by \fBatoi\fP(3).
+Required parameters:
+.RS
+.bP
+a third \fBint\fR argument controlling the precision,
+.bP
+a fourth \fBlong\fR argument constraining minimum value,
+.bP
+a fifth \fBlong\fR 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
-\fBprintf\fR format specification ".*ld", where the '*' is replaced by the
-precision argument.
-For details of the precision handling see \fBprintf's\fR man-page.
+simply ignored.
+.RE
+.IP
+On return, the field buffer is formatted according to the
+\fBprintf\fR format specification \*(``.*ld\*('',
+where the \*(``*\*('' is replaced by the precision argument.
+.IP
+For details of the precision handling see \fBprintf\fR(3).
 .TP 5
 TYPE_NUMERIC
-Numeric data (may have a decimal-point part). Requires a third
-\fBint\fR argument controlling the precision, a fourth \fBdouble\fR
-argument constraining minimum value, and a fifth \fBdouble\fR constraining
-maximum 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 formatted according to the
-\fBprintf\fR format specification ".*f", where the '*' is replaced by the
-precision argument.
-For details of the precision handling see \fBprintf's\fR man-page.
+Numeric data (may have a decimal-point part).
+Required parameters:
+.RS
+.bP
+a third \fBint\fR argument controlling the precision,
+.bP
+a fourth \fBdouble\fR argument constraining minimum value,
+.bP
+and a fifth \fBdouble\fR constraining maximum value.
+If your system supports locales,
+the decimal point character 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.
+.RE
+.IP
+On return, the field buffer is formatted according to the
+\fBprintf\fR format specification \*(``.*f\*('',
+where the \*(``*\*('' is replaced by the precision argument.
+.IP
+For details of the precision handling see \fBprintf\fR(3).
 .TP 5
 TYPE_REGEXP
-Regular expression data.  Requires a regular expression \fB(char *)\fR third argument;
-the data is valid if the regular expression matches it.  Regular expressions
-are in the format of \fBregcomp\fR and \fBregexec\fR. 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
+Regular expression data.
+Required parameter:
+.RS
+.bP
+a third argument, a regular expression \fB(char *)\fR string.
+The data is valid if the regular expression matches it.
+.RE
+.IP
+Regular expressions
+are in the format of \fBregcomp\fR and \fBregexec\fR.
+.IP
+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 digits.
 .TP 5
 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 validated. Please note that this is an ncurses extension. This
-field type may not be available in other curses implementations.
-.PP
-It is possible to set up new programmer-defined field types.  See the
-\fBform_fieldtype\fR(3X) manual page.
+An Internet Protocol Version 4 address.
+Required parameter:
+.RS
+.bP
+none
+.RE
+.IP
+The form library checks whether or not the buffer has the form \fIa.b.c.d\fP,
+where \fIa\fP, \fIb\fP, \fIc\fP, and \fId\fP are numbers in the range 0 to 255.
+Trailing blanks in the buffer are ignored.
+The address itself is not validated.
+.IP
+This is an ncurses extension;
+this field type may not be available in other curses implementations.
 .SH RETURN VALUE
-The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on
-error. The function \fBset_field_type\fR returns one of the following:
+The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on error.
+The function \fBset_field_type\fR returns one of the following:
 .TP 5
 .B E_OK
 The routine succeeded.
 .TP 5
 .B E_SYSTEM_ERROR
-System error occurred (see \fBerrno\fR).
+System error occurred (see \fBerrno\fR(3)).
 .SH SEE ALSO
 \fBcurses\fR(3X),
 \fBform\fR(3X),
+\fBform_fieldtype\fR(3X),
 \fBform_variables\fR(3X).
 .SH NOTES
 The header file \fB<form.h>\fR automatically includes the header file
 \fB<curses.h>\fR.
 .SH PORTABILITY
-These routines emulate the System V forms library.  They were not supported on
+These routines emulate the System V forms library.
+They were not supported on
 Version 7 or BSD versions.
 .SH AUTHORS
-Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric
-S. Raymond.
+Juergen Pfeifer.
+Manual pages and adaptation for new curses by Eric S. Raymond.