Fix unsafe compiler optimization
[glibc.git] / posix / fnmatch.h
blobf0b600b8ce13f9043f41789f17634b2ca22387fa
1 /* Copyright (C) 1991-93,1996-1999,2001,2004,2012
2 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
19 #ifndef _FNMATCH_H
20 #define _FNMATCH_H 1
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
26 /* We #undef these before defining them because some losing systems
27 (HP-UX A.08.07 for example) define these in <unistd.h>. */
28 #undef FNM_PATHNAME
29 #undef FNM_NOESCAPE
30 #undef FNM_PERIOD
32 /* Bits set in the FLAGS argument to `fnmatch'. */
33 #define FNM_PATHNAME (1 << 0) /* No wildcard can ever match `/'. */
34 #define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */
35 #define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */
37 #if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
38 # define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */
39 # define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */
40 # define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */
41 # define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */
42 #endif
44 /* Value returned by `fnmatch' if STRING does not match PATTERN. */
45 #define FNM_NOMATCH 1
47 /* This value is returned if the implementation does not support
48 `fnmatch'. Since this is not the case here it will never be
49 returned but the conformance test suites still require the symbol
50 to be defined. */
51 #ifdef _XOPEN_SOURCE
52 # define FNM_NOSYS (-1)
53 #endif
55 /* Match NAME against the filename pattern PATTERN,
56 returning zero if it matches, FNM_NOMATCH if not. */
57 extern int fnmatch (const char *__pattern, const char *__name, int __flags);
59 #ifdef __cplusplus
61 #endif
63 #endif /* fnmatch.h */