mirror of
https://github.com/ThomasDickey/ncurses-snapshots.git
synced 2026-01-26 11:04:35 +00:00
252 lines
12 KiB
HTML
252 lines
12 KiB
HTML
<!--
|
|
****************************************************************************
|
|
* Copyright 2018-2024,2025 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 *
|
|
* "Software"), to deal in the Software without restriction, including *
|
|
* without limitation the rights to use, copy, modify, merge, publish, *
|
|
* distribute, distribute with modifications, sublicense, and/or sell *
|
|
* copies of the Software, and to permit persons to whom the Software is *
|
|
* furnished to do so, subject to the following conditions: *
|
|
* *
|
|
* The above copyright notice and this permission notice shall be included *
|
|
* in all copies or substantial portions of the Software. *
|
|
* *
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
|
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
|
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
|
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
|
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
* *
|
|
* Except as contained in this notice, the name(s) of the above copyright *
|
|
* holders shall not be used in advertising or otherwise to promote the *
|
|
* sale, use or other dealings in this Software without prior written *
|
|
* authorization. *
|
|
****************************************************************************
|
|
* @Id: form_field_validation.3x,v 1.62 2025/08/16 19:11:47 tom Exp @
|
|
-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
|
<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
|
|
<TITLE>form_field_validation 3x 2025-08-16 ncurses 6.6 Library calls</TITLE>
|
|
<link rel="author" href="mailto:bug-ncurses@gnu.org">
|
|
|
|
</HEAD>
|
|
<BODY>
|
|
<H1 class="no-header">form_field_validation 3x 2025-08-16 ncurses 6.6 Library calls</H1>
|
|
<PRE>
|
|
<STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> Library calls <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
|
|
|
|
|
|
</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
|
|
<STRONG>form_field_validation</STRONG> - data type validation for fields
|
|
|
|
|
|
</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
|
|
<STRONG>#include</STRONG> <STRONG><form.h></STRONG>
|
|
|
|
<STRONG>void</STRONG> <STRONG>*field_arg(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*field_type(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG>
|
|
<STRONG>int</STRONG> <STRONG>set_field_type(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
|
|
|
|
<EM>/*</EM> <EM>field</EM> <EM>types</EM> <EM>*/</EM>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ALNUM;</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ALPHA;</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ENUM;</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_INTEGER;</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_NUMERIC;</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_REGEXP;</STRONG>
|
|
<STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_IPV4;</STRONG>
|
|
|
|
|
|
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
|
|
By default, no validation is done on form fields. You can associate a
|
|
form with a <EM>field</EM> <EM>type</EM>, making the form library validate input.
|
|
|
|
|
|
</PRE><H3><a name="h3-field_arg">field_arg</a></H3><PRE>
|
|
Returns a pointer to the field's argument block. The <EM>argument</EM> <EM>block</EM> is
|
|
an opaque structure containing a copy of the arguments provided in a
|
|
<STRONG>set_field_type</STRONG> call.
|
|
|
|
|
|
</PRE><H3><a name="h3-field_type">field_type</a></H3><PRE>
|
|
Returns a pointer to the <EM>field</EM> <EM>type</EM> associated with the form field,
|
|
i.e., by calling <STRONG>set_field_type</STRONG>.
|
|
|
|
|
|
</PRE><H3><a name="h3-set_field_type">set_field_type</a></H3><PRE>
|
|
The function <STRONG>set_field_type</STRONG> 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 <STRONG>set_field_type</STRONG>.
|
|
|
|
|
|
</PRE><H2><a name="h2-FIELD-TYPES">FIELD TYPES</a></H2><PRE>
|
|
The <EM>form</EM> library defines several field types. They are implemented via
|
|
the <STRONG>FIELDTYPE</STRONG> data structure, which contains several pointers to
|
|
functions.
|
|
|
|
See the <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> manual page, which describes functions which
|
|
can be used to construct a field-type dynamically.
|
|
|
|
The predefined types are as follows:
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_ALNUM">TYPE_ALNUM</a></H3><PRE>
|
|
Alphanumeric data. Required parameter:
|
|
|
|
<STRONG>o</STRONG> a third <STRONG>int</STRONG> argument, a minimum field width.
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_ALPHA">TYPE_ALPHA</a></H3><PRE>
|
|
Character data. Required parameter:
|
|
|
|
<STRONG>o</STRONG> a third <STRONG>int</STRONG> argument, a minimum field width.
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_ENUM">TYPE_ENUM</a></H3><PRE>
|
|
Accept one of a specified set of strings. Required parameters:
|
|
|
|
<STRONG>o</STRONG> a third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list;
|
|
|
|
<STRONG>o</STRONG> a fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity;
|
|
|
|
<STRONG>o</STRONG> a fifth <STRONG>int</STRONG> 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.
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_INTEGER">TYPE_INTEGER</a></H3><PRE>
|
|
Integer data, parsable to an integer by <STRONG>atoi(3)</STRONG>. Required parameters:
|
|
|
|
<STRONG>o</STRONG> a third <STRONG>int</STRONG> argument controlling the precision,
|
|
|
|
<STRONG>o</STRONG> a fourth <STRONG>long</STRONG> argument constraining minimum value,
|
|
|
|
<STRONG>o</STRONG> a fifth <STRONG>long</STRONG> 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 <STRONG>printf</STRONG> format
|
|
specification ".*ld", where the "*" is replaced by the precision
|
|
argument.
|
|
|
|
For details of the precision handling see <STRONG>printf(3)</STRONG>.
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_NUMERIC">TYPE_NUMERIC</a></H3><PRE>
|
|
Numeric data (may have a decimal-point part). Required parameters:
|
|
|
|
<STRONG>o</STRONG> a third <STRONG>int</STRONG> argument controlling the precision,
|
|
|
|
<STRONG>o</STRONG> a fourth <STRONG>double</STRONG> argument constraining minimum value,
|
|
|
|
<STRONG>o</STRONG> and a fifth <STRONG>double</STRONG> 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.
|
|
|
|
On return, the field buffer is formatted according to the <STRONG>printf</STRONG> format
|
|
specification ".*f", where the "*" is replaced by the precision
|
|
argument.
|
|
|
|
For details of the precision handling see <STRONG>printf(3)</STRONG>.
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_REGEXP">TYPE_REGEXP</a></H3><PRE>
|
|
Regular expression data. Required parameter:
|
|
|
|
<STRONG>o</STRONG> a third argument, a regular expression <STRONG>(char</STRONG> <STRONG>*)</STRONG> string. The data
|
|
is valid if the regular expression matches it.
|
|
|
|
Regular expressions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
|
|
|
|
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.
|
|
|
|
|
|
</PRE><H3><a name="h3-TYPE_IPV4">TYPE_IPV4</a></H3><PRE>
|
|
An Internet Protocol Version 4 address. Required parameter:
|
|
|
|
<STRONG>o</STRONG> none
|
|
|
|
The form library checks whether or not the buffer has the form <EM>a.b.c.d</EM>,
|
|
where <EM>a</EM>, <EM>b</EM>, <EM>c</EM>, and <EM>d</EM> are numbers in the range 0 to 255. Trailing
|
|
blanks in the buffer are ignored. The address itself is not validated.
|
|
|
|
This is an <EM>ncurses</EM> extension; this field type may not be available in
|
|
other curses implementations.
|
|
|
|
It is possible to set up new programmer-defined field types.
|
|
|
|
|
|
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
|
|
The functions <STRONG>field_type</STRONG> and <STRONG>field_arg</STRONG> return <EM>NULL</EM> on error. The
|
|
function <STRONG>set_field_type</STRONG> returns one of the following:
|
|
|
|
<STRONG>E_OK</STRONG> The routine succeeded.
|
|
|
|
<STRONG>E_SYSTEM_ERROR</STRONG>
|
|
System error occurred (see <STRONG>errno(3)</STRONG>).
|
|
|
|
|
|
</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
|
|
These routines emulate the System V forms library. They were not
|
|
supported on Version 7 or BSD versions.
|
|
|
|
|
|
</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
|
|
Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S.
|
|
Raymond.
|
|
|
|
|
|
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
|
|
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
|
|
|
|
ncurses 6.6 2025-08-16 <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
|
|
</PRE>
|
|
<div class="nav">
|
|
<ul>
|
|
<li><a href="#h2-NAME">NAME</a></li>
|
|
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
|
|
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
|
|
<ul>
|
|
<li><a href="#h3-field_arg">field_arg</a></li>
|
|
<li><a href="#h3-field_type">field_type</a></li>
|
|
<li><a href="#h3-set_field_type">set_field_type</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#h2-FIELD-TYPES">FIELD TYPES</a>
|
|
<ul>
|
|
<li><a href="#h3-TYPE_ALNUM">TYPE_ALNUM</a></li>
|
|
<li><a href="#h3-TYPE_ALPHA">TYPE_ALPHA</a></li>
|
|
<li><a href="#h3-TYPE_ENUM">TYPE_ENUM</a></li>
|
|
<li><a href="#h3-TYPE_INTEGER">TYPE_INTEGER</a></li>
|
|
<li><a href="#h3-TYPE_NUMERIC">TYPE_NUMERIC</a></li>
|
|
<li><a href="#h3-TYPE_REGEXP">TYPE_REGEXP</a></li>
|
|
<li><a href="#h3-TYPE_IPV4">TYPE_IPV4</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
|
|
<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
|
|
<li><a href="#h2-AUTHORS">AUTHORS</a></li>
|
|
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
|
|
</ul>
|
|
</div>
|
|
</BODY>
|
|
</HTML>
|