mirror of
https://github.com/mirror/make.git
synced 2025-01-16 15:20:39 +08:00
glob: Do not assume glibc glob internals.
It has been proposed that glibc glob start using gl_lstat, which the API allows it to do. GNU 'make' should not get in the way of this. See: https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html * dir.c (local_lstat): New function, like local_stat. (dir_setup_glob): Use it to initialize gl_lstat too, as the API requires.
This commit is contained in:
parent
d8728efc80
commit
193f1e81ed
29
dir.c
29
dir.c
@ -1299,15 +1299,40 @@ local_stat (const char *path, struct stat *buf)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Similarly for lstat. */
|
||||||
|
#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS)
|
||||||
|
# ifndef VMS
|
||||||
|
# ifndef HAVE_SYS_STAT_H
|
||||||
|
int lstat (const char *path, struct stat *sbuf);
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
/* We are done with the fake lstat. Go back to the real lstat */
|
||||||
|
# ifdef lstat
|
||||||
|
# undef lstat
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# define local_lstat lstat
|
||||||
|
#elif defined(WINDOWS32)
|
||||||
|
/* Windows doesn't support lstat(). */
|
||||||
|
# define local_lstat local_stat
|
||||||
|
#else
|
||||||
|
static int
|
||||||
|
local_lstat (const char *path, struct stat *buf)
|
||||||
|
{
|
||||||
|
int e;
|
||||||
|
EINTRLOOP (e, lstat (path, buf));
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
dir_setup_glob (glob_t *gl)
|
dir_setup_glob (glob_t *gl)
|
||||||
{
|
{
|
||||||
gl->gl_opendir = open_dirstream;
|
gl->gl_opendir = open_dirstream;
|
||||||
gl->gl_readdir = read_dirstream;
|
gl->gl_readdir = read_dirstream;
|
||||||
gl->gl_closedir = free;
|
gl->gl_closedir = free;
|
||||||
|
gl->gl_lstat = local_lstat;
|
||||||
gl->gl_stat = local_stat;
|
gl->gl_stat = local_stat;
|
||||||
/* We don't bother setting gl_lstat, since glob never calls it.
|
|
||||||
The slot is only there for compatibility with 4.4 BSD. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user