diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | posix/glob.h | 12 | ||||
-rw-r--r-- | sysdeps/generic/glob.c | 2 |
3 files changed, 19 insertions, 7 deletions
@@ -1,3 +1,15 @@ +1999-09-11 Paul Eggert <eggert@twinsun.com> + + * posix/glob.h (glob): If #defining to glob64, do this before + declaring it, so that all declarations and uses match, and do not + declare glob64, to avoid a declaration clash. + (globfree): Likewise with globfree64. + +1999-09-08 Eli Zaretskii <eliz@is.elta.co.il> + + * sysdeps/generic/glob.c (prefix_array) [__MSDOS__,WINDOWS32]: + Keep the trailing slash unless DIRNAME is just "x:/". + 1999-10-11 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/bits/siginfo.h (SI_KERNEL): Added. diff --git a/posix/glob.h b/posix/glob.h index 6a3ab1817f..d92026f794 100644 --- a/posix/glob.h +++ b/posix/glob.h @@ -140,6 +140,11 @@ typedef struct } glob64_t; #endif +#if _FILE_OFFSET_BITS == 64 && __GNUC__ < 2 +# define glob glob64 +# define globfree globfree64 +#endif + /* Do glob searching for PATTERN, placing results in PGLOB. The bits defined above may be set in FLAGS. If a directory cannot be opened or read and ERRFUNC is not nil, @@ -148,7 +153,7 @@ typedef struct `glob' returns GLOB_ABEND; if it returns zero, the error is ignored. If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ -#if _FILE_OFFSET_BITS != 64 +#if _FILE_OFFSET_BITS != 64 || __GNUC__ < 2 extern int glob __P ((__const char *__pattern, int __flags, int (*__errfunc) (__const char *, int), glob_t *__pglob)); @@ -156,16 +161,11 @@ extern int glob __P ((__const char *__pattern, int __flags, /* Free storage allocated in PGLOB by a previous `glob' call. */ extern void globfree __P ((glob_t *__pglob)); #else -# if __GNUC__ >= 2 extern int glob __P ((__const char *__pattern, int __flags, int (*__errfunc) (__const char *, int), glob_t *__pglob)) __asm__ ("glob64"); extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); -# else -# define glob glob64 -# define globfree globfree64 -# endif #endif #ifdef _LARGEFILE64_SOURCE diff --git a/sysdeps/generic/glob.c b/sysdeps/generic/glob.c index 1ab5d8b629..65055fb7f8 100644 --- a/sysdeps/generic/glob.c +++ b/sysdeps/generic/glob.c @@ -1105,7 +1105,7 @@ prefix_array (dirname, array, n) #if defined __MSDOS__ || defined WINDOWS32 else if (dirlen > 1) { - if (dirname[dirlen - 1] == '/') + if (dirname[dirlen - 1] == '/' && dirname[dirlen - 2] == ':') /* DIRNAME is "d:/". Don't prepend the slash from DIRNAME. */ --dirlen; else if (dirname[dirlen - 1] == ':') |