ncurses 6.1 - patch 20180728
[ncurses.git] / doc / html / man / form_field_validation.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc.              *
4   *                                                                          *
5   * Permission is hereby granted, free of charge, to any person obtaining a  *
6   * copy of this software and associated documentation files (the            *
7   * "Software"), to deal in the Software without restriction, including      *
8   * without limitation the rights to use, copy, modify, merge, publish,      *
9   * distribute, distribute with modifications, sublicense, and/or sell       *
10   * copies of the Software, and to permit persons to whom the Software is    *
11   * furnished to do so, subject to the following conditions:                 *
12   *                                                                          *
13   * The above copyright notice and this permission notice shall be included  *
14   * in all copies or substantial portions of the Software.                   *
15   *                                                                          *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23   *                                                                          *
24   * Except as contained in this notice, the name(s) of the above copyright   *
25   * holders shall not be used in advertising or otherwise to promote the     *
26   * sale, use or other dealings in this Software without prior written       *
27   * authorization.                                                           *
28   ****************************************************************************
29   * @Id: form_field_validation.3x,v 1.23 2018/07/28 21:18:11 tom Exp @
30 -->
31 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
32 <HTML>
33 <HEAD>
34 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
35 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
36 <TITLE>form_field_validation 3x</TITLE>
37 <link rev=made href="mailto:bug-ncurses@gnu.org">
38 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
39 </HEAD>
40 <BODY>
41 <H1 class="no-header">form_field_validation 3x</H1>
42 <PRE>
43 <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>                            <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
44
45
46
47
48 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
49        <STRONG>form_field_validation</STRONG> - data type validation for fields
50
51
52 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
53        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
54        int set_field_type(FIELD *field, FIELDTYPE *type, ...);
55        FIELDTYPE *field_type(const FIELD *field);
56        void *field_arg(const FIELD *field);
57
58        FIELDTYPE *TYPE_ALNUM;
59        FIELDTYPE *TYPE_ALPHA;
60        FIELDTYPE *TYPE_ENUM;
61        FIELDTYPE *TYPE_INTEGER;
62        FIELDTYPE *TYPE_NUMERIC;
63        FIELDTYPE *TYPE_REGEXP;
64        FIELDTYPE *TYPE_IPV4;
65
66
67 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
68        The  function  <STRONG>set_field_type</STRONG>  declares  a  data  type for a given form
69        field.  This is the type checked by validation functions.   The  prede-
70        fined types are as follows:
71
72        TYPE_ALNUM
73             Alphanumeric data.  Requires a third <STRONG>int</STRONG> argument, a minimum field
74             width.
75
76        TYPE_ALPHA
77             Character data.  Requires a third <STRONG>int</STRONG> argument,  a  minimum  field
78             width.
79
80        TYPE_ENUM
81             Accept  one  of  a  specified set of strings.  Requires additional
82             parameters:
83
84             <STRONG>o</STRONG>   a third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list;
85
86             <STRONG>o</STRONG>   a fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity;
87
88             <STRONG>o</STRONG>   and a fifth <STRONG>int</STRONG> flag argument  specifying  whether  a  partial
89                 match  must  be  a  unique one.  If this flag is off, a prefix
90                 matches the first of any set of more than  one  list  elements
91                 with that prefix.
92
93                 The library copies the string list, so you may use a list that
94                 lives in automatic variables on the stack.
95
96        TYPE_INTEGER
97             Integer data, parsable to an integer by <STRONG>atoi(3)</STRONG>.   Requires  addi-
98             tional parameters:
99
100             <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument controlling the precision,
101
102             <STRONG>o</STRONG>   a fourth <STRONG>long</STRONG> argument constraining minimum value,
103
104             <STRONG>o</STRONG>   and  a  fifth <STRONG>long</STRONG> constraining maximum value.  If the maximum
105                 value is less than or equal to the minimum value, the range is
106                 simply  ignored.   On  return,  the  field buffer is formatted
107                 according to the <STRONG>printf</STRONG> format specification ".*ld", where the
108                 '*' is replaced by the precision argument.
109
110                 For details of the precision handling see <STRONG>printf's</STRONG> man-page.
111
112        TYPE_NUMERIC
113             Numeric data (may have a decimal-point part).  This requires addi-
114             tional parameters:
115
116             <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument controlling the precision,
117
118             <STRONG>o</STRONG>   a fourth <STRONG>double</STRONG> argument constraining minimum value,
119
120             <STRONG>o</STRONG>   and a fifth <STRONG>double</STRONG> constraining maximum value.  If your system
121                 supports  locales, the decimal point character must be the one
122                 specified by your locale.  If the maximum value is  less  than
123                 or equal to the minimum value, the range is simply ignored.
124
125                 On  return,  the  field  buffer  is formatted according to the
126                 <STRONG>printf</STRONG> format specification ".*f", where the '*'  is  replaced
127                 by the precision argument.
128
129                 For details of the precision handling see <STRONG>printf's</STRONG> man-page.
130
131        TYPE_REGEXP
132             Regular  expression  data.  Requires a regular expression <STRONG>(char</STRONG> <STRONG>*)</STRONG>
133             third argument.  The data  is  valid  if  the  regular  expression
134             matches it.
135
136             Regular expressions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
137
138             The  regular  expression  must match the whole field.  If you have
139             for example, an eight character wide field, a  regular  expression
140             "^[0-9]*$"  always means that you have to fill all eight positions
141             with digits.  If you want to allow fewer digits, you may  use  for
142             example  "^[0-9]*  *$" which is good for trailing spaces (up to an
143             empty field), or "^ *[0-9]* *$" which  is  good  for  leading  and
144             trailing spaces around the digits.
145
146        TYPE_IPV4
147             An  Internet  Protocol  Version 4 address.  This requires no addi-
148             tional argument.  The library checks whether or not the buffer has
149             the form a.b.c.d, where a,b,c and d are numbers between 0 and 255.
150             Trailing blanks in the buffer are ignored.  The address itself  is
151             not validated.
152
153             This is an ncurses extension; this field type may not be available
154             in other curses implementations.
155
156        It is possible to set up new programmer-defined field types.   See  the
157        <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> manual page.
158
159
160 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
161        The functions <STRONG>field_type</STRONG> and <STRONG>field_arg</STRONG> return <STRONG>NULL</STRONG> on error.  The func-
162        tion <STRONG>set_field_type</STRONG> returns one of the following:
163
164        <STRONG>E_OK</STRONG> The routine succeeded.
165
166        <STRONG>E_SYSTEM_ERROR</STRONG>
167             System error occurred (see <STRONG>errno</STRONG>).
168
169
170 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
171        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>.
172
173
174 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
175        The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
176        <STRONG>&lt;curses.h&gt;</STRONG>.
177
178
179 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
180        These  routines emulate the System V forms library.  They were not sup-
181        ported on Version 7 or BSD versions.
182
183
184 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
185        Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric S.
186        Raymond.
187
188
189
190                                                      <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
191 </PRE>
192 <div class="nav">
193 <ul>
194 <li><a href="#h2-NAME">NAME</a></li>
195 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
196 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
197 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
198 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
199 <li><a href="#h2-NOTES">NOTES</a></li>
200 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
201 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
202 </ul>
203 </div>
204 </BODY>
205 </HTML>