Dr Andrew Scott G7VAV

My photo
 
March 2024
Mo Tu We Th Fr Sa Su
26 27 28 29 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7


glob.h
001: /* Copyright (C) 1991,1992,1995-1998,2000,2001,2004,2010,2011
002:    Free Software Foundation, Inc.
003:    This file is part of the GNU C Library.
004: 
005:    The GNU C Library is free software; you can redistribute it and/or
006:    modify it under the terms of the GNU Lesser General Public
007:    License as published by the Free Software Foundation; either
008:    version 2.1 of the License, or (at your option) any later version.
009: 
010:    The GNU C Library is distributed in the hope that it will be useful,
011:    but WITHOUT ANY WARRANTY; without even the implied warranty of
012:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013:    Lesser General Public License for more details.
014: 
015:    You should have received a copy of the GNU Lesser General Public
016:    License along with the GNU C Library; if not, write to the Free
017:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
018:    02111-1307 USA.  */
019: 
020: #ifndef _GLOB_H
021: #define _GLOB_H 1
022: 
023: #include <sys/cdefs.h>
024: 
025: __BEGIN_DECLS
026: 
027: /* We need `size_t' for the following definitions.  */
028: #ifndef __size_t
029: typedef __SIZE_TYPE__ __size_t;
030: # if defined __USE_XOPEN || __USE_XOPEN2K8
031: typedef __SIZE_TYPE__ size_t;
032: # endif
033: #else
034: /* The GNU CC stddef.h version defines __size_t as empty.  We need a real
035:    definition.  */
036: # undef __size_t
037: # define __size_t size_t
038: #endif
039: 
040: /* Bits set in the FLAGS argument to `glob'.  */
041: #define GLOB_ERR        (1 << 0)/* Return on read errors.  */
042: #define GLOB_MARK       (1 << 1)/* Append a slash to each name.  */
043: #define GLOB_NOSORT     (1 << 2)/* Don't sort the names.  */
044: #define GLOB_DOOFFS     (1 << 3)/* Insert PGLOB->gl_offs NULLs.  */
045: #define GLOB_NOCHECK    (1 << 4)/* If nothing matches, return the pattern.  */
046: #define GLOB_APPEND     (1 << 5)/* Append to results of a previous call.  */
047: #define GLOB_NOESCAPE   (1 << 6)/* Backslashes don't quote metacharacters.  */
048: #define GLOB_PERIOD     (1 << 7)/* Leading `.' can be matched by metachars.  */
049: 
050: #if !defined __USE_POSIX2 || defined __USE_BSD || defined __USE_GNU
051: # define GLOB_MAGCHAR    (1 << 8)/* Set in gl_flags if any metachars seen.  */
052: # define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions.  */
053: # define GLOB_BRACE      (1 << 10)/* Expand "{a,b}" to "a" "b".  */
054: # define GLOB_NOMAGIC    (1 << 11)/* If no magic chars, return the pattern.  */
055: # define GLOB_TILDE      (1 << 12)/* Expand ~user and ~ to home directories. */
056: # define GLOB_ONLYDIR    (1 << 13)/* Match only directories.  */
057: # define GLOB_TILDE_CHECK (1 << 14)/* Like GLOB_TILDE but return an error
058:                                       if the user name is not available.  */
059: # define __GLOB_FLAGS   (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
060:                          GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
061:                          GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE|     \
062:                          GLOB_NOMAGIC|GLOB_TILDE|GLOB_ONLYDIR|GLOB_TILDE_CHECK)
063: #else
064: # define __GLOB_FLAGS   (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
065:                          GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
066:                          GLOB_PERIOD)
067: #endif
068: 
069: /* Error returns from `glob'.  */
070: #define GLOB_NOSPACE    1       /* Ran out of memory.  */
071: #define GLOB_ABORTED    2       /* Read error.  */
072: #define GLOB_NOMATCH    3       /* No matches found.  */
073: #define GLOB_NOSYS      4       /* Not implemented.  */
074: #ifdef __USE_GNU
075: /* Previous versions of this file defined GLOB_ABEND instead of
076:    GLOB_ABORTED.  Provide a compatibility definition here.  */
077: # define GLOB_ABEND GLOB_ABORTED
078: #endif
079: 
080: /* Structure describing a globbing run.  */
081: #ifdef __USE_GNU
082: struct stat;
083: #endif
084: typedef struct
085:   {
086:     __size_t gl_pathc;          /* Count of paths matched by the pattern.  */
087:     char **gl_pathv;            /* List of matched pathnames.  */
088:     __size_t gl_offs;           /* Slots to reserve in `gl_pathv'.  */
089:     int gl_flags;               /* Set to FLAGS, maybe | GLOB_MAGCHAR.  */
090: 
091:     /* If the GLOB_ALTDIRFUNC flag is set, the following functions
092:        are used instead of the normal file access functions.  */
093:     void (*gl_closedir) (void *);
094: #ifdef __USE_GNU
095:     struct dirent *(*gl_readdir) (void *);
096: #else
097:     void *(*gl_readdir) (void *);
098: #endif
099:     void *(*gl_opendir) (__const char *);
100: #ifdef __USE_GNU
101:     int (*gl_lstat) (__const char *__restrict, struct stat *__restrict);
102:     int (*gl_stat) (__const char *__restrict, struct stat *__restrict);
103: #else
104:     int (*gl_lstat) (__const char *__restrict, void *__restrict);
105:     int (*gl_stat) (__const char *__restrict, void *__restrict);
106: #endif
107:   } glob_t;
108: 
109: #ifdef __USE_LARGEFILE64
110: # ifdef __USE_GNU
111: struct stat64;
112: # endif
113: typedef struct
114:   {
115:     __size_t gl_pathc;
116:     char **gl_pathv;
117:     __size_t gl_offs;
118:     int gl_flags;
119: 
120:     /* If the GLOB_ALTDIRFUNC flag is set, the following functions
121:        are used instead of the normal file access functions.  */
122:     void (*gl_closedir) (void *);
123: # ifdef __USE_GNU
124:     struct dirent64 *(*gl_readdir) (void *);
125: # else
126:     void *(*gl_readdir) (void *);
127: # endif
128:     void *(*gl_opendir) (__const char *);
129: # ifdef __USE_GNU
130:     int (*gl_lstat) (__const char *__restrict, struct stat64 *__restrict);
131:     int (*gl_stat) (__const char *__restrict, struct stat64 *__restrict);
132: # else
133:     int (*gl_lstat) (__const char *__restrict, void *__restrict);
134:     int (*gl_stat) (__const char *__restrict, void *__restrict);
135: # endif
136:   } glob64_t;
137: #endif
138: 
139: /* Do glob searching for PATTERN, placing results in PGLOB.
140:    The bits defined above may be set in FLAGS.
141:    If a directory cannot be opened or read and ERRFUNC is not nil,
142:    it is called with the pathname that caused the error, and the
143:    `errno' value from the failing call; if it returns non-zero
144:    `glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
145:    If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
146:    Otherwise, `glob' returns zero.  */
147: #if !defined __USE_FILE_OFFSET64
148: extern int glob (__const char *__restrict __pattern, int __flags,
149:                  int (*__errfunc) (__const char *, int),
150:                  glob_t *__restrict __pglob) __THROW;
151: 
152: /* Free storage allocated in PGLOB by a previous `glob' call.  */
153: extern void globfree (glob_t *__pglob) __THROW;
154: #else
155: extern int __REDIRECT_NTH (glob, (__const char *__restrict __pattern,
156:                                   int __flags,
157:                                   int (*__errfunc) (__const char *, int),
158:                                   glob_t *__restrict __pglob), glob64);
159: 
160: extern void __REDIRECT_NTH (globfree, (glob_t *__pglob), globfree64);
161: #endif
162: 
163: #ifdef __USE_LARGEFILE64
164: extern int glob64 (__const char *__restrict __pattern, int __flags,
165:                    int (*__errfunc) (__const char *, int),
166:                    glob64_t *__restrict __pglob) __THROW;
167: 
168: extern void globfree64 (glob64_t *__pglob) __THROW;
169: #endif
170: 
171: 
172: #ifdef __USE_GNU
173: /* Return nonzero if PATTERN contains any metacharacters.
174:    Metacharacters can be quoted with backslashes if QUOTE is nonzero.
175: 
176:    This function is not part of the interface specified by POSIX.2
177:    but several programs want to use it.  */
178: extern int glob_pattern_p (__const char *__pattern, int __quote) __THROW;
179: #endif
180: 
181: __END_DECLS
182: 
183: #endif /* glob.h  */
184: 


for client 3.88.60.5
© Andrew Scott 2006 - 2024,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/