diff options
author | Damien Miller <djm@mindrot.org> | 2010-10-07 21:39:17 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2010-10-07 21:39:17 +1100 |
commit | a6e121aaa0ab61965db2dcfe8e2ba5d719fbe1e6 (patch) | |
tree | 4583d2a94482493f21537611187bd119f496807c /openbsd-compat/glob.h | |
parent | aa18063baf35e303832d9ec58204ffaab221de85 (diff) |
- djm@cvs.openbsd.org 2010/09/25 09:30:16
[sftp.c configure.ac openbsd-compat/glob.c openbsd-compat/glob.h]
make use of new glob(3) GLOB_KEEPSTAT extension to save extra server
rountrips to fetch per-file stat(2) information.
NB. update openbsd-compat/ glob(3) implementation from OpenBSD libc to
match.
Diffstat (limited to 'openbsd-compat/glob.h')
-rw-r--r-- | openbsd-compat/glob.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/openbsd-compat/glob.h b/openbsd-compat/glob.h index a2b36f974..8ea391306 100644 --- a/openbsd-compat/glob.h +++ b/openbsd-compat/glob.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: glob.h,v 1.10 2005/12/13 00:35:22 millert Exp $ */ | 1 | /* $OpenBSD: glob.h,v 1.11 2010/09/24 13:32:55 djm Exp $ */ |
2 | /* $NetBSD: glob.h,v 1.5 1994/10/26 00:55:56 cgd Exp $ */ | 2 | /* $NetBSD: glob.h,v 1.5 1994/10/26 00:55:56 cgd Exp $ */ |
3 | 3 | ||
4 | /* | 4 | /* |
@@ -38,13 +38,16 @@ | |||
38 | /* OPENBSD ORIGINAL: include/glob.h */ | 38 | /* OPENBSD ORIGINAL: include/glob.h */ |
39 | 39 | ||
40 | #if !defined(HAVE_GLOB_H) || !defined(GLOB_HAS_ALTDIRFUNC) || \ | 40 | #if !defined(HAVE_GLOB_H) || !defined(GLOB_HAS_ALTDIRFUNC) || \ |
41 | !defined(GLOB_HAS_GL_MATCHC) || \ | 41 | !defined(GLOB_HAS_GL_MATCHC) || !define(GLOB_HAS_GL_STATV) \ |
42 | !defined(HAVE_DECL_GLOB_NOMATCH) || HAVE_DECL_GLOB_NOMATCH == 0 || \ | 42 | !defined(HAVE_DECL_GLOB_NOMATCH) || HAVE_DECL_GLOB_NOMATCH == 0 || \ |
43 | defined(BROKEN_GLOB) | 43 | defined(BROKEN_GLOB) |
44 | 44 | ||
45 | #ifndef _GLOB_H_ | 45 | #ifndef _GLOB_H_ |
46 | #define _GLOB_H_ | 46 | #define _GLOB_H_ |
47 | 47 | ||
48 | #include <sys/cdefs.h> | ||
49 | #include <sys/stat.h> | ||
50 | |||
48 | struct stat; | 51 | struct stat; |
49 | typedef struct { | 52 | typedef struct { |
50 | int gl_pathc; /* Count of total paths so far. */ | 53 | int gl_pathc; /* Count of total paths so far. */ |
@@ -52,6 +55,7 @@ typedef struct { | |||
52 | int gl_offs; /* Reserved at beginning of gl_pathv. */ | 55 | int gl_offs; /* Reserved at beginning of gl_pathv. */ |
53 | int gl_flags; /* Copy of flags parameter to glob. */ | 56 | int gl_flags; /* Copy of flags parameter to glob. */ |
54 | char **gl_pathv; /* List of paths matching pattern. */ | 57 | char **gl_pathv; /* List of paths matching pattern. */ |
58 | struct stat **gl_statv; /* Stat entries corresponding to gl_pathv */ | ||
55 | /* Copy of errfunc parameter to glob. */ | 59 | /* Copy of errfunc parameter to glob. */ |
56 | int (*gl_errfunc)(const char *, int); | 60 | int (*gl_errfunc)(const char *, int); |
57 | 61 | ||
@@ -75,12 +79,10 @@ typedef struct { | |||
75 | #define GLOB_NOSORT 0x0020 /* Don't sort. */ | 79 | #define GLOB_NOSORT 0x0020 /* Don't sort. */ |
76 | #define GLOB_NOESCAPE 0x1000 /* Disable backslash escaping. */ | 80 | #define GLOB_NOESCAPE 0x1000 /* Disable backslash escaping. */ |
77 | 81 | ||
78 | /* Error values returned by glob(3) */ | ||
79 | #define GLOB_NOSPACE (-1) /* Malloc call failed. */ | 82 | #define GLOB_NOSPACE (-1) /* Malloc call failed. */ |
80 | #define GLOB_ABORTED (-2) /* Unignored error. */ | 83 | #define GLOB_ABORTED (-2) /* Unignored error. */ |
81 | #define GLOB_NOMATCH (-3) /* No match and GLOB_NOCHECK not set. */ | 84 | #define GLOB_NOMATCH (-3) /* No match and GLOB_NOCHECK not set. */ |
82 | #define GLOB_NOSYS (-4) /* Function not supported. */ | 85 | #define GLOB_NOSYS (-4) /* Function not supported. */ |
83 | #define GLOB_ABEND GLOB_ABORTED | ||
84 | 86 | ||
85 | #define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */ | 87 | #define GLOB_ALTDIRFUNC 0x0040 /* Use alternately specified directory funcs. */ |
86 | #define GLOB_BRACE 0x0080 /* Expand braces ala csh. */ | 88 | #define GLOB_BRACE 0x0080 /* Expand braces ala csh. */ |
@@ -89,6 +91,8 @@ typedef struct { | |||
89 | #define GLOB_QUOTE 0x0400 /* Quote special chars with \. */ | 91 | #define GLOB_QUOTE 0x0400 /* Quote special chars with \. */ |
90 | #define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */ | 92 | #define GLOB_TILDE 0x0800 /* Expand tilde names from the passwd file. */ |
91 | #define GLOB_LIMIT 0x2000 /* Limit pattern match output to ARG_MAX */ | 93 | #define GLOB_LIMIT 0x2000 /* Limit pattern match output to ARG_MAX */ |
94 | #define GLOB_KEEPSTAT 0x4000 /* Retain stat data for paths in gl_statv. */ | ||
95 | #define GLOB_ABEND GLOB_ABORTED /* backward compatibility */ | ||
92 | 96 | ||
93 | int glob(const char *, int, int (*)(const char *, int), glob_t *); | 97 | int glob(const char *, int, int (*)(const char *, int), glob_t *); |
94 | void globfree(glob_t *); | 98 | void globfree(glob_t *); |
@@ -96,5 +100,5 @@ void globfree(glob_t *); | |||
96 | #endif /* !_GLOB_H_ */ | 100 | #endif /* !_GLOB_H_ */ |
97 | 101 | ||
98 | #endif /* !defined(HAVE_GLOB_H) || !defined(GLOB_HAS_ALTDIRFUNC) || | 102 | #endif /* !defined(HAVE_GLOB_H) || !defined(GLOB_HAS_ALTDIRFUNC) || |
99 | !defined(GLOB_HAS_GL_MATCHC */ | 103 | !defined(GLOB_HAS_GL_MATCHC) || !defined(GLOH_HAS_GL_STATV) */ |
100 | 104 | ||