Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / glob.h @ 14

History | View | Annotate | Download (4.5 KB)

1 13 up20180614
/*        $NetBSD: glob.h,v 1.26 2010/09/06 14:38:56 christos Exp $        */
2
3
/*
4
 * Copyright (c) 1989, 1993
5
 *        The Regents of the University of California.  All rights reserved.
6
 *
7
 * This code is derived from software contributed to Berkeley by
8
 * Guido van Rossum.
9
 *
10
 * Redistribution and use in source and binary forms, with or without
11
 * modification, are permitted provided that the following conditions
12
 * are met:
13
 * 1. Redistributions of source code must retain the above copyright
14
 *    notice, this list of conditions and the following disclaimer.
15
 * 2. Redistributions in binary form must reproduce the above copyright
16
 *    notice, this list of conditions and the following disclaimer in the
17
 *    documentation and/or other materials provided with the distribution.
18
 * 3. Neither the name of the University nor the names of its contributors
19
 *    may be used to endorse or promote products derived from this software
20
 *    without specific prior written permission.
21
 *
22
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32
 * SUCH DAMAGE.
33
 *
34
 *        @(#)glob.h        8.1 (Berkeley) 6/2/93
35
 */
36
37
#ifndef _GLOB_H_
38
#define        _GLOB_H_
39
40
#include <sys/cdefs.h>
41
#include <sys/featuretest.h>
42
#include <sys/types.h>
43
#include <sys/stat.h>
44
45
#ifndef __gl_size_t
46
#define __gl_size_t        size_t
47
#endif
48
#ifndef __gl_stat_t
49
#define __gl_stat_t        struct stat
50
#endif
51
52
typedef struct {
53
        __gl_size_t gl_pathc;        /* Count of total paths so far. */
54
        __gl_size_t gl_matchc;        /* Count of paths matching pattern. */
55
        __gl_size_t gl_offs;        /* Reserved at beginning of gl_pathv. */
56
        int gl_flags;                /* Copy of flags parameter to glob. */
57
        char **gl_pathv;        /* List of paths matching pattern. */
58
                                /* Copy of errfunc parameter to glob. */
59
        int (*gl_errfunc)(const char *, int);
60
61
        /*
62
         * Alternate filesystem access methods for glob; replacement
63
         * versions of closedir(3), readdir(3), opendir(3), stat(2)
64
         * and lstat(2).
65
         */
66
        void (*gl_closedir)(void *);
67
        struct dirent *(*gl_readdir)(void *);
68
        void *(*gl_opendir)(const char *);
69
        int (*gl_lstat)(const char *, __gl_stat_t *);
70
        int (*gl_stat)(const char *, __gl_stat_t *);
71
} glob_t;
72
73
#define        GLOB_APPEND        0x0001        /* Append to output from previous call. */
74
#define        GLOB_DOOFFS        0x0002        /* Use gl_offs. */
75
#define        GLOB_ERR        0x0004        /* Return on error. */
76
#define        GLOB_MARK        0x0008        /* Append / to matching directories. */
77
#define        GLOB_NOCHECK        0x0010        /* Return pattern itself if nothing matches. */
78
#define        GLOB_NOSORT        0x0020        /* Don't sort. */
79
#define        GLOB_NOESCAPE        0x1000        /* Disable backslash escaping. */
80
81
#define        GLOB_NOSPACE        (-1)        /* Malloc call failed. */
82
#define        GLOB_ABORTED        (-2)        /* Unignored error. */
83
#define        GLOB_NOMATCH        (-3)        /* No match, and GLOB_NOCHECK was not set. */
84
#define        GLOB_NOSYS        (-4)        /* Implementation does not support function. */
85
86
#if defined(_NETBSD_SOURCE) || defined(HAVE_NBTOOL_CONFIG_H)
87
#define        GLOB_ALTDIRFUNC        0x0040        /* Use alternately specified directory funcs. */
88
#define        GLOB_BRACE        0x0080        /* Expand braces ala csh. */
89
#define        GLOB_MAGCHAR        0x0100        /* Pattern had globbing characters. */
90
#define        GLOB_NOMAGIC        0x0200        /* GLOB_NOCHECK without magic chars (csh). */
91
#define        GLOB_LIMIT        0x0400        /* Limit memory used by matches to ARG_MAX */
92
#define        GLOB_TILDE        0x0800        /* Expand tilde names from the passwd file. */
93
/*        GLOB_NOESCAPE        0x1000        above */
94
#define        GLOB_PERIOD        0x2000        /* Allow metachars to match leading periods. */
95
#define        GLOB_NO_DOTDIRS        0x4000        /* Make . and .. vanish from wildcards. */
96
#define        GLOB_STAR        0x8000        /* Use glob ** to recurse directories */
97
#define        GLOB_QUOTE        0        /* source compatibility */
98
99
#define        GLOB_ABEND        GLOB_ABORTED        /* source compatibility */
100
#endif
101
102
__BEGIN_DECLS
103
#ifndef __LIBC12_SOURCE__
104
int        glob(const char * __restrict, int,
105
    int (*)(const char *, int), glob_t * __restrict)         __RENAME(__glob30);
106
void        globfree(glob_t *)                                 __RENAME(__globfree30);
107
#endif
108
#ifdef _NETBSD_SOURCE
109
int        glob_pattern_p(const char *, int);
110
#endif
111
__END_DECLS
112
113
#endif /* !_GLOB_H_ */