summaryrefslogtreecommitdiff
path: root/openbsd-compat/glob.h
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2010-10-07 21:39:17 +1100
committerDamien Miller <djm@mindrot.org>2010-10-07 21:39:17 +1100
commita6e121aaa0ab61965db2dcfe8e2ba5d719fbe1e6 (patch)
tree4583d2a94482493f21537611187bd119f496807c /openbsd-compat/glob.h
parentaa18063baf35e303832d9ec58204ffaab221de85 (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.h14
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
48struct stat; 51struct stat;
49typedef struct { 52typedef 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
93int glob(const char *, int, int (*)(const char *, int), glob_t *); 97int glob(const char *, int, int (*)(const char *, int), glob_t *);
94void globfree(glob_t *); 98void 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