Print this page
1097 glob(3c) needs to support non-POSIX options
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/head/glob.h
+++ new/usr/src/head/glob.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License, Version 1.0 only
6 6 * (the "License"). You may not use this file except in compliance
7 7 * with the License.
8 8 *
9 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 * or http://www.opensolaris.org/os/licensing.
11 11 * See the License for the specific language governing permissions
↓ open down ↓ |
11 lines elided |
↑ open up ↑ |
12 12 * and limitations under the License.
13 13 *
14 14 * When distributing Covered Code, include this CDDL HEADER in each
15 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 * If applicable, add the following below this CDDL HEADER, with the
17 17 * fields enclosed by brackets "[]" replaced with your own identifying
18 18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 19 *
20 20 * CDDL HEADER END
21 21 */
22 +
22 23 /*
24 + * Copyright (c) 1989, 1993
25 + * The Regents of the University of California. All rights reserved.
26 + *
27 + * This code is derived from software contributed to Berkeley by
28 + * Guido van Rossum.
29 + *
30 + * Redistribution and use in source and binary forms, with or without
31 + * modification, are permitted provided that the following conditions
32 + * are met:
33 + * 1. Redistributions of source code must retain the above copyright
34 + * notice, this list of conditions and the following disclaimer.
35 + * 2. Redistributions in binary form must reproduce the above copyright
36 + * notice, this list of conditions and the following disclaimer in the
37 + * documentation and/or other materials provided with the distribution.
38 + * 3. Neither the name of the University nor the names of its contributors
39 + * may be used to endorse or promote products derived from this software
40 + * without specific prior written permission.
41 + *
42 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
43 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
44 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
45 + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
46 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
47 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
48 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
50 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
51 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52 + * SUCH DAMAGE.
53 + *
54 + * @(#)glob.h 8.1 (Berkeley) 6/2/93
55 + */
56 +
57 +/*
23 58 * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
24 59 * Use is subject to license terms.
60 + * Copyright (c) 2012 Gary Mills
25 61 */
26 62
27 63 /*
28 64 * Copyright 1985, 1992 by Mortice Kern Systems Inc. All rights reserved.
29 65 */
30 66
31 67 #ifndef _GLOB_H
32 68 #define _GLOB_H
33 69
34 -#pragma ident "%Z%%M% %I% %E% SMI"
35 -
36 70 #include <sys/feature_tests.h>
37 71 #include <sys/types.h>
72 +#include <sys/stat.h>
73 +#include <dirent.h>
38 74
39 75 #ifdef __cplusplus
40 76 extern "C" {
41 77 #endif
42 78
79 +struct stat;
80 +
43 81 typedef struct glob_t {
44 - size_t gl_pathc; /* Count of paths matched by pattern */
45 - char **gl_pathv; /* List of matched pathnames */
46 - size_t gl_offs; /* # of slots reserved in gl_pathv */
47 - /* following are internal to the implementation */
48 - char **gl_pathp; /* gl_pathv + gl_offs */
49 - int gl_pathn; /* # of elements allocated */
82 + /* Members required by POSIX */
83 + size_t gl_pathc; /* Total count of paths matched by pattern */
84 + char **gl_pathv; /* List of matched pathnames */
85 + size_t gl_offs; /* # of slots reserved in gl_pathv */
86 + /* Non-POSIX extensions, from Openbsd */
87 + int gl_matchc; /* Count of paths matching pattern. */
88 + int gl_flags; /* Copy of flags parameter to glob. */
89 + /* Members only accessed when Non-POSIX flags are specified. */
90 + struct stat **gl_statv; /* Stat entries corresponding to gl_pathv */
91 + /*
92 + * Alternate filesystem access methods for glob; replacement
93 + * versions of closedir(3), readdir(3), opendir(3), stat(2)
94 + * and lstat(2).
95 + */
96 + int (*gl_closedir)(DIR *);
97 + struct dirent *(*gl_readdir)(DIR *);
98 + DIR *(*gl_opendir)(const char *);
99 + int (*gl_lstat)(const char *, struct stat *);
100 + int (*gl_stat)(const char *, struct stat *);
50 101 } glob_t;
51 102
52 103 /*
53 - * "flags" argument to glob function.
104 + * POSIX "flags" argument to glob function.
54 105 */
55 106 #define GLOB_ERR 0x0001 /* Don't continue on directory error */
56 107 #define GLOB_MARK 0x0002 /* Mark directories with trailing / */
57 108 #define GLOB_NOSORT 0x0004 /* Don't sort pathnames */
58 109 #define GLOB_NOCHECK 0x0008 /* Return unquoted arg if no match */
59 110 #define GLOB_DOOFFS 0x0010 /* Ignore gl_offs unless set */
60 111 #define GLOB_APPEND 0x0020 /* Append to previous glob_t */
61 112 #define GLOB_NOESCAPE 0x0040 /* Backslashes do not quote M-chars */
62 113
63 114 /*
115 + * Non-POSIX "flags" argument to glob function, from Openbsd.
116 + */
117 +#define GLOB_BRACE 0x0080 /* Expand braces ala csh. */
118 +#define GLOB_MAGCHAR 0x0100 /* Pattern had globbing characters. */
119 +#define GLOB_NOMAGIC 0x0200 /* GLOB_NOCHECK without magic chars (csh). */
120 +#define GLOB_QUOTE 0x0400 /* Quote special chars with \. */
121 +#define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */
122 +#define GLOB_LIMIT 0x2000 /* Limit pattern match output to ARG_MAX */
123 +#define GLOB_KEEPSTAT 0x4000 /* Retain stat data for paths in gl_statv. */
124 +#define GLOB_ALTDIRFUNC 0x8000 /* Use alternately specified directory funcs. */
125 +
126 +/*
64 127 * Error returns from "glob"
65 128 */
66 129 #define GLOB_NOSYS (-4) /* function not supported (XPG4) */
67 130 #define GLOB_NOMATCH (-3) /* Pattern does not match */
68 131 #define GLOB_NOSPACE (-2) /* Not enough memory */
69 132 #define GLOB_ABORTED (-1) /* GLOB_ERR set or errfunc return!=0 */
133 +#define GLOB_ABEND GLOB_ABORTED /* backward compatibility */
70 134
71 135 #if defined(__STDC__)
72 136 extern int glob(const char *_RESTRICT_KYWD, int, int(*)(const char *, int),
73 137 glob_t *_RESTRICT_KYWD);
74 138 extern void globfree(glob_t *);
75 139 #else
76 140 extern int glob();
77 141 extern void globfree();
78 142 #endif
79 143
80 144 #ifdef __cplusplus
81 145 }
82 146 #endif
83 147
84 148 #endif /* _GLOB_H */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX