.\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de)
.\"
.\" %%%LICENSE_START(VERBATIM)
.\" Permission is granted to make and distribute verbatim copies of this
.\" manual provided the copyright notice and this permission notice are
.\" preserved on all copies.
.\"
.\" Permission is granted to copy and distribute modified versions of this
.\" manual under the conditions for verbatim copying, provided that the
.\" entire resulting derived work is distributed under the terms of a
.\" permission notice identical to this one.
.\"
.\" Since the Linux kernel and libraries are constantly changing, this
.\" manual page may be incorrect or out-of-date.  The author(s) assume no
.\" responsibility for errors or omissions, or for damages resulting from
.\" the use of the information contained herein.  The author(s) may not
.\" have taken the same level of care in the production of this manual,
.\" which is licensed free of charge, as they might when working
.\" professionally.
.\"
.\" Formatted or processed versions of this manual, if unaccompanied by
.\" the source, must acknowledge the copyright and authors of this work.
.\" %%%LICENSE_END
.\"
.\" Modified Sat Jul 24 19:35:54 1993 by Rik Faith (faith@cs.unc.edu)
.\" Modified Mon Oct 16 00:16:29 2000 following Joseph S. Myers
.\"
.TH FNMATCH 3  2021-03-22 "GNU" "Linux Programmer's Manual"
.SH NAME
fnmatch \- match filename or pathname
.SH SYNOPSIS
.nf
.B #include <fnmatch.h>
.PP
.BI "int fnmatch(const char *" "pattern" ", const char *" string ", int " flags );
.fi
.SH DESCRIPTION
The
.BR fnmatch ()
function checks whether the
.I string
argument matches the
.I pattern
argument, which is a shell wildcard pattern (see
.BR glob (7)).
.PP
The
.I flags
argument modifies the behavior; it is the bitwise OR of zero or more
of the following flags:
.TP
.B FNM_NOESCAPE
If this flag is set, treat backslash as an ordinary character,
instead of an escape character.
.TP
.B FNM_PATHNAME
If this flag is set, match a slash in
.I string
only with a slash in
.I pattern
and not by an asterisk (*) or a question mark (?) metacharacter,
nor by a bracket expression ([]) containing a slash.
.TP
.B FNM_PERIOD
If this flag is set, a leading period in
.I string
has to be matched exactly by a period in
.IR pattern .
A period is considered to be leading if it is the first character in
.IR string ,
or if both
.B FNM_PATHNAME
is set and the period immediately follows a slash.
.TP
.B FNM_FILE_NAME
This is a GNU synonym for
.BR FNM_PATHNAME .
.TP
.B FNM_LEADING_DIR
If this flag (a GNU extension) is set, the pattern is considered to be
matched if it matches an initial segment of
.I string
which is followed by a slash.
This flag is mainly for the internal
use of glibc and is implemented only in certain cases.
.TP
.B FNM_CASEFOLD
If this flag (a GNU extension) is set, the pattern is matched
case-insensitively.
.TP
.B FNM_EXTMATCH
If this flag (a GNU extension) is set, extended patterns are
supported, as introduced by \&'ksh' and now supported by other shells.
The extended format is as follows, with \fIpattern\-list\fR
being a \&'|' separated list of patterns.
.TP
\&'?(\fIpattern\-list\fR)'
The pattern matches if zero or one occurrences of any of the
patterns in the \fIpattern\-list\fR match the input \fIstring\fR.
.TP
\&'*(\fIpattern\-list\fR)'
The pattern matches if zero or more occurrences of any of the
patterns in the \fIpattern\-list\fR match the input \fIstring\fR.
.TP
\&'+(\fIpattern\-list\fR)'
The pattern matches if one or more occurrences of any of the
patterns in the \fIpattern\-list\fR match the input \fIstring\fR.
.TP
\&'@(\fIpattern\-list\fR)'
The pattern matches if exactly one occurrence of any of the
patterns in the \fIpattern\-list\fR match the input \fIstring\fR.
.TP
\&'!(\fIpattern\-list\fR)'
The pattern matches if the input \fIstring\fR cannot be matched with
any of the patterns in the \fIpattern\-list\fR.
.SH RETURN VALUE
Zero if
.I string
matches
.IR pattern ,
.B FNM_NOMATCH
if there is no match or another nonzero value if there is an error.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.BR fnmatch ()
T}	Thread safety	MT-Safe env locale
.TE
.hy
.ad
.sp 1
.SH CONFORMING TO
POSIX.1-2001, POSIX.1-2008, POSIX.2.
The
.BR FNM_FILE_NAME ", " FNM_LEADING_DIR ", and " FNM_CASEFOLD
flags are GNU extensions.
.SH SEE ALSO
.BR sh (1),
.BR glob (3),
.BR scandir (3),
.BR wordexp (3),
.BR glob (7)
