EN JA
form_field_validation(3X)
form_field_validation(3X) form_field_validation(3X)

名称

form_field_validation - フィールドのためのデータタイプ検証

書式

#include <form.h>
 
int set_field_type(FIELD *field, FIELDTYPE *type, ...);
 
FIELDTYPE *field_type(const FIELD *field);
 
void *field_arg(const FIELD *field);
 
FIELDTYPE *TYPE_ALNUM;
 
FIELDTYPE *TYPE_ALPHA;
 
FIELDTYPE *TYPE_ENUM;
 
FIELDTYPE *TYPE_INTEGER;
 
FIELDTYPE *TYPE_NUMERIC;
 
FIELDTYPE *TYPE_REGEXP;
 
FIELDTYPE *TYPE_IPV4;
 

解説

関数 set_field_type は、与えられた form フィールドのためのデータタイプを宣言します。これは検証関数によってチェックされたタイプです。以前に定義されたタイプは、次の通りです:
TYPE_ALNUM
英数字のデータ。 3 つめの最小のフィールド幅である int 引数を要求します。
TYPE_ALPHA
文字データ。 3 つめの最小のフィールド幅である int 引数を要求します。
TYPE_ENUM
文字列の指定されたセットのうちの 1 つを受理します。文字列のリストを指す 3 つめの (char **) 引数を要求します。大文字小文字の区別を可能にする 4 つめの int フラグ引数。部分的なマッチがユニークとなるかどうか明示する 5 つめの int フラグ引数。 (このフラグがオフである場合、接頭辞はその接頭辞と 1 つ以上のリスト要素の任意のセットの最初と一致します)。文字列のリストがコピーされないことに注意してください、それへの参照のみフィールドに格納されます。したがって、スタック上の自動変数に生きているリストの使用を避けるべきです。
TYPE_INTEGER
atoi(3) による整数に解析することができる、整数データ。精度を制御する 3 つめの int 引数、最小値を抑制する 4 つめの long 引数、および最大の値を抑制する 5 つめの long を要求します。最大値が、最小値以下であるなら、範囲は単に無視されます。リターンのときに、フィールドバッファは、 printf フォーマット仕様 ".*ld"にしたがってフォーマットされます。ここで、'*' は、精度引数によって置き換えられます。精度操作の詳細については、 printf のマニュアルページを参照してください。
TYPE_NUMERIC
(小数点部分を持っている) 数値のデータ。精度を制御する 3 つめの int 引数、最小値を抑制する 4 つめの double、および最大の値を抑制する 5 つめ double を要求します。システムがロケールを支援する場合、使用される小数点文字はロケールによって指定された文字でなければなりません。最大の値がより少ないか最小値と等しい場合、範囲は単に無視されます。リターンのときに、フィールドバッファは、 printf フォーマット仕様 ".*f"にしたがってフォーマットされます。ここで、'*' は、精度引数によって置き換えられます。精度操作の詳細には、 printf のマニュアルページを参照してください。
TYPE_REGEXP
正規表現データ。正規表現 (char *) の 3 つめの引数を要求する、正規表現が一致する場合、データは有効です。正規表現は、 regcomp および regexec のフォーマットにあります。正規表現が全体のフィールドと一致するべきであることに注意してください。例えば 8 文字の広いフィールドを持っている場合、正規表現 "^[0-9]*$"は常に、数字で 8 つの位置をすべて満たすことを意味しています。より少数の数字を許可したければ、例えば "^[0-9]* *$"を使用すれば、 (空のフィールドまで) 後続する (トレーリング) スペースに適しています。また、"^ *[0-9]* *$"は数字のまわりを先導する (リーディング) スペースと後続するスペースに適しています。
TYPE_IPV4
インターネットプロトコルバージョン 4 アドレスです。これは追加引数を要求しません。バッファが形式 a.b.c.d を持っているかどうかがチェックされます。ここで、a,b,c および d は 0 と 255 の間の数です。バッファ中の後続する (トレーリング) ブランクは無視されます。アドレスはそれ自身有効になりません。これは ncurses 拡張であることに注意してください。このフィールドタイプは他の curses 実装で利用可能ではないかもしれません。

新しくプログラマにより定義されたフィールドタイプを組み込むことが可能です。 form_fieldtype(3X) マニュアルページを参照してください。

戻り値

関数 field_typefield_arg は、エラーの場合 NULL を返します。関数 set_field_type は、次の 1 つを返します:
E_OK
ルーチンが成功した。
E_SYSTEM_ERROR
システムエラーが生じた ( errno 参照)。

関連項目

curses(3X), form(3X)

ヘッダファイル <form.h> は自動的にヘッダファイル <curses.h> を含んでいます。

移植性

これらのルーチンは System V メニューライブラリをエミュレートします。それらは Version 7 または BSD バージョンではサポートされませんでした。

作者

Juergen Pfeifer。マニュアルページと新しい curses の適応は Eric S. Raymond。