mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-27 01:27:58 +00:00
Updated from libc
This commit is contained in:
parent
db5cc03f75
commit
ffea662953
2 changed files with 30 additions and 20 deletions
|
@ -1,3 +1,14 @@
|
|||
Fri Dec 8 13:04:51 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
|
||||
|
||||
* posix/glob.c: Implement new options GLOB_ALTDIRFUNC, GLOB_BRACE,
|
||||
GLOB_TILDE, GLOB_NOMAGIC.
|
||||
(glob): Use stat instead of lstat to determine directoriness.
|
||||
* posix/glob.h (GLOB_ALTDIRFUNC, GLOB_BRACE, GLOB_NOMAGIC, GLOB_TILDE):
|
||||
New flag bits.
|
||||
(__GLOB_FLAGS): Include them.
|
||||
(glob_t): New members gl_closedir, gl_readdir, gl_opendir, gl_lstat,
|
||||
gl_stat.
|
||||
|
||||
Mon Sep 11 14:00:14 1995 Roland McGrath <roland@whiz-bang.gnu.ai.mit.edu>
|
||||
|
||||
* posix/glob.c (glob): Comment fix.
|
||||
|
|
39
glob/glob.c
39
glob/glob.c
|
@ -184,10 +184,7 @@ extern char *alloca ();
|
|||
#endif
|
||||
|
||||
#ifndef __GNU_LIBRARY__
|
||||
#define __lstat lstat
|
||||
#ifndef HAVE_LSTAT
|
||||
#define lstat stat
|
||||
#endif
|
||||
#define __stat stat
|
||||
#ifdef STAT_MACROS_BROKEN
|
||||
#undef S_ISDIR
|
||||
#endif
|
||||
|
@ -346,16 +343,6 @@ glob (pattern, flags, errfunc, pglob)
|
|||
|
||||
oldcount = pglob->gl_pathc;
|
||||
|
||||
pglob->gl_flags = flags;
|
||||
if (!(flags & GLOB_ALTDIRFUNC))
|
||||
{
|
||||
pglob->gl_closedir = (void (*) __P ((void *))) &closedir;
|
||||
pglob->gl_readdir = (struct dirent *(*) __P ((void *))) &readdir;
|
||||
pglob->gl_opendir = (__ptr_t (*) __P ((const char *))) &opendir;
|
||||
pglob->gl_lstat = &lstat;
|
||||
pglob->gl_stat = &stat;
|
||||
}
|
||||
|
||||
if ((flags & GLOB_TILDE) && dirname[0] == '~')
|
||||
{
|
||||
if (dirname[1] == '\0')
|
||||
|
@ -508,7 +495,8 @@ glob (pattern, flags, errfunc, pglob)
|
|||
int i;
|
||||
struct stat st;
|
||||
for (i = oldcount; i < pglob->gl_pathc; ++i)
|
||||
if (__lstat (pglob->gl_pathv[i], &st) == 0 &&
|
||||
if (((flags & GLOB_ALTDIRFUNC) ?
|
||||
*pglob->gl_stat : __stat) (pglob->gl_pathv[i], &st) == 0 &&
|
||||
S_ISDIR (st.st_mode))
|
||||
{
|
||||
size_t len = strlen (pglob->gl_pathv[i]) + 2;
|
||||
|
@ -675,7 +663,9 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
|
|||
{
|
||||
flags |= GLOB_MAGCHAR;
|
||||
|
||||
stream = (*pglob->gl_opendir) (directory);
|
||||
stream = ((flags & GLOB_ALTDIRFUNC) ?
|
||||
(*pglob->gl_opendir) (directory) :
|
||||
opendir (directory));
|
||||
if (stream == NULL)
|
||||
{
|
||||
if ((errfunc != NULL && (*errfunc) (directory, errno)) ||
|
||||
|
@ -687,7 +677,9 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
|
|||
{
|
||||
const char *name;
|
||||
size_t len;
|
||||
struct dirent *d = (*pglob->gl_readdir) (stream);
|
||||
struct dirent *d = ((flags & GLOB_ALTDIRFUNC) ?
|
||||
(*pglob->gl_readdir) (stream) :
|
||||
readdir (stream));
|
||||
if (d == NULL)
|
||||
break;
|
||||
if (! REAL_DIR_ENTRY (d))
|
||||
|
@ -759,7 +751,10 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
|
|||
if (stream != NULL)
|
||||
{
|
||||
int save = errno;
|
||||
(*pglob->gl_closedir) (stream);
|
||||
if (flags & GLOB_ALTDIRFUNC)
|
||||
(*pglob->gl_closedir) (stream);
|
||||
else
|
||||
closedir (stream);
|
||||
errno = save;
|
||||
}
|
||||
return nfound == 0 ? GLOB_NOMATCH : 0;
|
||||
|
@ -767,7 +762,10 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
|
|||
memory_error:
|
||||
{
|
||||
int save = errno;
|
||||
(*pglob->gl_closedir) (stream);
|
||||
if (flags & GLOB_ALTDIRFUNC)
|
||||
(*pglob->gl_closedir) (stream);
|
||||
else
|
||||
closedir (stream);
|
||||
errno = save;
|
||||
}
|
||||
while (names != NULL)
|
||||
|
@ -779,4 +777,5 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
|
|||
return GLOB_NOSPACE;
|
||||
}
|
||||
|
||||
#endif /* _LIBC or not __GNU_LIBRARY__. */
|
||||
#endif /* Not ELIDE_CODE. */
|
||||
|
||||
|
|
Loading…
Reference in a new issue