summaryrefslogtreecommitdiff
path: root/ext/File-Glob
diff options
context:
space:
mode:
authorMichael G. Schwern <schwern@pobox.com>2020-12-28 18:04:52 -0800
committerKarl Williamson <khw@cpan.org>2021-01-17 09:18:15 -0700
commit1604cfb0273418ed479719f39def5ee559bffda2 (patch)
tree166a5ab935a029ab86cf6295d6f3cb77da22e559 /ext/File-Glob
parent557ff1b2a4ecd18fe9229e7e0eb8fa123adc5670 (diff)
downloadperl-1604cfb0273418ed479719f39def5ee559bffda2.tar.gz
style: Detabify indentation of the C code maintained by the core.
This just detabifies to get rid of the mixed tab/space indentation. Applying consistent indentation and dealing with other tabs are another issue. Done with `expand -i`. * vutil.* left alone, it's part of version. * Left regen managed files alone for now.
Diffstat (limited to 'ext/File-Glob')
-rw-r--r--ext/File-Glob/bsd_glob.c1250
-rw-r--r--ext/File-Glob/bsd_glob.h36
2 files changed, 643 insertions, 643 deletions
diff --git a/ext/File-Glob/bsd_glob.c b/ext/File-Glob/bsd_glob.c
index b038dd117a..7a810db93f 100644
--- a/ext/File-Glob/bsd_glob.c
+++ b/ext/File-Glob/bsd_glob.c
@@ -74,8 +74,8 @@ static char sscsid[]= "$OpenBSD: glob.c,v 1.8.10.1 2001/04/10 jason Exp $";
# include <pwd.h>
#else
#if defined(HAS_PASSWD) && !defined(VMS)
- struct passwd *getpwnam(char *);
- struct passwd *getpwuid(Uid_t);
+ struct passwd *getpwnam(char *);
+ struct passwd *getpwuid(Uid_t);
#endif
#endif
@@ -168,12 +168,12 @@ static int g_stat(Char *, Stat_t *, glob_t *);
static int glob0(const Char *, glob_t *);
static int glob1(Char *, Char *, glob_t *, size_t *);
static int glob2(Char *, Char *, Char *, Char *, Char *, Char *,
- glob_t *, size_t *);
+ glob_t *, size_t *);
static int glob3(Char *, Char *, Char *, Char *, Char *,
- Char *, Char *, glob_t *, size_t *);
+ Char *, Char *, glob_t *, size_t *);
static int globextend(const Char *, glob_t *, size_t *);
static const Char *
- globtilde(const Char *, Char *, size_t, glob_t *);
+ globtilde(const Char *, Char *, size_t, glob_t *);
static int globexp1(const Char *, glob_t *);
static int globexp2(const Char *, const Char *, glob_t *, int *);
static int match(Char *, Char *, Char *, int);
@@ -216,82 +216,82 @@ my_readdir(DIR *d)
int
bsd_glob(const char *pattern, int flags,
- int (*errfunc)(const char *, int), glob_t *pglob)
+ int (*errfunc)(const char *, int), glob_t *pglob)
{
- const U8 *patnext;
- int c;
- Char *bufnext, *bufend, patbuf[MAXPATHLEN];
- patnext = (U8 *) pattern;
- /* TODO: GLOB_APPEND / GLOB_DOOFFS aren't supported yet */
+ const U8 *patnext;
+ int c;
+ Char *bufnext, *bufend, patbuf[MAXPATHLEN];
+ patnext = (U8 *) pattern;
+ /* TODO: GLOB_APPEND / GLOB_DOOFFS aren't supported yet */
#if 0
- if (!(flags & GLOB_APPEND)) {
- pglob->gl_pathc = 0;
- pglob->gl_pathv = NULL;
- if (!(flags & GLOB_DOOFFS))
- pglob->gl_offs = 0;
- }
+ if (!(flags & GLOB_APPEND)) {
+ pglob->gl_pathc = 0;
+ pglob->gl_pathv = NULL;
+ if (!(flags & GLOB_DOOFFS))
+ pglob->gl_offs = 0;
+ }
#else
- pglob->gl_pathc = 0;
- pglob->gl_pathv = NULL;
- pglob->gl_offs = 0;
+ pglob->gl_pathc = 0;
+ pglob->gl_pathv = NULL;
+ pglob->gl_offs = 0;
#endif
- pglob->gl_flags = flags & ~GLOB_MAGCHAR;
- pglob->gl_errfunc = errfunc;
- pglob->gl_matchc = 0;
+ pglob->gl_flags = flags & ~GLOB_MAGCHAR;
+ pglob->gl_errfunc = errfunc;
+ pglob->gl_matchc = 0;
- bufnext = patbuf;
- bufend = bufnext + MAXPATHLEN - 1;
+ bufnext = patbuf;
+ bufend = bufnext + MAXPATHLEN - 1;
#ifdef DOSISH
- /* Nasty hack to treat patterns like "C:*" correctly. In this
- * case, the * should match any file in the current directory
- * on the C: drive. However, the glob code does not treat the
- * colon specially, so it looks for files beginning "C:" in
- * the current directory. To fix this, change the pattern to
- * add an explicit "./" at the start (just after the drive
- * letter and colon - ie change to "C:./").
- */
- if (isalpha(pattern[0]) && pattern[1] == ':' &&
- pattern[2] != BG_SEP && pattern[2] != BG_SEP2 &&
- bufend - bufnext > 4) {
- *bufnext++ = pattern[0];
- *bufnext++ = ':';
- *bufnext++ = '.';
- *bufnext++ = BG_SEP;
- patnext += 2;
- }
+ /* Nasty hack to treat patterns like "C:*" correctly. In this
+ * case, the * should match any file in the current directory
+ * on the C: drive. However, the glob code does not treat the
+ * colon specially, so it looks for files beginning "C:" in
+ * the current directory. To fix this, change the pattern to
+ * add an explicit "./" at the start (just after the drive
+ * letter and colon - ie change to "C:./").
+ */
+ if (isalpha(pattern[0]) && pattern[1] == ':' &&
+ pattern[2] != BG_SEP && pattern[2] != BG_SEP2 &&
+ bufend - bufnext > 4) {
+ *bufnext++ = pattern[0];
+ *bufnext++ = ':';
+ *bufnext++ = '.';
+ *bufnext++ = BG_SEP;
+ patnext += 2;
+ }
#endif
- if (flags & GLOB_QUOTE) {
- /* Protect the quoted characters. */
- while (bufnext < bufend && (c = *patnext++) != BG_EOS)
- if (c == BG_QUOTE) {
+ if (flags & GLOB_QUOTE) {
+ /* Protect the quoted characters. */
+ while (bufnext < bufend && (c = *patnext++) != BG_EOS)
+ if (c == BG_QUOTE) {
#ifdef DOSISH
- /* To avoid backslashitis on Win32,
- * we only treat \ as a quoting character
- * if it precedes one of the
- * metacharacters []-{}~\
- */
- if ((c = *patnext++) != '[' && c != ']' &&
- c != '-' && c != '{' && c != '}' &&
- c != '~' && c != '\\') {
+ /* To avoid backslashitis on Win32,
+ * we only treat \ as a quoting character
+ * if it precedes one of the
+ * metacharacters []-{}~\
+ */
+ if ((c = *patnext++) != '[' && c != ']' &&
+ c != '-' && c != '{' && c != '}' &&
+ c != '~' && c != '\\') {
#else
- if ((c = *patnext++) == BG_EOS) {
+ if ((c = *patnext++) == BG_EOS) {
#endif
- c = BG_QUOTE;
- --patnext;
- }
- *bufnext++ = c | M_PROTECT;
- } else
- *bufnext++ = c;
- } else
- while (bufnext < bufend && (c = *patnext++) != BG_EOS)
- *bufnext++ = c;
- *bufnext = BG_EOS;
-
- if (flags & GLOB_BRACE)
- return globexp1(patbuf, pglob);
- else
- return glob0(patbuf, pglob);
+ c = BG_QUOTE;
+ --patnext;
+ }
+ *bufnext++ = c | M_PROTECT;
+ } else
+ *bufnext++ = c;
+ } else
+ while (bufnext < bufend && (c = *patnext++) != BG_EOS)
+ *bufnext++ = c;
+ *bufnext = BG_EOS;
+
+ if (flags & GLOB_BRACE)
+ return globexp1(patbuf, pglob);
+ else
+ return glob0(patbuf, pglob);
}
/*
@@ -302,18 +302,18 @@ bsd_glob(const char *pattern, int flags,
static int
globexp1(const Char *pattern, glob_t *pglob)
{
- const Char* ptr = pattern;
- int rv;
+ const Char* ptr = pattern;
+ int rv;
- /* Protect a single {}, for find(1), like csh */
- if (pattern[0] == BG_LBRACE && pattern[1] == BG_RBRACE && pattern[2] == BG_EOS)
- return glob0(pattern, pglob);
+ /* Protect a single {}, for find(1), like csh */
+ if (pattern[0] == BG_LBRACE && pattern[1] == BG_RBRACE && pattern[2] == BG_EOS)
+ return glob0(pattern, pglob);
- while ((ptr = (const Char *) g_strchr((Char *) ptr, BG_LBRACE)) != NULL)
- if (!globexp2(ptr, pattern, pglob, &rv))
- return rv;
+ while ((ptr = (const Char *) g_strchr((Char *) ptr, BG_LBRACE)) != NULL)
+ if (!globexp2(ptr, pattern, pglob, &rv))
+ return rv;
- return glob0(pattern, pglob);
+ return glob0(pattern, pglob);
}
@@ -324,103 +324,103 @@ globexp1(const Char *pattern, glob_t *pglob)
*/
static int
globexp2(const Char *ptr, const Char *pattern,
- glob_t *pglob, int *rv)
+ glob_t *pglob, int *rv)
{
- int i;
- Char *lm, *ls;
- const Char *pe, *pm, *pm1, *pl;
- Char patbuf[MAXPATHLEN];
-
- /* copy part up to the brace */
- for (lm = patbuf, pm = pattern; pm != ptr; *lm++ = *pm++)
- ;
- *lm = BG_EOS;
- ls = lm;
-
- /* Find the balanced brace */
- for (i = 0, pe = ++ptr; *pe; pe++)
- if (*pe == BG_LBRACKET) {
- /* Ignore everything between [] */
- for (pm = pe++; *pe != BG_RBRACKET && *pe != BG_EOS; pe++)
- ;
- if (*pe == BG_EOS) {
- /*
- * We could not find a matching BG_RBRACKET.
- * Ignore and just look for BG_RBRACE
- */
- pe = pm;
- }
- } else if (*pe == BG_LBRACE)
- i++;
- else if (*pe == BG_RBRACE) {
- if (i == 0)
- break;
- i--;
- }
-
- /* Non matching braces; just glob the pattern */
- if (i != 0 || *pe == BG_EOS) {
- *rv = glob0(patbuf, pglob);
- return 0;
- }
-
- for (i = 0, pl = pm = ptr; pm <= pe; pm++) {
- switch (*pm) {
- case BG_LBRACKET:
- /* Ignore everything between [] */
- for (pm1 = pm++; *pm != BG_RBRACKET && *pm != BG_EOS; pm++)
- ;
- if (*pm == BG_EOS) {
- /*
- * We could not find a matching BG_RBRACKET.
- * Ignore and just look for BG_RBRACE
- */
- pm = pm1;
- }
- break;
-
- case BG_LBRACE:
- i++;
- break;
-
- case BG_RBRACE:
- if (i) {
- i--;
- break;
- }
- /* FALLTHROUGH */
- case BG_COMMA:
- if (i && *pm == BG_COMMA)
- break;
- else {
- /* Append the current string */
- for (lm = ls; (pl < pm); *lm++ = *pl++)
- ;
-
- /*
- * Append the rest of the pattern after the
- * closing brace
- */
- for (pl = pe + 1; (*lm++ = *pl++) != BG_EOS; )
- ;
-
- /* Expand the current pattern */
+ int i;
+ Char *lm, *ls;
+ const Char *pe, *pm, *pm1, *pl;
+ Char patbuf[MAXPATHLEN];
+
+ /* copy part up to the brace */
+ for (lm = patbuf, pm = pattern; pm != ptr; *lm++ = *pm++)
+ ;
+ *lm = BG_EOS;
+ ls = lm;
+
+ /* Find the balanced brace */
+ for (i = 0, pe = ++ptr; *pe; pe++)
+ if (*pe == BG_LBRACKET) {
+ /* Ignore everything between [] */
+ for (pm = pe++; *pe != BG_RBRACKET && *pe != BG_EOS; pe++)
+ ;
+ if (*pe == BG_EOS) {
+ /*
+ * We could not find a matching BG_RBRACKET.
+ * Ignore and just look for BG_RBRACE
+ */
+ pe = pm;
+ }
+ } else if (*pe == BG_LBRACE)
+ i++;
+ else if (*pe == BG_RBRACE) {
+ if (i == 0)
+ break;
+ i--;
+ }
+
+ /* Non matching braces; just glob the pattern */
+ if (i != 0 || *pe == BG_EOS) {
+ *rv = glob0(patbuf, pglob);
+ return 0;
+ }
+
+ for (i = 0, pl = pm = ptr; pm <= pe; pm++) {
+ switch (*pm) {
+ case BG_LBRACKET:
+ /* Ignore everything between [] */
+ for (pm1 = pm++; *pm != BG_RBRACKET && *pm != BG_EOS; pm++)
+ ;
+ if (*pm == BG_EOS) {
+ /*
+ * We could not find a matching BG_RBRACKET.
+ * Ignore and just look for BG_RBRACE
+ */
+ pm = pm1;
+ }
+ break;
+
+ case BG_LBRACE:
+ i++;
+ break;
+
+ case BG_RBRACE:
+ if (i) {
+ i--;
+ break;
+ }
+ /* FALLTHROUGH */
+ case BG_COMMA:
+ if (i && *pm == BG_COMMA)
+ break;
+ else {
+ /* Append the current string */
+ for (lm = ls; (pl < pm); *lm++ = *pl++)
+ ;
+
+ /*
+ * Append the rest of the pattern after the
+ * closing brace
+ */
+ for (pl = pe + 1; (*lm++ = *pl++) != BG_EOS; )
+ ;
+
+ /* Expand the current pattern */
#ifdef GLOB_DEBUG
- qprintf("globexp2:", patbuf);
+ qprintf("globexp2:", patbuf);
#endif /* GLOB_DEBUG */
- *rv = globexp1(patbuf, pglob);
-
- /* move after the comma, to the next string */
- pl = pm + 1;
- }
- break;
-
- default:
- break;
- }
- }
- *rv = 0;
- return 0;
+ *rv = globexp1(patbuf, pglob);
+
+ /* move after the comma, to the next string */
+ pl = pm + 1;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+ *rv = 0;
+ return 0;
}
@@ -431,76 +431,76 @@ globexp2(const Char *ptr, const Char *pattern,
static const Char *
globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob)
{
- char *h;
- const Char *p;
- Char *b, *eb;
+ char *h;
+ const Char *p;
+ Char *b, *eb;
- if (*pattern != BG_TILDE || !(pglob->gl_flags & GLOB_TILDE))
- return pattern;
+ if (*pattern != BG_TILDE || !(pglob->gl_flags & GLOB_TILDE))
+ return pattern;
- /* Copy up to the end of the string or / */
- eb = &patbuf[patbuf_len - 1];
- for (p = pattern + 1, h = (char *) patbuf;
- h < (char*)eb && *p && *p != BG_SLASH; *h++ = (char)*p++)
- ;
+ /* Copy up to the end of the string or / */
+ eb = &patbuf[patbuf_len - 1];
+ for (p = pattern + 1, h = (char *) patbuf;
+ h < (char*)eb && *p && *p != BG_SLASH; *h++ = (char)*p++)
+ ;
- *h = BG_EOS;
+ *h = BG_EOS;
#if 0
- if (h == (char *)eb)
- return what;
+ if (h == (char *)eb)
+ return what;
#endif
- if (((char *) patbuf)[0] == BG_EOS) {
- /*
- * handle a plain ~ or ~/ by expanding $HOME
- * first and then trying the password file
- * or $USERPROFILE on DOSISH systems
- */
- if ((h = PerlEnv_getenv("HOME")) == NULL) {
+ if (((char *) patbuf)[0] == BG_EOS) {
+ /*
+ * handle a plain ~ or ~/ by expanding $HOME
+ * first and then trying the password file
+ * or $USERPROFILE on DOSISH systems
+ */
+ if ((h = PerlEnv_getenv("HOME")) == NULL) {
#ifdef HAS_PASSWD
- struct passwd *pwd;
- if ((pwd = getpwuid(getuid())) == NULL)
- return pattern;
- else
- h = pwd->pw_dir;
+ struct passwd *pwd;
+ if ((pwd = getpwuid(getuid())) == NULL)
+ return pattern;
+ else
+ h = pwd->pw_dir;
#elif DOSISH
- /*
- * When no passwd file, fallback to the USERPROFILE
- * environment variable on DOSish systems.
- */
- if ((h = PerlEnv_getenv("USERPROFILE")) == NULL) {
- return pattern;
- }
+ /*
+ * When no passwd file, fallback to the USERPROFILE
+ * environment variable on DOSish systems.
+ */
+ if ((h = PerlEnv_getenv("USERPROFILE")) == NULL) {
+ return pattern;
+ }
#else
return pattern;
#endif
- }
- } else {
- /*
- * Expand a ~user
- */
+ }
+ } else {
+ /*
+ * Expand a ~user
+ */
#ifdef HAS_PASSWD
- struct passwd *pwd;
- if ((pwd = getpwnam((char*) patbuf)) == NULL)
- return pattern;
- else
- h = pwd->pw_dir;
+ struct passwd *pwd;
+ if ((pwd = getpwnam((char*) patbuf)) == NULL)
+ return pattern;
+ else
+ h = pwd->pw_dir;
#else
return pattern;
#endif
- }
+ }
- /* Copy the home directory */
- for (b = patbuf; b < eb && *h; *b++ = *h++)
- ;
+ /* Copy the home directory */
+ for (b = patbuf; b < eb && *h; *b++ = *h++)
+ ;
- /* Append the rest of the pattern */
- while (b < eb && (*b++ = *p++) != BG_EOS)
- ;
- *b = BG_EOS;
+ /* Append the rest of the pattern */
+ while (b < eb && (*b++ = *p++) != BG_EOS)
+ ;
+ *b = BG_EOS;
- return patbuf;
+ return patbuf;
}
@@ -514,142 +514,142 @@ globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob_t *pglob)
static int
glob0(const Char *pattern, glob_t *pglob)
{
- const Char *qpat, *qpatnext;
- int c, err, oldflags, oldpathc;
- Char *bufnext, patbuf[MAXPATHLEN];
- size_t limit = 0;
-
- qpat = globtilde(pattern, patbuf, MAXPATHLEN, pglob);
- qpatnext = qpat;
- oldflags = pglob->gl_flags;
- oldpathc = pglob->gl_pathc;
- bufnext = patbuf;
-
- /* We don't need to check for buffer overflow any more. */
- while ((c = *qpatnext++) != BG_EOS) {
- switch (c) {
- case BG_LBRACKET:
- c = *qpatnext;
- if (c == BG_NOT)
- ++qpatnext;
- if (*qpatnext == BG_EOS ||
- g_strchr((Char *) qpatnext+1, BG_RBRACKET) == NULL) {
- *bufnext++ = BG_LBRACKET;
- if (c == BG_NOT)
- --qpatnext;
- break;
- }
- *bufnext++ = M_SET;
- if (c == BG_NOT)
- *bufnext++ = M_NOT;
- c = *qpatnext++;
- do {
- *bufnext++ = CHAR(c);
- if (*qpatnext == BG_RANGE &&
- (c = qpatnext[1]) != BG_RBRACKET) {
- *bufnext++ = M_RNG;
- *bufnext++ = CHAR(c);
- qpatnext += 2;
- }
- } while ((c = *qpatnext++) != BG_RBRACKET);
- pglob->gl_flags |= GLOB_MAGCHAR;
- *bufnext++ = M_END;
- break;
- case BG_QUESTION:
- pglob->gl_flags |= GLOB_MAGCHAR;
- *bufnext++ = M_ONE;
- break;
- case BG_STAR:
- pglob->gl_flags |= GLOB_MAGCHAR;
+ const Char *qpat, *qpatnext;
+ int c, err, oldflags, oldpathc;
+ Char *bufnext, patbuf[MAXPATHLEN];
+ size_t limit = 0;
+
+ qpat = globtilde(pattern, patbuf, MAXPATHLEN, pglob);
+ qpatnext = qpat;
+ oldflags = pglob->gl_flags;
+ oldpathc = pglob->gl_pathc;
+ bufnext = patbuf;
+
+ /* We don't need to check for buffer overflow any more. */
+ while ((c = *qpatnext++) != BG_EOS) {
+ switch (c) {
+ case BG_LBRACKET:
+ c = *qpatnext;
+ if (c == BG_NOT)
+ ++qpatnext;
+ if (*qpatnext == BG_EOS ||
+ g_strchr((Char *) qpatnext+1, BG_RBRACKET) == NULL) {
+ *bufnext++ = BG_LBRACKET;
+ if (c == BG_NOT)
+ --qpatnext;
+ break;
+ }
+ *bufnext++ = M_SET;
+ if (c == BG_NOT)
+ *bufnext++ = M_NOT;
+ c = *qpatnext++;
+ do {
+ *bufnext++ = CHAR(c);
+ if (*qpatnext == BG_RANGE &&
+ (c = qpatnext[1]) != BG_RBRACKET) {
+ *bufnext++ = M_RNG;
+ *bufnext++ = CHAR(c);
+ qpatnext += 2;
+ }
+ } while ((c = *qpatnext++) != BG_RBRACKET);
+ pglob->gl_flags |= GLOB_MAGCHAR;
+ *bufnext++ = M_END;
+ break;
+ case BG_QUESTION:
+ pglob->gl_flags |= GLOB_MAGCHAR;
+ *bufnext++ = M_ONE;
+ break;
+ case BG_STAR:
+ pglob->gl_flags |= GLOB_MAGCHAR;
/* Collapse adjacent stars to one.
* This is required to ensure that a pattern like
* "a**" matches a name like "a", as without this
* check when the first star matched everything it would
* cause the second star to return a match fail.
* As long ** is folded here this does not happen.
- */
- if (bufnext == patbuf || bufnext[-1] != M_ALL)
- *bufnext++ = M_ALL;
- break;
- default:
- *bufnext++ = CHAR(c);
- break;
- }
- }
- *bufnext = BG_EOS;
+ */
+ if (bufnext == patbuf || bufnext[-1] != M_ALL)
+ *bufnext++ = M_ALL;
+ break;
+ default:
+ *bufnext++ = CHAR(c);
+ break;
+ }
+ }
+ *bufnext = BG_EOS;
#ifdef GLOB_DEBUG
- qprintf("glob0:", patbuf);
+ qprintf("glob0:", patbuf);
#endif /* GLOB_DEBUG */
- if ((err = glob1(patbuf, patbuf+MAXPATHLEN-1, pglob, &limit)) != 0) {
- pglob->gl_flags = oldflags;
- return(err);
- }
-
- /*
- * If there was no match we are going to append the pattern
- * if GLOB_NOCHECK was specified or if GLOB_NOMAGIC was specified
- * and the pattern did not contain any magic characters
- * GLOB_NOMAGIC is there just for compatibility with csh.
- */
- if (pglob->gl_pathc == oldpathc &&
- ((pglob->gl_flags & GLOB_NOCHECK) ||
- ((pglob->gl_flags & GLOB_NOMAGIC) &&
- !(pglob->gl_flags & GLOB_MAGCHAR))))
- {
+ if ((err = glob1(patbuf, patbuf+MAXPATHLEN-1, pglob, &limit)) != 0) {
+ pglob->gl_flags = oldflags;
+ return(err);
+ }
+
+ /*
+ * If there was no match we are going to append the pattern
+ * if GLOB_NOCHECK was specified or if GLOB_NOMAGIC was specified
+ * and the pattern did not contain any magic characters
+ * GLOB_NOMAGIC is there just for compatibility with csh.
+ */
+ if (pglob->gl_pathc == oldpathc &&
+ ((pglob->gl_flags & GLOB_NOCHECK) ||
+ ((pglob->gl_flags & GLOB_NOMAGIC) &&
+ !(pglob->gl_flags & GLOB_MAGCHAR))))
+ {
#ifdef GLOB_DEBUG
- printf("calling globextend from glob0\n");
+ printf("calling globextend from glob0\n");
#endif /* GLOB_DEBUG */
- pglob->gl_flags = oldflags;
- return(globextend(qpat, pglob, &limit));
+ pglob->gl_flags = oldflags;
+ return(globextend(qpat, pglob, &limit));
}
- else if (!(pglob->gl_flags & GLOB_NOSORT))
+ else if (!(pglob->gl_flags & GLOB_NOSORT))
if (pglob->gl_pathv)
- qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc,
- pglob->gl_pathc - oldpathc, sizeof(char *),
- (pglob->gl_flags & (GLOB_ALPHASORT|GLOB_NOCASE))
- ? ci_compare : compare);
- pglob->gl_flags = oldflags;
- return(0);
+ qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc,
+ pglob->gl_pathc - oldpathc, sizeof(char *),
+ (pglob->gl_flags & (GLOB_ALPHASORT|GLOB_NOCASE))
+ ? ci_compare : compare);
+ pglob->gl_flags = oldflags;
+ return(0);
}
static int
ci_compare(const void *p, const void *q)
{
- const char *pp = *(const char **)p;
- const char *qq = *(const char **)q;
- int ci;
- while (*pp && *qq) {
- if (toFOLD(*pp) != toFOLD(*qq))
- break;
- ++pp;
- ++qq;
- }
- ci = toFOLD(*pp) - toFOLD(*qq);
- if (ci == 0)
- return compare(p, q);
- return ci;
+ const char *pp = *(const char **)p;
+ const char *qq = *(const char **)q;
+ int ci;
+ while (*pp && *qq) {
+ if (toFOLD(*pp) != toFOLD(*qq))
+ break;
+ ++pp;
+ ++qq;
+ }
+ ci = toFOLD(*pp) - toFOLD(*qq);
+ if (ci == 0)
+ return compare(p, q);
+ return ci;
}
static int
compare(const void *p, const void *q)
{
- return(strcmp(*(char **)p, *(char **)q));
+ return(strcmp(*(char **)p, *(char **)q));
}
static int
glob1(Char *pattern, Char *pattern_last, glob_t *pglob, size_t *limitp)
{
- Char pathbuf[MAXPATHLEN];
+ Char pathbuf[MAXPATHLEN];
assert(pattern < pattern_last);
- /* A null pathname is invalid -- POSIX 1003.1 sect. 2.4. */
- if (*pattern == BG_EOS)
- return(0);
- return(glob2(pathbuf, pathbuf+MAXPATHLEN-1,
- pathbuf, pathbuf+MAXPATHLEN-1,
- pattern, pattern_last, pglob, limitp));
+ /* A null pathname is invalid -- POSIX 1003.1 sect. 2.4. */
+ if (*pattern == BG_EOS)
+ return(0);
+ return(glob2(pathbuf, pathbuf+MAXPATHLEN-1,
+ pathbuf, pathbuf+MAXPATHLEN-1,
+ pattern, pattern_last, pglob, limitp));
}
/*
@@ -661,79 +661,79 @@ static int
glob2(Char *pathbuf, Char *pathbuf_last, Char *pathend, Char *pathend_last,
Char *pattern, Char *pattern_last, glob_t *pglob, size_t *limitp)
{
- Stat_t sb;
- Char *p, *q;
- int anymeta;
+ Stat_t sb;
+ Char *p, *q;
+ int anymeta;
assert(pattern < pattern_last);
- /*
- * Loop over pattern segments until end of pattern or until
- * segment with meta character found.
- */
- for (anymeta = 0;;) {
- if (*pattern == BG_EOS) { /* End of pattern? */
- *pathend = BG_EOS;
- if (g_lstat(pathbuf, &sb, pglob))
- return(0);
-
- if (((pglob->gl_flags & GLOB_MARK) &&
- pathend[-1] != BG_SEP
+ /*
+ * Loop over pattern segments until end of pattern or until
+ * segment with meta character found.
+ */
+ for (anymeta = 0;;) {
+ if (*pattern == BG_EOS) { /* End of pattern? */
+ *pathend = BG_EOS;
+ if (g_lstat(pathbuf, &sb, pglob))
+ return(0);
+
+ if (((pglob->gl_flags & GLOB_MARK) &&
+ pathend[-1] != BG_SEP
#ifdef DOSISH
- && pathend[-1] != BG_SEP2
+ && pathend[-1] != BG_SEP2
#endif
- ) && (S_ISDIR(sb.st_mode) ||
- (S_ISLNK(sb.st_mode) &&
- (g_stat(pathbuf, &sb, pglob) == 0) &&
- S_ISDIR(sb.st_mode)))) {
- if (pathend+1 > pathend_last)
- return (1);
- *pathend++ = BG_SEP;
- *pathend = BG_EOS;
- }
- ++pglob->gl_matchc;
+ ) && (S_ISDIR(sb.st_mode) ||
+ (S_ISLNK(sb.st_mode) &&
+ (g_stat(pathbuf, &sb, pglob) == 0) &&
+ S_ISDIR(sb.st_mode)))) {
+ if (pathend+1 > pathend_last)
+ return (1);
+ *pathend++ = BG_SEP;
+ *pathend = BG_EOS;
+ }
+ ++pglob->gl_matchc;
#ifdef GLOB_DEBUG
printf("calling globextend from glob2\n");
#endif /* GLOB_DEBUG */
- return(globextend(pathbuf, pglob, limitp));
- }
+ return(globextend(pathbuf, pglob, limitp));
+ }
- /* Find end of next segment, copy tentatively to pathend. */
- q = pathend;
- p = pattern;
- while (*p != BG_EOS && *p != BG_SEP
+ /* Find end of next segment, copy tentatively to pathend. */
+ q = pathend;
+ p = pattern;
+ while (*p != BG_EOS && *p != BG_SEP
#ifdef DOSISH
- && *p != BG_SEP2
+ && *p != BG_SEP2
#endif
- ) {
+ ) {
assert(p < pattern_last);
- if (ismeta(*p))
- anymeta = 1;
- if (q+1 > pathend_last)
- return (1);
- *q++ = *p++;
- }
-
- if (!anymeta) { /* No expansion, do next segment. */
- pathend = q;
- pattern = p;
- while (*pattern == BG_SEP
+ if (ismeta(*p))
+ anymeta = 1;
+ if (q+1 > pathend_last)
+ return (1);
+ *q++ = *p++;
+ }
+
+ if (!anymeta) { /* No expansion, do next segment. */
+ pathend = q;
+ pattern = p;
+ while (*pattern == BG_SEP
#ifdef DOSISH
- || *pattern == BG_SEP2
+ || *pattern == BG_SEP2
#endif
- ) {
+ ) {
assert(p < pattern_last);
- if (pathend+1 > pathend_last)
- return (1);
- *pathend++ = *pattern++;
- }
- } else
- /* Need expansion, recurse. */
- return(glob3(pathbuf, pathbuf_last, pathend,
- pathend_last, pattern,
- p, pattern_last, pglob, limitp));
- }
- /* NOTREACHED */
+ if (pathend+1 > pathend_last)
+ return (1);
+ *pathend++ = *pattern++;
+ }
+ } else
+ /* Need expansion, recurse. */
+ return(glob3(pathbuf, pathbuf_last, pathend,
+ pathend_last, pattern,
+ p, pattern_last, pglob, limitp));
+ }
+ /* NOTREACHED */
}
static int
@@ -741,97 +741,97 @@ glob3(Char *pathbuf, Char *pathbuf_last, Char *pathend, Char *pathend_last,
Char *pattern,
Char *restpattern, Char *restpattern_last, glob_t *pglob, size_t *limitp)
{
- Direntry_t *dp;
- DIR *dirp;
- int err;
- int nocase;
- char buf[MAXPATHLEN];
-
- /*
- * The readdirfunc declaration can't be prototyped, because it is
- * assigned, below, to two functions which are prototyped in glob.h
- * and dirent.h as taking pointers to differently typed opaque
- * structures.
- */
- Direntry_t *(*readdirfunc)(DIR*);
+ Direntry_t *dp;
+ DIR *dirp;
+ int err;
+ int nocase;
+ char buf[MAXPATHLEN];
+
+ /*
+ * The readdirfunc declaration can't be prototyped, because it is
+ * assigned, below, to two functions which are prototyped in glob.h
+ * and dirent.h as taking pointers to differently typed opaque
+ * structures.
+ */
+ Direntry_t *(*readdirfunc)(DIR*);
assert(pattern < restpattern_last);
assert(restpattern < restpattern_last);
- if (pathend > pathend_last)
- return (1);
- *pathend = BG_EOS;
- errno = 0;
+ if (pathend > pathend_last)
+ return (1);
+ *pathend = BG_EOS;
+ errno = 0;
#ifdef VMS
{
- Char *q = pathend;
- if (q - pathbuf > 5) {
- q -= 5;
- if (q[0] == '.' &&
- tolower(q[1]) == 'd' && tolower(q[2]) == 'i' &&
- tolower(q[3]) == 'r' && q[4] == '/')
- {
- q[0] = '/';
- q[1] = BG_EOS;
- pathend = q+1;
- }
- }
+ Char *q = pathend;
+ if (q - pathbuf > 5) {
+ q -= 5;
+ if (q[0] == '.' &&
+ tolower(q[1]) == 'd' && tolower(q[2]) == 'i' &&
+ tolower(q[3]) == 'r' && q[4] == '/')
+ {
+ q[0] = '/';
+ q[1] = BG_EOS;
+ pathend = q+1;
+ }
+ }
}
#endif
- if ((dirp = g_opendir(pathbuf, pglob)) == NULL) {
- /* TODO: don't call for ENOENT or ENOTDIR? */
- if (pglob->gl_errfunc) {
- if (g_Ctoc(pathbuf, buf, sizeof(buf)))
- return (GLOB_ABEND);
- if (pglob->gl_errfunc(buf, errno) ||
- (pglob->gl_flags & GLOB_ERR))
- return (GLOB_ABEND);
- }
- return(0);
- }
-
- err = 0;
- nocase = ((pglob->gl_flags & GLOB_NOCASE) != 0);
-
- /* Search directory for matching names. */
- if (pglob->gl_flags & GLOB_ALTDIRFUNC)
- readdirfunc = (Direntry_t *(*)(DIR *))pglob->gl_readdir;
- else
- readdirfunc = (Direntry_t *(*)(DIR *))my_readdir;
- while ((dp = (*readdirfunc)(dirp))) {
- U8 *sc;
- Char *dc;
-
- /* Initial BG_DOT must be matched literally. */
- if (dp->d_name[0] == BG_DOT && *pattern != BG_DOT)
- continue;
- dc = pathend;
- sc = (U8 *) dp->d_name;
- while (dc < pathend_last && (*dc++ = *sc++) != BG_EOS)
- ;
- if (dc >= pathend_last) {
- *dc = BG_EOS;
- err = 1;
- break;
- }
-
- if (!match(pathend, pattern, restpattern, nocase)) {
- *pathend = BG_EOS;
- continue;
- }
- err = glob2(pathbuf, pathbuf_last, --dc, pathend_last,
- restpattern, restpattern_last, pglob, limitp);
- if (err)
- break;
- }
-
- if (pglob->gl_flags & GLOB_ALTDIRFUNC)
- (*pglob->gl_closedir)(dirp);
- else
- PerlDir_close(dirp);
- return(err);
+ if ((dirp = g_opendir(pathbuf, pglob)) == NULL) {
+ /* TODO: don't call for ENOENT or ENOTDIR? */
+ if (pglob->gl_errfunc) {
+ if (g_Ctoc(pathbuf, buf, sizeof(buf)))
+ return (GLOB_ABEND);
+ if (pglob->gl_errfunc(buf, errno) ||
+ (pglob->gl_flags & GLOB_ERR))
+ return (GLOB_ABEND);
+ }
+ return(0);
+ }
+
+ err = 0;
+ nocase = ((pglob->gl_flags & GLOB_NOCASE) != 0);
+
+ /* Search directory for matching names. */
+ if (pglob->gl_flags & GLOB_ALTDIRFUNC)
+ readdirfunc = (Direntry_t *(*)(DIR *))pglob->gl_readdir;
+ else
+ readdirfunc = (Direntry_t *(*)(DIR *))my_readdir;
+ while ((dp = (*readdirfunc)(dirp))) {
+ U8 *sc;
+ Char *dc;
+
+ /* Initial BG_DOT must be matched literally. */
+ if (dp->d_name[0] == BG_DOT && *pattern != BG_DOT)
+ continue;
+ dc = pathend;
+ sc = (U8 *) dp->d_name;
+ while (dc < pathend_last && (*dc++ = *sc++) != BG_EOS)
+ ;
+ if (dc >= pathend_last) {
+ *dc = BG_EOS;
+ err = 1;
+ break;
+ }
+
+ if (!match(pathend, pattern, restpattern, nocase)) {
+ *pathend = BG_EOS;
+ continue;
+ }
+ err = glob2(pathbuf, pathbuf_last, --dc, pathend_last,
+ restpattern, restpattern_last, pglob, limitp);
+ if (err)
+ break;
+ }
+
+ if (pglob->gl_flags & GLOB_ALTDIRFUNC)
+ (*pglob->gl_closedir)(dirp);
+ else
+ PerlDir_close(dirp);
+ return(err);
}
@@ -852,61 +852,61 @@ glob3(Char *pathbuf, Char *pathbuf_last, Char *pathend, Char *pathend_last,
static int
globextend(const Char *path, glob_t *pglob, size_t *limitp)
{
- char **pathv;
- int i;
- STRLEN newsize, len;
- char *copy;
- const Char *p;
+ char **pathv;
+ int i;
+ STRLEN newsize, len;
+ char *copy;
+ const Char *p;
#ifdef GLOB_DEBUG
- printf("Adding ");
+ printf("Adding ");
for (p = path; *p; p++)
(void)printf("%c", CHAR(*p));
printf("\n");
#endif /* GLOB_DEBUG */
- newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs);
- if (pglob->gl_pathv)
- pathv = Renew(pglob->gl_pathv,newsize,char*);
- else
- Newx(pathv,newsize,char*);
- if (pathv == NULL) {
- if (pglob->gl_pathv) {
- Safefree(pglob->gl_pathv);
- pglob->gl_pathv = NULL;
- }
- return(GLOB_NOSPACE);
- }
-
- if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) {
- /* first time around -- clear initial gl_offs items */
- pathv += pglob->gl_offs;
- for (i = pglob->gl_offs; --i >= 0; )
- *--pathv = NULL;
- }
- pglob->gl_pathv = pathv;
-
- for (p = path; *p++;)
- ;
- len = (STRLEN)(p - path);
- *limitp += len;
- Newx(copy, p-path, char);
- if (copy != NULL) {
- if (g_Ctoc(path, copy, len)) {
- Safefree(copy);
- return(GLOB_NOSPACE);
- }
- pathv[pglob->gl_offs + pglob->gl_pathc++] = copy;
- }
- pathv[pglob->gl_offs + pglob->gl_pathc] = NULL;
-
- if ((pglob->gl_flags & GLOB_LIMIT) &&
- newsize + *limitp >= (unsigned long)ARG_MAX) {
- errno = 0;
- return(GLOB_NOSPACE);
- }
-
- return(copy == NULL ? GLOB_NOSPACE : 0);
+ newsize = sizeof(*pathv) * (2 + pglob->gl_pathc + pglob->gl_offs);
+ if (pglob->gl_pathv)
+ pathv = Renew(pglob->gl_pathv,newsize,char*);
+ else
+ Newx(pathv,newsize,char*);
+ if (pathv == NULL) {
+ if (pglob->gl_pathv) {
+ Safefree(pglob->gl_pathv);
+ pglob->gl_pathv = NULL;
+ }
+ return(GLOB_NOSPACE);
+ }
+
+ if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) {
+ /* first time around -- clear initial gl_offs items */
+ pathv += pglob->gl_offs;
+ for (i = pglob->gl_offs; --i >= 0; )
+ *--pathv = NULL;
+ }
+ pglob->gl_pathv = pathv;
+
+ for (p = path; *p++;)
+ ;
+ len = (STRLEN)(p - path);
+ *limitp += len;
+ Newx(copy, p-path, char);
+ if (copy != NULL) {
+ if (g_Ctoc(path, copy, len)) {
+ Safefree(copy);
+ return(GLOB_NOSPACE);
+ }
+ pathv[pglob->gl_offs + pglob->gl_pathc++] = copy;
+ }
+ pathv[pglob->gl_offs + pglob->gl_pathc] = NULL;
+
+ if ((pglob->gl_flags & GLOB_LIMIT) &&
+ newsize + *limitp >= (unsigned long)ARG_MAX) {
+ errno = 0;
+ return(GLOB_NOSPACE);
+ }
+
+ return(copy == NULL ? GLOB_NOSPACE : 0);
}
@@ -930,171 +930,171 @@ globextend(const Char *path, glob_t *pglob, size_t *limitp)
static int
match(Char *name, Char *pat, Char *patend, int nocase)
{
- int ok, negate_range;
- Char c, k;
- Char *nextp = NULL;
- Char *nextn = NULL;
+ int ok, negate_range;
+ Char c, k;
+ Char *nextp = NULL;
+ Char *nextn = NULL;
redo:
- while (pat < patend) {
- c = *pat++;
- switch (c & M_MASK) {
- case M_ALL:
- if (pat == patend)
- return(1);
- if (*name == BG_EOS)
- return 0;
- nextn = name + 1;
- nextp = pat - 1;
- break;
- case M_ONE:
+ while (pat < patend) {
+ c = *pat++;
+ switch (c & M_MASK) {
+ case M_ALL:
+ if (pat == patend)
+ return(1);
+ if (*name == BG_EOS)
+ return 0;
+ nextn = name + 1;
+ nextp = pat - 1;
+ break;
+ case M_ONE:
/* since * matches leftmost-shortest first *
* if we encounter the EOS then backtracking *
* will not help, so we can exit early here. */
- if (*name++ == BG_EOS)
+ if (*name++ == BG_EOS)
return 0;
- break;
- case M_SET:
- ok = 0;
+ break;
+ case M_SET:
+ ok = 0;
/* since * matches leftmost-shortest first *
* if we encounter the EOS then backtracking *
* will not help, so we can exit early here. */
- if ((k = *name++) == BG_EOS)
+ if ((k = *name++) == BG_EOS)
return 0;
- if ((negate_range = ((*pat & M_MASK) == M_NOT)) != BG_EOS)
- ++pat;
- while (((c = *pat++) & M_MASK) != M_END)
- if ((*pat & M_MASK) == M_RNG) {
- if (nocase) {
- if (tolower(c) <= tolower(k) && tolower(k) <= tolower(pat[1]))
- ok = 1;
- } else {
- if (c <= k && k <= pat[1])
- ok = 1;
- }
- pat += 2;
- } else if (nocase ? (tolower(c) == tolower(k)) : (c == k))
- ok = 1;
- if (ok == negate_range)
- goto fail;
- break;
- default:
- k = *name++;
- if (nocase ? (tolower(k) != tolower(c)) : (k != c))
- goto fail;
- break;
- }
- }
- if (*name == BG_EOS)
- return 1;
+ if ((negate_range = ((*pat & M_MASK) == M_NOT)) != BG_EOS)
+ ++pat;
+ while (((c = *pat++) & M_MASK) != M_END)
+ if ((*pat & M_MASK) == M_RNG) {
+ if (nocase) {
+ if (tolower(c) <= tolower(k) && tolower(k) <= tolower(pat[1]))
+ ok = 1;
+ } else {
+ if (c <= k && k <= pat[1])
+ ok = 1;
+ }
+ pat += 2;
+ } else if (nocase ? (tolower(c) == tolower(k)) : (c == k))
+ ok = 1;
+ if (ok == negate_range)
+ goto fail;
+ break;
+ default:
+ k = *name++;
+ if (nocase ? (tolower(k) != tolower(c)) : (k != c))
+ goto fail;
+ break;
+ }
+ }
+ if (*name == BG_EOS)
+ return 1;
fail:
- if (nextn) {
- pat = nextp;
- name = nextn;
- goto redo;
- }
- return 0;
+ if (nextn) {
+ pat = nextp;
+ name = nextn;
+ goto redo;
+ }
+ return 0;
}
/* Free allocated data belonging to a glob_t structure. */
void
bsd_globfree(glob_t *pglob)
{
- int i;
- char **pp;
-
- if (pglob->gl_pathv != NULL) {
- pp = pglob->gl_pathv + pglob->gl_offs;
- for (i = pglob->gl_pathc; i--; ++pp)
- if (*pp)
- Safefree(*pp);
- Safefree(pglob->gl_pathv);
- pglob->gl_pathv = NULL;
- }
+ int i;
+ char **pp;
+
+ if (pglob->gl_pathv != NULL) {
+ pp = pglob->gl_pathv + pglob->gl_offs;
+ for (i = pglob->gl_pathc; i--; ++pp)
+ if (*pp)
+ Safefree(*pp);
+ Safefree(pglob->gl_pathv);
+ pglob->gl_pathv = NULL;
+ }
}
static DIR *
g_opendir(Char *str, glob_t *pglob)
{
- char buf[MAXPATHLEN];
+ char buf[MAXPATHLEN];
- if (!*str) {
- my_strlcpy(buf, ".", sizeof(buf));
- } else {
- if (g_Ctoc(str, buf, sizeof(buf)))
- return(NULL);
- }
+ if (!*str) {
+ my_strlcpy(buf, ".", sizeof(buf));
+ } else {
+ if (g_Ctoc(str, buf, sizeof(buf)))
+ return(NULL);
+ }
- if (pglob->gl_flags & GLOB_ALTDIRFUNC)
- return((DIR*)(*pglob->gl_opendir)(buf));
+ if (pglob->gl_flags & GLOB_ALTDIRFUNC)
+ return((DIR*)(*pglob->gl_opendir)(buf));
- return(PerlDir_open(buf));
+ return(PerlDir_open(buf));
}
static int
g_lstat(Char *fn, Stat_t *sb, glob_t *pglob)
{
- char buf[MAXPATHLEN];
+ char buf[MAXPATHLEN];
- if (g_Ctoc(fn, buf, sizeof(buf)))
- return(-1);
- if (pglob->gl_flags & GLOB_ALTDIRFUNC)
- return((*pglob->gl_lstat)(buf, sb));
+ if (g_Ctoc(fn, buf, sizeof(buf)))
+ return(-1);
+ if (pglob->gl_flags & GLOB_ALTDIRFUNC)
+ return((*pglob->gl_lstat)(buf, sb));
#ifdef HAS_LSTAT
- return(PerlLIO_lstat(buf, sb));
+ return(PerlLIO_lstat(buf, sb));
#else
- return(PerlLIO_stat(buf, sb));
+ return(PerlLIO_stat(buf, sb));
#endif /* HAS_LSTAT */
}
static int
g_stat(Char *fn, Stat_t *sb, glob_t *pglob)
{
- char buf[MAXPATHLEN];
+ char buf[MAXPATHLEN];
- if (g_Ctoc(fn, buf, sizeof(buf)))
- return(-1);
- if (pglob->gl_flags & GLOB_ALTDIRFUNC)
- return((*pglob->gl_stat)(buf, sb));
- return(PerlLIO_stat(buf, sb));
+ if (g_Ctoc(fn, buf, sizeof(buf)))
+ return(-1);
+ if (pglob->gl_flags & GLOB_ALTDIRFUNC)
+ return((*pglob->gl_stat)(buf, sb));
+ return(PerlLIO_stat(buf, sb));
}
static Char *
g_strchr(Char *str, int ch)
{
- do {
- if (*str == ch)
- return (str);
- } while (*str++);
- return (NULL);
+ do {
+ if (*str == ch)
+ return (str);
+ } while (*str++);
+ return (NULL);
}
static int
g_Ctoc(const Char *str, char *buf, STRLEN len)
{
- while (len--) {
- if ((*buf++ = (char)*str++) == BG_EOS)
- return (0);
- }
- return (1);
+ while (len--) {
+ if ((*buf++ = (char)*str++) == BG_EOS)
+ return (0);
+ }
+ return (1);
}
#ifdef GLOB_DEBUG
static void
qprintf(const char *str, Char *s)
{
- Char *p;
-
- (void)printf("%s:\n", str);
- for (p = s; *p; p++)
- (void)printf("%c", CHAR(*p));
- (void)printf("\n");
- for (p = s; *p; p++)
- (void)printf("%c", *p & M_PROTECT ? '"' : ' ');
- (void)printf("\n");
- for (p = s; *p; p++)
- (void)printf("%c", ismeta(*p) ? '_' : ' ');
- (void)printf("\n");
+ Char *p;
+
+ (void)printf("%s:\n", str);
+ for (p = s; *p; p++)
+ (void)printf("%c", CHAR(*p));
+ (void)printf("\n");
+ for (p = s; *p; p++)
+ (void)printf("%c", *p & M_PROTECT ? '"' : ' ');
+ (void)printf("\n");
+ for (p = s; *p; p++)
+ (void)printf("%c", ismeta(*p) ? '_' : ' ');
+ (void)printf("\n");
}
#endif /* GLOB_DEBUG */
diff --git a/ext/File-Glob/bsd_glob.h b/ext/File-Glob/bsd_glob.h
index c913cff9d8..424591c925 100644
--- a/ext/File-Glob/bsd_glob.h
+++ b/ext/File-Glob/bsd_glob.h
@@ -39,24 +39,24 @@
/* #include <sys/cdefs.h> */
typedef struct {
- int gl_pathc; /* Count of total paths so far. */
- int gl_matchc; /* Count of paths matching pattern. */
- int gl_offs; /* Reserved at beginning of gl_pathv. */
- int gl_flags; /* Copy of flags parameter to glob. */
- char **gl_pathv; /* List of paths matching pattern. */
- /* Copy of errfunc parameter to glob. */
- int (*gl_errfunc)(const char *, int);
+ int gl_pathc; /* Count of total paths so far. */
+ int gl_matchc; /* Count of paths matching pattern. */
+ int gl_offs; /* Reserved at beginning of gl_pathv. */
+ int gl_flags; /* Copy of flags parameter to glob. */
+ char **gl_pathv; /* List of paths matching pattern. */
+ /* Copy of errfunc parameter to glob. */
+ int (*gl_errfunc)(const char *, int);
- /*
- * Alternate filesystem access methods for glob; replacement
- * versions of closedir(3), readdir(3), opendir(3), stat(2)
- * and lstat(2).
- */
- void (*gl_closedir)(void *);
- Direntry_t *(*gl_readdir)(void *);
- void *(*gl_opendir)(const char *);
- int (*gl_lstat)(const char *, Stat_t *);
- int (*gl_stat)(const char *, Stat_t *);
+ /*
+ * Alternate filesystem access methods for glob; replacement
+ * versions of closedir(3), readdir(3), opendir(3), stat(2)
+ * and lstat(2).
+ */
+ void (*gl_closedir)(void *);
+ Direntry_t *(*gl_readdir)(void *);
+ void *(*gl_opendir)(const char *);
+ int (*gl_lstat)(const char *, Stat_t *);
+ int (*gl_stat)(const char *, Stat_t *);
} glob_t;
#define GLOB_APPEND 0x0001 /* Append to output from previous call. */
@@ -75,7 +75,7 @@ typedef struct {
#define GLOB_NOCASE 0x1000 /* Treat filenames without regard for case. */
#define GLOB_ALPHASORT 0x2000 /* Alphabetic, not ASCII sort, like csh. */
#define GLOB_LIMIT 0x4000 /* Limit pattern match output to ARG_MAX
- (usually from limits.h). */
+ (usually from limits.h). */
#define GLOB_NOSPACE (-1) /* Malloc call failed. */
#define GLOB_ABEND (-2) /* Unignored error. */