|
@@ -31,22 +31,51 @@
|
|
|
#include <fnmatch.h>
|
|
|
#include <glob.h>
|
|
|
|
|
|
-libc_hidden_proto(memcpy)
|
|
|
-libc_hidden_proto(strcat)
|
|
|
-libc_hidden_proto(strcmp)
|
|
|
-libc_hidden_proto(strlen)
|
|
|
-libc_hidden_proto(strrchr)
|
|
|
-libc_hidden_proto(strcoll)
|
|
|
-libc_hidden_proto(opendir)
|
|
|
libc_hidden_proto(closedir)
|
|
|
libc_hidden_proto(fnmatch)
|
|
|
+libc_hidden_proto(free)
|
|
|
+libc_hidden_proto(malloc)
|
|
|
+libc_hidden_proto(memcpy)
|
|
|
+libc_hidden_proto(mempcpy)
|
|
|
+libc_hidden_proto(opendir)
|
|
|
libc_hidden_proto(qsort)
|
|
|
+libc_hidden_proto(readdir)
|
|
|
+libc_hidden_proto(readdir64)
|
|
|
+libc_hidden_proto(realloc)
|
|
|
+libc_hidden_proto(stat)
|
|
|
+libc_hidden_proto(stat64)
|
|
|
+libc_hidden_proto(strchr)
|
|
|
+libc_hidden_proto(strcoll)
|
|
|
+libc_hidden_proto(strcpy)
|
|
|
+libc_hidden_proto(strdup)
|
|
|
+libc_hidden_proto(strlen)
|
|
|
+libc_hidden_proto(strrchr)
|
|
|
+
|
|
|
|
|
|
#ifdef ENABLE_GLOB_TILDE_EXPANSION
|
|
|
#include <pwd.h>
|
|
|
libc_hidden_proto(getpwnam_r)
|
|
|
#endif
|
|
|
|
|
|
+#ifdef COMPILE_GLOB64
|
|
|
+#undef stat
|
|
|
+#define stat stat64
|
|
|
+#define struct_stat64 struct stat64
|
|
|
+#define __stat64(fname, buf) stat64 (fname, buf)
|
|
|
+#define dirent dirent64
|
|
|
+#define __readdir readdir64
|
|
|
+#define __readdir64 readdir64
|
|
|
+#define glob_t glob64_t
|
|
|
+#define glob(pattern, flags, errfunc, pglob) glob64 (pattern, flags, errfunc, pglob)
|
|
|
+#define globfree(pglob) globfree64 (pglob)
|
|
|
+#else
|
|
|
+#define __readdir readdir
|
|
|
+#define __readdir64 readdir64
|
|
|
+#define struct_stat64 struct stat
|
|
|
+#define __stat64(fname, buf) stat (fname, buf)
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
|
|
|
if the `d_type' member for `struct dirent' is available.
|
|
|
HAVE_STRUCT_DIRENT_D_TYPE plays the same role in GNULIB. */
|
|
@@ -99,29 +128,16 @@ extern __ptr_t (*__glob_opendir_hook) (const char *directory) attribute_hidden;
|
|
|
extern void (*__glob_closedir_hook) (__ptr_t stream) attribute_hidden;
|
|
|
extern const char *(*__glob_readdir_hook) (__ptr_t stream) attribute_hidden;
|
|
|
|
|
|
-extern int __collated_compare (const void *a, const void *b) attribute_hidden;
|
|
|
-extern int __prefix_array (const char *dirname, char **array, size_t n) attribute_hidden;
|
|
|
+extern int collated_compare (const void *a, const void *b) attribute_hidden;
|
|
|
+extern int prefix_array (const char *dirname, char **array, size_t n) attribute_hidden;
|
|
|
#if defined ENABLE_GLOB_BRACE_EXPANSION
|
|
|
extern const char *__next_brace_sub (const char *cp, int flags) attribute_hidden;
|
|
|
#endif
|
|
|
|
|
|
libc_hidden_proto(glob_pattern_p)
|
|
|
-#ifdef COMPILE_GLOB64
|
|
|
-libc_hidden_proto(glob64)
|
|
|
-libc_hidden_proto(globfree64)
|
|
|
-libc_hidden_proto(readdir64)
|
|
|
-#define __readdir readdir64
|
|
|
-#define __readdir64 readdir64
|
|
|
-#define struct_stat64 struct stat64
|
|
|
-#define __stat64(fname, buf) stat64 (fname, buf)
|
|
|
-#else
|
|
|
-libc_hidden_proto(glob)
|
|
|
-libc_hidden_proto(globfree)
|
|
|
-#define __readdir readdir
|
|
|
-#define __readdir64 readdir64
|
|
|
-#define struct_stat64 struct stat
|
|
|
-#define __stat64(fname, buf) stat (fname, buf)
|
|
|
-libc_hidden_proto(readdir)
|
|
|
+libc_hidden_proto(collated_compare)
|
|
|
+libc_hidden_proto(prefix_array)
|
|
|
+#ifndef COMPILE_GLOB64
|
|
|
|
|
|
Metacharacters can be quoted with backslashes if QUOTE is nonzero. */
|
|
|
int glob_pattern_p(const char *pattern, int quote)
|
|
@@ -157,7 +173,7 @@ libc_hidden_def(glob_pattern_p)
|
|
|
|
|
|
|
|
|
|
|
|
-int __collated_compare (const void *a, const void *b)
|
|
|
+int collated_compare (const void *a, const void *b)
|
|
|
{
|
|
|
const char *const s1 = *(const char *const * const) a;
|
|
|
const char *const s2 = *(const char *const * const) b;
|
|
@@ -178,7 +194,7 @@ int __collated_compare (const void *a, const void *b)
|
|
|
unless DIRNAME is just "/". Each old element of ARRAY is freed.
|
|
|
If ADD_SLASH is non-zero, allocate one character more than
|
|
|
necessary, so that a slash can be appended later. */
|
|
|
-int __prefix_array (const char *dirname, char **array, size_t n)
|
|
|
+int prefix_array (const char *dirname, char **array, size_t n)
|
|
|
{
|
|
|
register size_t i;
|
|
|
size_t dirlen = strlen (dirname);
|
|
@@ -477,6 +493,13 @@ static int glob_in_dir (const char *pattern, const char *directory, int flags,
|
|
|
return GLOB_NOSPACE;
|
|
|
}
|
|
|
|
|
|
+#ifdef COMPILE_GLOB64
|
|
|
+libc_hidden_proto(glob64)
|
|
|
+libc_hidden_proto(globfree64)
|
|
|
+#else
|
|
|
+libc_hidden_proto(glob)
|
|
|
+libc_hidden_proto(globfree)
|
|
|
+#endif
|
|
|
|
|
|
The bits defined above may be set in FLAGS.
|
|
|
If a directory cannot be opened or read and ERRFUNC is not nil,
|
|
@@ -930,7 +953,7 @@ glob (pattern, flags, errfunc, pglob)
|
|
|
}
|
|
|
|
|
|
|
|
|
- if (__prefix_array (dirs.gl_pathv[i],
|
|
|
+ if (prefix_array (dirs.gl_pathv[i],
|
|
|
&pglob->gl_pathv[old_pathc + pglob->gl_offs],
|
|
|
pglob->gl_pathc - old_pathc))
|
|
|
{
|
|
@@ -999,7 +1022,7 @@ glob (pattern, flags, errfunc, pglob)
|
|
|
if (dirlen > 0)
|
|
|
{
|
|
|
|
|
|
- if (__prefix_array (dirname,
|
|
|
+ if (prefix_array (dirname,
|
|
|
&pglob->gl_pathv[old_pathc + pglob->gl_offs],
|
|
|
pglob->gl_pathc - old_pathc))
|
|
|
{
|
|
@@ -1042,7 +1065,7 @@ glob (pattern, flags, errfunc, pglob)
|
|
|
|
|
|
qsort (&pglob->gl_pathv[oldcount],
|
|
|
pglob->gl_pathc + pglob->gl_offs - oldcount,
|
|
|
- sizeof (char *), __collated_compare);
|
|
|
+ sizeof (char *), collated_compare);
|
|
|
}
|
|
|
|
|
|
return 0;
|