FNMATCH(3) |
FreeBSD Library Functions Manual |
FNMATCH(3) |
名称
fnmatch —
ファイル名かパス名がシェルスタイルパターンにマッチするかどうかテストする
ライブラリ
Standard C Library (libc, -lc)
書式
#include < fnmatch.h>
int
fnmatch( const char *pattern, const char *string, int flags);
解説
fnmatch() 関数は、シェルが使用する規則に従ってパターンマッチを行います。
string 引数が指定する文字列をチェックし、
pattern 引数が指定するパターンとマッチするか調べます。
flags 引数は、 pattern と string の解釈を修正します。 flags の値は、以下の定数のビット単位の論理和 (OR) です。この定数は、インクルードファイル < fnmatch.h> で定義されています。
-
FNM_NOESCAPE
-
通常、
pattern の中でバックスラッシュ (‘
\
’) の後ろ続く 1 文字が現れるごとに、それはその文字で置き換えられます。これは、その文字の特殊な意味を無効にするために行われます。
FNM_NOESCAPE フラグが設定されると、バックスラッシュ文字は通常文字として扱われます。
-
FNM_PATHNAME
-
string 中のスラッシュ文字は、
pattern 中のスラッシュと明確にマッチしなければなりません。このフラグが設定されていないと、スラッシュは通常文字として扱われます。
-
FNM_PERIOD
-
string 中の先導する(leading)ピリオドは、
pattern 中の先導するピリオドと明確にマッチしなければなりません。このフラグを設定されていないと、先導するピリオドは通常文字として扱われます。“先導する”という言葉の定義は、
FNM_PATHNAME の指定によって変化します。
string 中の最初の文字であるピリオドは、常に“先導する”ピリオドです。
FNM_PATHNAME が設定された場合、スラッシュの直後のピリオドも「先導する」ピリオドとなります。
-
FNM_LEADING_DIR
-
pattern が問題なくマッチした後、残りの“
/*
”を無視します。
-
FNM_CASEFOLD
-
pattern と
string の両方で大文字と小文字の区別をしません。
戻り値
fnmatch() 関数は、
pattern で指定されたパターンに
string がマッチすると 0 を戻します。そうでなければ値
FNM_NOMATCH を戻します。
規格
fnmatch() 関数の現在の実装は、 IEEE Std 1003.2 (“POSIX.2”) に適合していません。照合シンボル式、同値類式と文字クラス式はサポートされません。
歴史
fnmatch() 関数は、
4.4BSD で登場しました。
バグ
FNM_PATHNAME を指定しても、パターン‘
*
’は空文字列とマッチします。