ossp-pkg/lmtp2nntp/shpat_match.3
.rn '' }`
''' $RCSfile: shpat_match.3,v $$Revision: 1.2 $$Date: 2001/09/13 13:45:12 $
'''
''' $Log: shpat_match.3,v $
''' Revision 1.2 2001/09/13 13:45:12 thl
''' revamping and polishing documentation files for release
'''
''' Revision 1.1 2001/08/06 10:51:11 thl
''' add shpat_match from OSSP shpat library
'''
'''
.de Sh
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp
.if t .sp .5v
.if n .sp
..
.de Ip
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.de Vb
.ft CW
.nf
.ne \\$1
..
.de Ve
.ft R
.fi
..
'''
'''
''' Set up \*(-- to give an unbreakable dash;
''' string Tr holds user defined translation string.
''' Bell System Logo is used as a dummy character.
'''
.tr \(*W-|\(bv\*(Tr
.ie n \{\
.ds -- \(*W-
.ds PI pi
.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
.ds L" ""
.ds R" ""
''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
''' \*(L" and \*(R", except that they are used on ".xx" lines,
''' such as .IP and .SH, which do another additional levels of
''' double-quote interpretation
.ds M" """
.ds S" """
.ds N" """""
.ds T" """""
.ds L' '
.ds R' '
.ds M' '
.ds S' '
.ds N' '
.ds T' '
'br\}
.el\{\
.ds -- \(em\|
.tr \*(Tr
.ds L" ``
.ds R" ''
.ds M" ``
.ds S" ''
.ds N" ``
.ds T" ''
.ds L' `
.ds R' '
.ds M' `
.ds S' '
.ds N' `
.ds T' '
.ds PI \(*p
'br\}
.\" If the F register is turned on, we'll generate
.\" index entries out stderr for the following things:
.\" TH Title
.\" SH Header
.\" Sh Subsection
.\" Ip Item
.\" X<> Xref (embedded
.\" Of course, you have to process the output yourself
.\" in some meaninful fashion.
.if \nF \{
.de IX
.tm Index:\\$1\t\\n%\t"\\$2"
..
.nr % 0
.rr F
.\}
.TH shpat_match 3 "19-Aug-1999" "Shpat 1.0.0" "MAX File Name Library"
.UC
.if n .hy 0
.if n .na
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.de CQ \" put $1 in typewriter font
.ft CW
'if n "\c
'if t \\&\\$1\c
'if n \\&\\$1\c
'if n \&"
\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
'.ft R
..
.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
. \" AM - accent mark definitions
.bd B 3
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds ? ?
. ds ! !
. ds /
. ds q
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.ds oe o\h'-(\w'o'u*4/10)'e
.ds Oe O\h'-(\w'O'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds v \h'-1'\o'\(aa\(ga'
. ds _ \h'-1'^
. ds . \h'-1'.
. ds 3 3
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
. ds oe oe
. ds Oe OE
.\}
.rm #[ #] #H #V #F C
.SH "NAME"
\fBshpat_match\fR \- match filename or pathname
.SH "SYNOPSIS"
#include <\fBshpat_match.h\fR>
.PP
int \fBshpat_match\fR(const char *\fIpattern\fR, const char *\fIstring\fR, int \fIflags\fR);
.PP
int \fBshpat_match_hasglobchar\fR(const char *\fIpattern\fR);
.SH "DESCRIPTION"
The \fIshpat_match\fR\|(3) function matches patterns according to the rules used by the
shell. It checks the string specified by the \fIstring\fR argument to see if it
matches the pattern specified by the \fIpattern\fR argument.
.Sh "Shell Patterns"
A \fIpattern\fR consists of normal characters, which match themselves, and
meta-characters (aka \fIglob chars\fR). The meta-characters are ``\f(CW!\fR'\*(R',
``\f(CW*\fR'\*(R', ``\f(CW?\fR'\*(R', and ``\f(CW[\fR'\*(R'. These characters lose their special
meanings if they are quoted with a backslash (``\f(CW\e\fR'').
.PP
An asterisk (``\f(CW*\fR'') matches any string of characters. A question mark
(``\f(CW?\fR'') matches any single character. A left bracket (``\f(CW[\fR'') introduces
a character class. The end of the character class is indicated by a ``\f(CW]\fR'\*(R';
if the ``\f(CW]\fR'\*(R' is missing then the ``\f(CW[\fR'\*(R' matches a ``\f(CW[\fR'\*(R' rather than
introducing a character class. A character class matches any of the
characters between the square brackets. A range of characters may be
specified using a minus sign (``\f(CW-\fR''). The character class may be
complemented/negated by making an exclamation point (``\f(CW!\fR'') the first
character of the character class.
.PP
To include a ``\f(CW]\fR'\*(R' in a character class, make it the first character listed
(after the ``\f(CW!\fR'\*(R', if any). To include a minus sign, make it the first or
last character listed.
.Sh "Matching Interpretation"
The \fIflags\fR argument modifies the interpretation of \fIpattern\fR and \fIstring\fR
The value of \fIflags\fR is the bitwise inclusive \fI\s-1OR\s0\fR of any of the following
constants, which are defined in the include file \f(CWshpat_match.h\fR.
.Ip "\f(CWSHPAT_M_NOESCAPE\fR" 4
Normally, every occurrence of a backslash (``\f(CW\e\fR'') followed by a character
in \fIpattern\fR is replaced by that character. This is done to negate any
special meaning for the character. If the \f(CWFNM_NOESCAPE\fR flag is set, a
backslash character is treated as an ordinary character.
.Ip "\f(CWSHPAT_M_PATHNAME\fR" 4
Slash characters in \fIstring\fR must be explicitly matched by slashes in
\fIpattern\fR If this flag is not set, then slashes are treated as regular
characters.
.Ip "\f(CWSHPAT_M_PERIOD\fR" 4
Leading periods in \fIstring\fR must be explicitly matched by periods in
\fIpattern\fR If this flag is not set, then leading periods are treated as
regular characters. The definition of ``leading'\*(R' is related to the
specification of \f(CWFNM_PATHNAME\fR A period is always ``leading'\*(R' if it is the
first character in \fIstring\fR Additionally, if \fI\s-1FNM_PATHNAME\s0\fR is set, a period
is ``leading'\*(R' if it immediately follows a slash.
.Ip "\f(CWSHPAT_M_LEADING_DIR\fR" 4
Ignore ``\f(CW/*\fR'\*(R' rest after successful \fIpattern\fR matching.
.Ip "\f(CWSHPAT_M_CASEFOLD\fR" 4
Ignore case distinctions in both the \fIpattern\fR and the \fIstring\fR.
.SH "RETURN VALUES"
The \fIshpat_match\fR\|(3) function returns zero if \fIstring\fR matches the pattern
specified by \fIpattern\fR, otherwise, it returns the value \f(CWFNM_NOMATCH\fR.
.SH "BUGS"
The pattern ``\f(CW*\fR'\*(R' matches the empty string, even if \f(CWFNM_PATHNAME\fR is
specified.
.SH "SEE ALSO"
\fIsh\fR\|(1), \fIshpat_glob\fR\|(3).
.SH "STANDARDS"
The \fIshpat_match\fR\|(3) function conforms to IEEE Std1003.2 (``POSIX.2'')
.SH "HISTORY"
The \fIshpat_match\fR\|(3) function is derived from the \fIfnmatch\fR\|(3) function of FreeBSD
3.1 which itself derived it from 4.4BSD. The \fIshpat_match_hasglobchar\fR\|(3)
function is derived from the \fIap_is_fnmatch\fR\|(3) function of Apache 1.3.
.rn }` ''
.IX Title "shpat_match 3"
.IX Name "B<shpat_match> - match filename or pathname"
.IX Header "NAME"
.IX Header "SYNOPSIS"
.IX Header "DESCRIPTION"
.IX Subsection "Shell Patterns"
.IX Subsection "Matching Interpretation"
.IX Item "\f(CWSHPAT_M_NOESCAPE\fR"
.IX Item "\f(CWSHPAT_M_PATHNAME\fR"
.IX Item "\f(CWSHPAT_M_PERIOD\fR"
.IX Item "\f(CWSHPAT_M_LEADING_DIR\fR"
.IX Item "\f(CWSHPAT_M_CASEFOLD\fR"
.IX Header "RETURN VALUES"
.IX Header "BUGS"
.IX Header "SEE ALSO"
.IX Header "STANDARDS"
.IX Header "HISTORY"