aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--posix/glob.h12
-rw-r--r--sysdeps/generic/glob.c2
3 files changed, 19 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index d2a51436e1..32b645b54e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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] == ':')