FNMATCH(3C) | Standard C Library Functions | FNMATCH(3C) |
fnmatch
— match
filename or path name
Standard C Library (libc, -lc)
#include
<fnmatch.h>
int
fnmatch
(const char *pattern,
const char *string, int
flags);
The
fnmatch
()
function matches patterns as described on the
fnmatch(7) manual page (with the
exceptions noted in the STANDARDS). It
checks the string argument to see if it matches the
pattern argument.
The flags argument modifies the
interpretation of pattern and
string. It is the bitwise inclusive OR of zero or more
of the following flags defined in the header
<fnmatch.h>
.
FNM_PATHNAME
If not set, the slash character is treated as an ordinary character.
FNM_IGNORECASE
If not set, the match will use string with no changes, making the match case-sensitive.
For compatibility with
FreeBSD implementation of
fnmatch
(),
header <fnmatch.h>
provides the FNM_CASEFOLD
flag having the same
meaning.
FNM_NOESCAPE
If set, a backslash character will be treated as an ordinary character.
FNM_PERIOD
FNM_PATHNAME
:
FNM_PATHNAME
is set, a period is
"leading" if it is the first character in
string or if it immediately follows a
slash.FNM_PATHNAME
is not set, a period is
"leading" only if it is the first character of
string.If not set, no special restrictions are placed on matching a period.
FNM_LEADING_DIR
If string matches the pattern specified by
pattern, then fnmatch
()
returns 0. If there is no match, fnmatch
() returns
FNM_NOMATCH
, which is defined in the header
<fnmatch.h>
. If an error
occurs, fnmatch
() returns another non-zero
value.
The
fnmatch
()
function has two major uses. It could be used by an application or utility
that needs to read a directory and apply a pattern against each entry. The
find(1) utility is an example of this.
It can also be used by the pax(1) utility
to process its pattern operands, or by applications
that need to match strings in a similar manner.
The name
fnmatch
()
is intended to imply
filename
match, rather than
pathname
match. The default action of this function is to match filenames, rather
than path names, since it gives no special significance to the slash
character. With the FNM_PATHNAME
flag,
fnmatch
() does match path names, but without tilde
expansion, parameter expansion, or special treatment for period at the
beginning of a filename.
The
fnmatch
()
function can be used safely in multithreaded applications, as long as
setlocale(3C) is not being called
to change the locale.
find(1), pax(1), glob(3C), setlocale(3C), wordexp(3C), attributes(7), fnmatch(7), standards(7)
The current implementation of the
fnmatch
() function
does not
conform to IEEE Std 1003.2
(“POSIX.2”). Collating symbol expressions, equivalence
class expressions and character class expressions are not supported.
The pattern "*" matches the empty string, even if
FNM_PATHNAME
is specified.
July 12, 2024 | OmniOS |