|
@@ -25,10 +25,10 @@ Cambridge, MA 02139, USA. */
|
|
|
#include <dirent.h>
|
|
|
#include <malloc.h>
|
|
|
#include <fnmatch.h>
|
|
|
+#define _GNU_SOURCE
|
|
|
#include <glob.h>
|
|
|
|
|
|
extern __ptr_t (*__glob_opendir_hook) __P ((const char *directory));
|
|
|
-extern int glob_pattern_p __P ((__const char *__pattern, int __quote));
|
|
|
extern void (*__glob_closedir_hook) __P ((__ptr_t stream));
|
|
|
extern const char *(*__glob_readdir_hook) __P ((__ptr_t stream));
|
|
|
|
|
@@ -41,6 +41,43 @@ static int prefix_array __P ((const char *prefix, char **array, size_t n,
|
|
|
int add_slash));
|
|
|
static int collated_compare __P ((const __ptr_t, const __ptr_t));
|
|
|
|
|
|
+#ifdef __GLOB64
|
|
|
+extern int glob_pattern_p(const char *pattern, int quote);
|
|
|
+#else
|
|
|
+
|
|
|
+ Metacharacters can be quoted with backslashes if QUOTE is nonzero. */
|
|
|
+int glob_pattern_p(const char *pattern, int quote)
|
|
|
+{
|
|
|
+ const char *p;
|
|
|
+ int open = 0;
|
|
|
+
|
|
|
+ for (p = pattern; *p != '\0'; ++p)
|
|
|
+ switch (*p)
|
|
|
+ {
|
|
|
+ case '?':
|
|
|
+ case '*':
|
|
|
+ return 1;
|
|
|
+
|
|
|
+ case '\\':
|
|
|
+ if (quote)
|
|
|
+ ++p;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case '[':
|
|
|
+ open = 1;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case ']':
|
|
|
+ if (open)
|
|
|
+ return 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
+
|
|
|
|
|
|
The bits defined above may be set in FLAGS.
|
|
|
If a directory cannot be opened or read and ERRFUNC is not nil,
|
|
@@ -332,39 +369,6 @@ prefix_array (dirname, array, n, add_slash)
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
- Metacharacters can be quoted with backslashes if QUOTE is nonzero. */
|
|
|
-int glob_pattern_p(const char *pattern, int quote)
|
|
|
-{
|
|
|
- register const char *p;
|
|
|
- int open = 0;
|
|
|
-
|
|
|
- for (p = pattern; *p != '\0'; ++p)
|
|
|
- switch (*p)
|
|
|
- {
|
|
|
- case '?':
|
|
|
- case '*':
|
|
|
- return 1;
|
|
|
-
|
|
|
- case '\\':
|
|
|
- if (quote)
|
|
|
- ++p;
|
|
|
- break;
|
|
|
-
|
|
|
- case '[':
|
|
|
- open = 1;
|
|
|
- break;
|
|
|
-
|
|
|
- case ']':
|
|
|
- if (open)
|
|
|
- return 1;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
|
|
|
and matches are searched for in DIRECTORY.
|
|
|
The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done.
|