X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=man%2Fform_field_validation.3x;h=8ce9132c13c73694ac45a118add28327ea12692a;hp=1778bacbddc5e0311dfb87ea9fd0ffbf0aaf0f3e;hb=HEAD;hpb=fc79b49bd8a9c5e4db287514cdac46e1691cf48a diff --git a/man/form_field_validation.3x b/man/form_field_validation.3x index 1778bacb..54fa2a72 100644 --- a/man/form_field_validation.3x +++ b/man/form_field_validation.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. * +.\" Copyright 2018-2023,2024 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 * @@ -26,117 +27,183 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_validation.3x,v 1.17 2008/12/14 19:22:16 juergen Exp $ -.TH form_field_validation 3X "" +.\" $Id: form_field_validation.3x,v 1.53 2024/03/16 15:35:01 tom Exp $ +.TH form_field_validation 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls" +.ie \n(.g \{\ +.ds `` \(lq +.ds '' \(rq +.\} +.el \{\ +.ie t .ds `` `` +.el .ds `` "" +.ie t .ds '' '' +.el .ds '' "" +.\} +. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME -\fBform_field_validation\fR - data type validation for fields +\fBform_field_validation\fP \- +data type validation for fields .SH SYNOPSIS -\fB#include \fR -.br -int set_field_type(FIELD *field, FIELDTYPE *type, ...); -.br -FIELDTYPE *field_type(const FIELD *field); -.br -void *field_arg(const FIELD *field); -.sp -FIELDTYPE *TYPE_ALNUM; -.br -FIELDTYPE *TYPE_ALPHA; -.br -FIELDTYPE *TYPE_ENUM; -.br -FIELDTYPE *TYPE_INTEGER; -.br -FIELDTYPE *TYPE_NUMERIC; -.br -FIELDTYPE *TYPE_REGEXP; -.br -FIELDTYPE *TYPE_IPV4; -.br +.nf +\fB#include +.PP +\fBvoid *field_arg(const FIELD *\fIfield\fP); +\fBFIELDTYPE *field_type(const FIELD *\fIfield\fP); +\fBint set_field_type(FIELD *\fIfield\fP, FIELDTYPE *\fItype\fP, ...); +.PP +\fI/* predefined field types */\fP +\fBFIELDTYPE *TYPE_ALNUM; +\fBFIELDTYPE *TYPE_ALPHA; +\fBFIELDTYPE *TYPE_ENUM; +\fBFIELDTYPE *TYPE_INTEGER; +\fBFIELDTYPE *TYPE_NUMERIC; +\fBFIELDTYPE *TYPE_REGEXP; +\fBFIELDTYPE *TYPE_IPV4; +.fi .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\fP 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. +.SH PREDEFINED TYPES +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\fP(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. -.TP 5 -TYPE_ALPHA -Character data. Requires a third \fBint\fR argument, a minimum field width. -.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. -.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. -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. -.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. +.SS TYPE_ALNUM +Alphanumeric data. +Required parameter: +.bP +a third \fBint\fP argument, a minimum field width. +.SS TYPE_ALPHA +Character data. +Required parameter: +.bP +a third \fBint\fP argument, a minimum field width. +.SS TYPE_ENUM +Accept one of a specified set of strings. +Required parameters: +.bP +a third \fB(char **)\fP argument pointing to a string list; +.bP +a fourth \fBint\fP flag argument to enable case-sensitivity; +.bP +a fifth \fBint\fP 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. +.PP +The library copies the string list, +so you may use a list that lives in automatic variables on the stack. +.SS TYPE_INTEGER +Integer data, parsable to an integer by \fBatoi\fP(3). +Required parameters: +.bP +a third \fBint\fP argument controlling the precision, +.bP +a fourth \fBlong\fP argument constraining minimum value, +.bP +a fifth \fBlong\fP 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 ".*f", where the '*' is replaced by the -precision argument. -For details of the precision handling see \fBprintf's\fR man-page. -.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 +simply ignored. +.PP +On return, the field buffer is formatted according to the +\fBprintf\fP format specification \*(``.*ld\*('', +where the \*(``*\*('' is replaced by the precision argument. +.PP +For details of the precision handling see \fBprintf\fP(3). +.SS TYPE_NUMERIC +Numeric data (may have a decimal-point part). +Required parameters: +.bP +a third \fBint\fP argument controlling the precision, +.bP +a fourth \fBdouble\fP argument constraining minimum value, +.bP +and a fifth \fBdouble\fP 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. +.PP +On return, the field buffer is formatted according to the +\fBprintf\fP format specification \*(``.*f\*('', +where the \*(``*\*('' is replaced by the precision argument. +.PP +For details of the precision handling see \fBprintf\fP(3). +.SS TYPE_REGEXP +Regular expression data. +Required parameter: +.bP +a third argument, a regular expression \fB(char *)\fP string. +The data is valid if the regular expression matches it. +.PP +Regular expressions +are in the format of \fBregcomp\fP and \fBregexec\fP. +.PP +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. +.SS TYPE_IPV4 +An Internet Protocol Version 4 address. +Required parameter: +.bP +none +.PP +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. .PP -It is possible to set up new programmer-defined field types. See the -\fBform_fieldtype\fR(3X) manual page. +This is an \fI\%ncurses\fP 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\fP and \fBfield_arg\fP return \fBNULL\fP on error. +The function \fBset_field_type\fP 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). -.SH SEE ALSO -\fBcurses\fR(3X), \fBform\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. +System error occurred (see \fBerrno\fP(3)). .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. -.\"# -.\"# The following sets edit modes for GNU EMACS -.\"# Local Variables: -.\"# mode:nroff -.\"# fill-column:79 -.\"# End: +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. +.SH SEE ALSO +\fB\%curses\fP(3X), +\fB\%form\fP(3X), +\fB\%form_fieldtype\fP(3X), +\fB\%form_variables\fP(3X)