From c39976972e4d882f00fc0c4cbd7d25964a1f79f1 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Fri, 16 Dec 2005 00:57:39 +0000 Subject: glob/ftw/regex_old reworked. regex_old did not have MBS_SUPPORT enabled --- libc/misc/ftw/ftw.c | 18 +++++++++++++----- libc/misc/glob/glob.c | 46 ++++++++++++++++++++++++++++----------------- libc/misc/glob/glob64.c | 10 ++++++++++ libc/misc/regex/regex_old.c | 38 ++++++++++++++++++++++--------------- 4 files changed, 75 insertions(+), 37 deletions(-) diff --git a/libc/misc/ftw/ftw.c b/libc/misc/ftw/ftw.c index 4bd186561..8a6db98d3 100644 --- a/libc/misc/ftw/ftw.c +++ b/libc/misc/ftw/ftw.c @@ -36,7 +36,6 @@ #define _GNU_SOURCE #include - #if defined (__UCLIBC_HAS_LFS__) && defined L_ftw64 #ifndef L_ftw #define L_ftw @@ -59,17 +58,20 @@ #define NFTW_NAME nftw64 #define INO_T ino64_t #define STAT stat64 -#define LSTAT lstat64 -#define XSTAT stat64 +#define LSTAT __lstat64 +#define XSTAT __stat64 #define FTW_FUNC_T __ftw64_func_t #define NFTW_FUNC_T __nftw64_func_t +#define __readdir __readdir64 #else +#undef __stat +#undef __lstat #define FTW_NAME ftw #define NFTW_NAME nftw #define INO_T ino_t #define STAT stat -#define LSTAT lstat -#define XSTAT stat +#define LSTAT __lstat +#define XSTAT __stat #define FTW_FUNC_T __ftw_func_t #define NFTW_FUNC_T __nftw_func_t #endif @@ -89,6 +91,12 @@ #include #include +#if 1 /*ndef L_ftw64*/ +extern struct dirent *__readdir (DIR *__dirp) __nonnull ((1)) attribute_hidden; +#else +extern struct dirent64 *__readdir64 (DIR *__dirp) __nonnull ((1)) attribute_hidden; +#endif + /* We define PATH_MAX if the system does not provide a definition. This does not artificially limit any operation. PATH_MAX is simply used as a guesstimate for the expected maximal path length. diff --git a/libc/misc/glob/glob.c b/libc/misc/glob/glob.c index aa90ae418..6c1e0351b 100644 --- a/libc/misc/glob/glob.c +++ b/libc/misc/glob/glob.c @@ -50,11 +50,16 @@ static int prefix_array __P ((const char *prefix, char **array, size_t n, static int collated_compare __P ((const __ptr_t, const __ptr_t)); #ifdef __GLOB64 -extern int glob_pattern_p(const char *pattern, int quote); +extern int __glob_pattern_p(const char *pattern, int quote) attribute_hidden; #else +extern struct dirent *__readdir (DIR *__dirp) __nonnull ((1)) attribute_hidden; +extern int __glob (__const char *__restrict __pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob_t *__restrict __pglob) __THROW attribute_hidden; +extern void __globfree (glob_t *__pglob) __THROW attribute_hidden; /* Return nonzero if PATTERN contains any metacharacters. Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ -int glob_pattern_p(const char *pattern, int quote) +int attribute_hidden __glob_pattern_p(const char *pattern, int quote) { const char *p; int open = 0; @@ -83,6 +88,7 @@ int glob_pattern_p(const char *pattern, int quote) return 0; } +strong_alias(__glob_pattern_p,glob_pattern_p) #endif @@ -94,8 +100,8 @@ int glob_pattern_p(const char *pattern, int quote) `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. */ -int -glob (pattern, flags, errfunc, pglob) +int attribute_hidden +__glob (pattern, flags, errfunc, pglob) const char *pattern; int flags; int (*errfunc) __P ((const char *, int)); @@ -140,7 +146,7 @@ glob (pattern, flags, errfunc, pglob) if (filename[0] == '\0' && dirlen > 1) /* "pattern/". Expand "pattern", appending slashes. */ { - int val = glob (dirname, flags | GLOB_MARK, errfunc, pglob); + int val = __glob (dirname, flags | GLOB_MARK, errfunc, pglob); if (val == 0) pglob->gl_flags = (pglob->gl_flags & ~GLOB_MARK) | (flags & GLOB_MARK); return val; @@ -154,7 +160,7 @@ glob (pattern, flags, errfunc, pglob) oldcount = pglob->gl_pathc; - if (glob_pattern_p (dirname, !(flags & GLOB_NOESCAPE))) + if (__glob_pattern_p (dirname, !(flags & GLOB_NOESCAPE))) { /* The directory name contains metacharacters, so we have to glob for the directory, and then glob for @@ -162,7 +168,7 @@ glob (pattern, flags, errfunc, pglob) glob_t dirs; register int i; - status = glob (dirname, + status = __glob (dirname, ((flags & (GLOB_ERR | GLOB_NOCHECK | GLOB_NOESCAPE)) | GLOB_NOSORT), errfunc, &dirs); @@ -183,8 +189,8 @@ glob (pattern, flags, errfunc, pglob) if (interrupt_state) { - globfree (&dirs); - globfree (&files); + __globfree (&dirs); + __globfree (&files); return GLOB_ABEND; } } @@ -200,8 +206,8 @@ glob (pattern, flags, errfunc, pglob) if (status != 0) { - globfree (&dirs); - globfree (pglob); + __globfree (&dirs); + __globfree (pglob); return status; } @@ -211,8 +217,8 @@ glob (pattern, flags, errfunc, pglob) pglob->gl_pathc - oldcount, flags & GLOB_MARK)) { - globfree (&dirs); - globfree (pglob); + __globfree (&dirs); + __globfree (pglob); return GLOB_NOSPACE; } } @@ -271,7 +277,7 @@ glob (pattern, flags, errfunc, pglob) pglob->gl_pathc - oldcount, flags & GLOB_MARK)) { - globfree (pglob); + __globfree (pglob); return GLOB_NOSPACE; } } @@ -297,11 +303,16 @@ glob (pattern, flags, errfunc, pglob) return 0; } +#ifdef __GLOB64 +strong_alias(__glob64,glob64) +#else +strong_alias(__glob,glob) +#endif /* Free storage allocated in PGLOB by a previous `glob' call. */ -void -globfree (pglob) +void attribute_hidden +__globfree (pglob) register glob_t *pglob; { if (pglob->gl_pathv != NULL) @@ -313,6 +324,7 @@ globfree (pglob) free ((__ptr_t) pglob->gl_pathv); } } +strong_alias(__globfree,globfree) /* Do a collated comparison of A and B. */ @@ -409,7 +421,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) return GLOB_ABORTED; } - meta = glob_pattern_p (pattern, !(flags & GLOB_NOESCAPE)); + meta = __glob_pattern_p (pattern, !(flags & GLOB_NOESCAPE)); if (meta) flags |= GLOB_MAGCHAR; diff --git a/libc/misc/glob/glob64.c b/libc/misc/glob/glob64.c index 17e6838aa..f0c65abe0 100644 --- a/libc/misc/glob/glob64.c +++ b/libc/misc/glob/glob64.c @@ -18,12 +18,22 @@ #include #include +extern struct dirent64 *__readdir64 (DIR *__dirp) __nonnull ((1)) attribute_hidden; +extern int __glob64 (__const char *__restrict __pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob64_t *__restrict __pglob) __THROW attribute_hidden; +extern void __globfree (glob_t *__pglob) __THROW attribute_hidden; +extern void __globfree64 (glob64_t *__pglob) __THROW attribute_hidden; + #define dirent dirent64 #define __readdir(dirp) __readdir64(dirp) #define glob_t glob64_t +#define __glob(pattern, flags, errfunc, pglob) \ + __glob64 (pattern, flags, errfunc, pglob) #define glob(pattern, flags, errfunc, pglob) \ glob64 (pattern, flags, errfunc, pglob) +#define __globfree(pglob) __globfree64 (pglob) #define globfree(pglob) globfree64 (pglob) #undef stat diff --git a/libc/misc/regex/regex_old.c b/libc/misc/regex/regex_old.c index 6bb319acd..b995cabfa 100644 --- a/libc/misc/regex/regex_old.c +++ b/libc/misc/regex/regex_old.c @@ -35,12 +35,15 @@ #define iswctype __iswctype #define iswalnum __iswalnum #define printf __printf +#define btowc __btowc /* To exclude some unwanted junk.... */ -#undef _LIBC #undef emacs #define _REGEX_RE_COMP #include +#ifdef __UCLIBC__ +# undef _LIBC +#endif #include #include #define STDC_HEADERS @@ -88,7 +91,7 @@ extern void *__mempcpy (void *__restrict __dest, # include # endif -# ifdef _LIBC +# if defined _LIBC || defined __UCLIBC__ /* We have to keep the namespace clean. */ # define regfree(preg) __regfree (preg) # define regexec(pr, st, nm, pm, ef) __regexec (pr, st, nm, pm, ef) @@ -113,11 +116,13 @@ extern void *__mempcpy (void *__restrict __dest, # define btowc __btowc /* We are also using some library internals. */ +# ifndef __UCLIBC__ # include # include # include # include # endif +# endif /* This is for other GNU distributions with internationalized messages. */ # if HAVE_LIBINTL_H || defined _LIBC @@ -217,6 +222,9 @@ char *realloc (); # endif /* Get the interface, including the syntax bits. */ +# ifdef __UCLIBC__ +# include "_regex.h" +# endif # include /* isalpha etc. are used for the character classes. */ @@ -1380,7 +1388,7 @@ re_set_syntax (syntax) # endif /* DEBUG */ return ret; } -# ifdef _LIBC +# if defined _LIBC || defined __UCLIBC__ weak_alias (__re_set_syntax, re_set_syntax) # endif @@ -5000,7 +5008,7 @@ re_compile_fastmap (bufp) # endif return byte_re_compile_fastmap(bufp); } /* re_compile_fastmap */ -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__re_compile_fastmap, re_compile_fastmap) #endif @@ -5039,7 +5047,7 @@ re_set_registers (bufp, regs, num_regs, starts, ends) regs->start = regs->end = (regoff_t *) 0; } } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__re_set_registers, re_set_registers) #endif @@ -5058,7 +5066,7 @@ re_search (bufp, string, size, startpos, range, regs) return re_search_2 (bufp, NULL, 0, string, size, startpos, range, regs, size); } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__re_search, re_search) #endif @@ -5103,7 +5111,7 @@ re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop) return byte_re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop); } /* re_search_2 */ -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__re_search_2, re_search_2) #endif @@ -5562,7 +5570,7 @@ re_match (bufp, string, size, pos, regs) # endif return result; } -# ifdef _LIBC +# if defined _LIBC || defined __UCLIBC__ weak_alias (__re_match, re_match) # endif #endif /* not emacs */ @@ -5623,7 +5631,7 @@ re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop) #endif return result; } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__re_match_2, re_match_2) #endif @@ -7962,7 +7970,7 @@ re_compile_pattern (pattern, length, bufp) return NULL; return gettext (re_error_msgid + re_error_msgid_idx[(int) ret]); } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__re_compile_pattern, re_compile_pattern) #endif @@ -8029,7 +8037,7 @@ re_comp (s) int -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_function #endif re_exec (s) @@ -8158,7 +8166,7 @@ regcomp (preg, pattern, cflags) return (int) ret; } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__regcomp, regcomp) #endif @@ -8236,7 +8244,7 @@ regexec (preg, string, nmatch, pmatch, eflags) /* We want zero return to mean success, unlike `re_search'. */ return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH; } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__regexec, regexec) #endif @@ -8284,7 +8292,7 @@ regerror (errcode, preg, errbuf, errbuf_size) return msg_size; } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__regerror, regerror) #endif @@ -8311,7 +8319,7 @@ regfree (preg) free (preg->translate); preg->translate = NULL; } -#ifdef _LIBC +#if defined _LIBC || defined __UCLIBC__ weak_alias (__regfree, regfree) #endif -- cgit v1.2.3