summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/errno.h9
-rw-r--r--include/features.h41
-rw-r--r--include/inttypes.h139
-rw-r--r--include/stdio.h21
-rw-r--r--include/stdlib.h224
-rw-r--r--include/string.h44
-rw-r--r--include/sys/sysmacros.h12
-rw-r--r--include/unistd.h22
-rw-r--r--include/wchar.h98
-rw-r--r--libc/sysdeps/linux/arm/bits/string.h31
-rw-r--r--libc/sysdeps/linux/common/bits/string.h12
-rw-r--r--libc/sysdeps/linux/common/bits/string2.h1265
-rw-r--r--libc/sysdeps/linux/i386/bits/string.h904
-rw-r--r--libc/sysdeps/linux/sparc/bits/string.h26
-rw-r--r--libpthread/linuxthreads/testrtsig.h40
15 files changed, 22 insertions, 2866 deletions
diff --git a/include/errno.h b/include/errno.h
index dfcab4789..8c7f666fe 100644
--- a/include/errno.h
+++ b/include/errno.h
@@ -47,15 +47,6 @@ __BEGIN_DECLS
extern int errno;
#endif
-#if 0
-#ifdef __USE_GNU
-
-/* The full and simple forms of the name with which the program was
- invoked. These variables are set up automatically at startup based on
- the value of ARGV[0] (this works only if you use GNU ld). */
-extern char *program_invocation_name, *program_invocation_short_name;
-#endif /* __USE_GNU */
-#endif
#endif /* _ERRNO_H */
__END_DECLS
diff --git a/include/features.h b/include/features.h
index 15da6886a..9f58132ba 100644
--- a/include/features.h
+++ b/include/features.h
@@ -256,16 +256,16 @@
* specific releases. */
#define __UCLIBC__ 1
-/* Major and minor version number of the uClibc library package are
- * can be used to test for features in specific uClibc releases.
- *
- * Now included from bits/uClibc_config.h */
-#if 0
-/* For uClibc release 0.9.12, these numbers would be: */
-#define __UCLIBC_MAJOR__ 0
-#define __UCLIBC_MINOR__ 9
-#define __UCLIBC_SUBLEVEL__ 12
-#endif
+/* Load up the current set of uClibc supported features along
+ * with the current uClibc major and minor version numbers.
+ * For uClibc release 0.9.26, these numbers would be:
+ * #define __UCLIBC_MAJOR__ 0
+ * #define __UCLIBC_MINOR__ 9
+ * #define __UCLIBC_SUBLEVEL__ 26
+ */
+#define __need_uClibc_config_h
+#include <bits/uClibc_config.h>
+#undef __need_uClibc_config_h
/* There is an unwholesomely huge amount of code out there that depends on the
* presence of GNU libc header files. We have GNU libc header files. So here
@@ -278,7 +278,7 @@
# define __GNU_LIBRARY__ 6
# define __GLIBC__ 2
# define __GLIBC_MINOR__ 2
-#endif
+#endif
/* Convenience macros to test the versions of glibc and gcc.
Use them like this:
@@ -318,25 +318,6 @@
# define __USE_EXTERN_INLINES 1
#endif
-/* This is here only because every header file already includes this one. */
-#if 0
-/*#ifndef _LIBC*/
-/* Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
- <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
- which will always return failure (and set errno to ENOSYS).
-
- We avoid including <gnu/stubs.h> when compiling the C library itself to
- avoid a dependency loop. stubs.h depends on every object file. If
- this #include were done for the library source code, then every object
- file would depend on stubs.h. */
-
-# include <gnu/stubs.h>
-#endif
-
-/* Load up the current set of uClibc supported features */
-#define __need_uClibc_config_h
-#include <bits/uClibc_config.h>
-#undef __need_uClibc_config_h
/* Make sure users large file options agree with uClibc's configuration. */
#ifndef __UCLIBC_HAS_LFS__
diff --git a/include/inttypes.h b/include/inttypes.h
index 18592e978..6e0210087 100644
--- a/include/inttypes.h
+++ b/include/inttypes.h
@@ -323,145 +323,6 @@ extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
__THROW;
#endif
-#if 0 /* disabled for uClibc */
-#ifdef __USE_EXTERN_INLINES
-
-# if __WORDSIZE == 64
-
-/* Like `strtol' but convert to `intmax_t'. */
-# ifndef __strtol_internal_defined
-extern long int __strtol_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __strtol_internal_defined 1
-# endif
-extern __inline intmax_t
-strtoimax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
-{
- return __strtol_internal (nptr, endptr, base, 0);
-}
-
-/* Like `strtoul' but convert to `uintmax_t'. */
-# ifndef __strtoul_internal_defined
-extern unsigned long int __strtoul_internal (__const char *
- __restrict __nptr,
- char ** __restrict __endptr,
- int __base, int __group) __THROW;
-# define __strtoul_internal_defined 1
-# endif
-extern __inline uintmax_t
-strtoumax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
-{
- return __strtoul_internal (nptr, endptr, base, 0);
-}
-
-/* Like `wcstol' but convert to `intmax_t'. */
-# ifndef __wcstol_internal_defined
-extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
- __gwchar_t **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __wcstol_internal_defined 1
-# endif
-extern __inline intmax_t
-wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
-{
- return __wcstol_internal (nptr, endptr, base, 0);
-}
-
-
-/* Like `wcstoul' but convert to `uintmax_t'. */
-# ifndef __wcstoul_internal_defined
-extern unsigned long int __wcstoul_internal (__const __gwchar_t *
- __restrict __nptr,
- __gwchar_t **
- __restrict __endptr,
- int __base, int __group) __THROW;
-# define __wcstoul_internal_defined 1
-# endif
-extern __inline uintmax_t
-wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
-{
- return __wcstoul_internal (nptr, endptr, base, 0);
-}
-
-# else /* __WORDSIZE == 32 */
-
-/* Like `strtol' but convert to `intmax_t'. */
-# ifndef __strtoll_internal_defined
-__extension__
-extern long long int __strtoll_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __strtoll_internal_defined 1
-# endif
-extern __inline intmax_t
-strtoimax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
-{
- return __strtoll_internal (nptr, endptr, base, 0);
-}
-
-/* Like `strtoul' but convert to `uintmax_t'. */
-# ifndef __strtoull_internal_defined
-__extension__
-extern unsigned long long int __strtoull_internal (__const char *
- __restrict __nptr,
- char **
- __restrict __endptr,
- int __base,
- int __group) __THROW;
-# define __strtoull_internal_defined 1
-# endif
-extern __inline uintmax_t
-strtoumax (__const char *__restrict nptr, char **__restrict endptr,
- int base) __THROW
-{
- return __strtoull_internal (nptr, endptr, base, 0);
-}
-
-/* Like `wcstol' but convert to `intmax_t'. */
-# ifndef __wcstoll_internal_defined
-__extension__
-extern long long int __wcstoll_internal (__const __gwchar_t *
- __restrict __nptr,
- __gwchar_t **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __wcstoll_internal_defined 1
-# endif
-extern __inline intmax_t
-wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
-{
- return __wcstoll_internal (nptr, endptr, base, 0);
-}
-
-
-/* Like `wcstoul' but convert to `uintmax_t'. */
-# ifndef __wcstoull_internal_defined
-__extension__
-extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
- __restrict __nptr,
- __gwchar_t **
- __restrict __endptr,
- int __base,
- int __group) __THROW;
-# define __wcstoull_internal_defined 1
-# endif
-extern __inline uintmax_t
-wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr,
- int base) __THROW
-{
- return __wcstoull_internal (nptr, endptr, base, 0);
-}
-# endif /* __WORDSIZE == 32 */
-#endif /* Use extern inlines. */
-#endif /* disabled for uClibc */
-
-
__END_DECLS
#endif /* inttypes.h */
diff --git a/include/stdio.h b/include/stdio.h
index 979e4eeb2..f9067084e 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -555,11 +555,6 @@ extern void perror (__const char *__s) __THROW;
extern int sys_nerr;
extern __const char *__const sys_errlist[];
#endif
-#if 0
-/* #ifdef __USE_GNU */
-extern int _sys_nerr;
-extern __const char *__const _sys_errlist[];
-#endif
#endif /* __UCLIBC_HAS_SYS_ERRLIST__ */
@@ -596,16 +591,17 @@ extern char *cuserid (char *__s) __THROW;
#endif /* Use X/Open, but not issue 6. */
-#if 0
-/* #ifdef __USE_GNU */
+#ifdef __USE_GNU
struct obstack; /* See <obstack.h>. */
/* Write formatted output to an obstack. */
extern int obstack_printf (struct obstack *__restrict __obstack,
- __const char *__restrict __format, ...) __THROW;
+ __const char *__restrict __format, ...)
+ __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
__const char *__restrict __format,
- __gnuc_va_list __args) __THROW;
+ _G_va_list __args)
+ __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
#endif /* Use GNU. */
@@ -632,11 +628,6 @@ extern void funlockfile (FILE *__stream) __THROW;
/* If we are compiling with optimizing read this file. It contains
several optimizing inline functions and macros. */
-#if 0
-/* #ifdef __USE_EXTERN_INLINES */
-# include <bits/stdio.h>
-#elif 1
-
#define fgetc(_fp) __FGETC(_fp)
#define fputc(_ch, _fp) __FPUTC(_ch, _fp)
@@ -664,8 +655,6 @@ extern void funlockfile (FILE *__stream) __THROW;
#define ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)
#endif
-#endif
-
__END_DECLS
#endif /* <stdio.h> included. */
diff --git a/include/stdlib.h b/include/stdlib.h
index e633a5c1a..eaeb7a104 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -302,152 +302,6 @@ extern long double __strtold_l (__const char *__restrict __nptr,
#endif /* __UCLIBC_HAS_XLOCALE__ */
-#if 0
-/* The internal entry points for `strtoX' take an extra flag argument
- saying whether or not to parse locale-dependent number grouping. */
-
-extern double __strtod_internal (__const char *__restrict __nptr,
- char **__restrict __endptr, int __group)
- __THROW;
-extern float __strtof_internal (__const char *__restrict __nptr,
- char **__restrict __endptr, int __group)
- __THROW;
-extern long double __strtold_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __group) __THROW;
-#ifndef __strtol_internal_defined
-extern long int __strtol_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __strtol_internal_defined 1
-#endif
-#ifndef __strtoul_internal_defined
-extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __strtoul_internal_defined 1
-#endif
-#if defined __GNUC__ || defined __USE_ISOC99
-# ifndef __strtoll_internal_defined
-__extension__
-extern long long int __strtoll_internal (__const char *__restrict __nptr,
- char **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __strtoll_internal_defined 1
-# endif
-# ifndef __strtoull_internal_defined
-__extension__
-extern unsigned long long int __strtoull_internal (__const char *
- __restrict __nptr,
- char **__restrict __endptr,
- int __base, int __group)
- __THROW;
-# define __strtoull_internal_defined 1
-# endif
-#endif /* GCC */
-#endif /* 0 */
-
-#if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \
- && defined __USE_EXTERN_INLINES
-/* Define inline functions which call the internal entry points. */
-
-/* __BEGIN_NAMESPACE_STD */
-/* extern __inline double */
-/* strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW */
-/* { */
-/* return __strtod_internal (__nptr, __endptr, 0); */
-/* } */
-/* extern __inline long int */
-/* strtol (__const char *__restrict __nptr, char **__restrict __endptr, */
-/* int __base) __THROW */
-/* { */
-/* return __strtol_internal (__nptr, __endptr, __base, 0); */
-/* } */
-/* extern __inline unsigned long int */
-/* strtoul (__const char *__restrict __nptr, char **__restrict __endptr, */
-/* int __base) __THROW */
-/* { */
-/* return __strtoul_internal (__nptr, __endptr, __base, 0); */
-/* } */
-/* __END_NAMESPACE_STD */
-
-/* # ifdef __USE_ISOC99 */
-/* __BEGIN_NAMESPACE_C99 */
-/* extern __inline float */
-/* strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW */
-/* { */
-/* return __strtof_internal (__nptr, __endptr, 0); */
-/* } */
-/* extern __inline long double */
-/* strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW */
-/* { */
-/* return __strtold_internal (__nptr, __endptr, 0); */
-/* } */
-/* __END_NAMESPACE_C99 */
-/* # endif */
-
-/* # ifdef __USE_BSD */
-/* __extension__ extern __inline long long int */
-/* strtoq (__const char *__restrict __nptr, char **__restrict __endptr, */
-/* int __base) __THROW */
-/* { */
-/* return __strtoll_internal (__nptr, __endptr, __base, 0); */
-/* } */
-/* __extension__ extern __inline unsigned long long int */
-/* strtouq (__const char *__restrict __nptr, char **__restrict __endptr, */
-/* int __base) __THROW */
-/* { */
-/* return __strtoull_internal (__nptr, __endptr, __base, 0); */
-/* } */
-/* # endif */
-
-/* # if defined __USE_MISC || defined __USE_ISOC99 */
-/* __BEGIN_NAMESPACE_C99 */
-/* __extension__ extern __inline long long int */
-/* strtoll (__const char *__restrict __nptr, char **__restrict __endptr, */
-/* int __base) __THROW */
-/* { */
-/* return __strtoll_internal (__nptr, __endptr, __base, 0); */
-/* } */
-/* __extension__ extern __inline unsigned long long int */
-/* strtoull (__const char * __restrict __nptr, char **__restrict __endptr, */
-/* int __base) __THROW */
-/* { */
-/* return __strtoull_internal (__nptr, __endptr, __base, 0); */
-/* } */
-/* __END_NAMESPACE_C99 */
-/* # endif */
-
-__BEGIN_NAMESPACE_STD
-extern __inline double
-atof (__const char *__nptr) __THROW
-{
- return strtod (__nptr, (char **) NULL);
-}
-extern __inline int
-atoi (__const char *__nptr) __THROW
-{
- return (int) strtol (__nptr, (char **) NULL, 10);
-}
-extern __inline long int
-atol (__const char *__nptr) __THROW
-{
- return strtol (__nptr, (char **) NULL, 10);
-}
-__END_NAMESPACE_STD
-
-# if defined __USE_MISC || defined __USE_ISOC99
-__BEGIN_NAMESPACE_C99
-__extension__ extern __inline long long int
-atoll (__const char *__nptr) __THROW
-{
- return strtoll (__nptr, (char **) NULL, 10);
-}
-__END_NAMESPACE_C99
-# endif
-#endif /* Optimizing and Inlining. */
-
-
#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant
digit first. Returns a pointer to static storage overwritten by the
@@ -638,20 +492,6 @@ extern void *valloc (size_t __size) __THROW __attribute_malloc__;
/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__THROW __attribute_malloc__;
-#if 0
-/* Cope with autoconf's broken AC_FUNC_MALLOC macro, which
- * redefines malloc to rpl_malloc if it does not detect glibc
- * style returning-a-valid-pointer-for-malloc(0) behavior. This
- * calls malloc() as usual, but if __size is zero, we allocate and
- * return a 1-byte block instead.... sigh... */
-static __inline void *rpl_malloc (size_t __size)
-{
- if (__size == 0) {
- __size++;
- }
- return malloc(__size);
-}
-#endif
#endif
__BEGIN_NAMESPACE_STD
@@ -777,14 +617,6 @@ extern int system (__const char *__command);
__END_NAMESPACE_STD
-#if 0
-/*#ifdef __USE_GNU*/
-/* Return a malloc'd string containing the canonical absolute name of the
- named file. The last file name component need not exist, and may be a
- symlink to a nonexistent file. */
-extern char *canonicalize_file_name (__const char *__name) __THROW;
-#endif
-
#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
/* Return the canonical absolute name of file NAME. The last file name
component need not exist, and may be a symlink to a nonexistent file.
@@ -849,60 +681,6 @@ __END_NAMESPACE_C99
#endif
-#if 0
-#ifdef __UCLIBC_HAS_FLOATS__
-#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED
-/* Convert floating point numbers to strings. The returned values are
- valid only until another call to the same function. */
-
-/* Convert VALUE to a string with NDIGIT digits and return a pointer to
- this. Set *DECPT with the position of the decimal character and *SIGN
- with the sign of the number. */
-extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign) __THROW;
-
-/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT
- with the position of the decimal character and *SIGN with the sign of
- the number. */
-extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign) __THROW;
-
-/* If possible convert VALUE to a string with NDIGIT significant digits.
- Otherwise use exponential representation. The resulting string will
- be written to BUF. */
-extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW;
-
-
-# ifdef __USE_MISC
-/* Long double versions of above functions. */
-extern char *qecvt (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign) __THROW;
-extern char *qfcvt (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign) __THROW;
-extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW;
-
-
-/* Reentrant version of the functions above which provide their own
- buffers. */
-extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign, char *__restrict __buf,
- size_t __len) __THROW;
-extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
- int *__restrict __sign, char *__restrict __buf,
- size_t __len) __THROW;
-
-extern int qecvt_r (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign,
- char *__restrict __buf, size_t __len) __THROW;
-extern int qfcvt_r (long double __value, int __ndigit,
- int *__restrict __decpt, int *__restrict __sign,
- char *__restrict __buf, size_t __len) __THROW;
-# endif /* misc */
-#endif /* use MISC || use X/Open Unix */
-#endif /* __UCLIBC_HAS_FLOATS__ */
-#endif
-
-
#ifdef __UCLIBC_HAS_WCHAR__
__BEGIN_NAMESPACE_STD
/* Return the length of the multibyte character
@@ -984,9 +762,7 @@ extern char *ptsname (int __fd) __THROW;
/* Store at most BUFLEN characters of the pathname of the slave pseudo
terminal associated with the master FD is open on in BUF.
Return 0 on success, otherwise an error number. */
-#if 0
extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW;
-#endif
/* Open a master pseudo terminal and return its file descriptor. */
extern int getpt (void) __THROW;
diff --git a/include/string.h b/include/string.h
index a2045eeda..35e98a805 100644
--- a/include/string.h
+++ b/include/string.h
@@ -349,11 +349,6 @@ extern char *strsep (char **__restrict __stringp,
#endif
#ifdef __USE_GNU
-#if 0
-/* Compare S1 and S2 as strings holding name & indices/version numbers. */
-extern int strverscmp (__const char *__s1, __const char *__s2)
- __THROW __attribute_pure__;
-#endif
/* Return a string describing the meaning of the signal number in SIG. */
extern char *strsignal (int __sig) __THROW;
@@ -371,14 +366,6 @@ extern char *__stpncpy (char *__restrict __dest,
extern char *stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) __THROW;
-#if 0
-/* Sautee STRING briskly. */
-extern char *strfry (char *__string) __THROW;
-
-/* Frobnicate N bytes of S. */
-extern void *memfrob (void *__s, size_t __n) __THROW;
-#endif
-
# ifndef basename
/* Return the file name within directory of FILENAME. We don't
declare the function if the `basename' macro is available (defined
@@ -389,37 +376,6 @@ extern char *basename (__const char *__filename) __THROW;
#endif
-#if 0
-#if defined __GNUC__ && __GNUC__ >= 2
-# if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \
- && !defined __NO_INLINE__ && !defined __cplusplus
-/* When using GNU CC we provide some optimized versions of selected
- functions from this header. There are two kinds of optimizations:
-
- - machine-dependent optimizations, most probably using inline
- assembler code; these might be quite expensive since the code
- size can increase significantly.
- These optimizations are not used unless the symbol
- __USE_STRING_INLINES
- is defined before including this header.
-
- - machine-independent optimizations which do not increase the
- code size significantly and which optimize mainly situations
- where one or more arguments are compile-time constants.
- These optimizations are used always when the compiler is
- taught to optimize.
-
- One can inhibit all optimizations by defining __NO_STRING_INLINES. */
-
-/* Get the machine-dependent optimizations (if any). */
-# include <bits/string.h>
-
-/* These are generic optimizations which do not add too much inline code. */
-# include <bits/string2.h>
-# endif
-#endif
-#endif
-
#ifdef __USE_BSD
/* Two OpenBSD extension functions. */
extern size_t strlcat(char *__restrict dst, const char *__restrict src,
diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h
index 8feb3bbea..85dc3d281 100644
--- a/include/sys/sysmacros.h
+++ b/include/sys/sysmacros.h
@@ -26,30 +26,30 @@
not going to hack weird hacks to support the dev_t representation
they need. */
__extension__
-extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
+static __inline unsigned int gnu_dev_major (unsigned long long int __dev)
__THROW;
__extension__
-extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
+static __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
__THROW;
__extension__
-extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
+static __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
unsigned int __minor)
__THROW;
#if defined __GNUC__ && __GNUC__ >= 2
-__extension__ extern __inline unsigned int
+__extension__ static __inline unsigned int
gnu_dev_major (unsigned long long int __dev) __THROW
{
return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
}
-__extension__ extern __inline unsigned int
+__extension__ static __inline unsigned int
gnu_dev_minor (unsigned long long int __dev) __THROW
{
return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
}
-__extension__ extern __inline unsigned long long int
+__extension__ static __inline unsigned long long int
gnu_dev_makedev (unsigned int __major, unsigned int __minor) __THROW
{
return ((__minor & 0xff) | ((__major & 0xfff) << 8)
diff --git a/include/unistd.h b/include/unistd.h
index 931fe9951..0908c647a 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -259,13 +259,6 @@ typedef __socklen_t socklen_t;
/* Test for access to NAME using the real UID and real GID. */
extern int access (__const char *__name, int __type) __THROW;
-#if 0
-/*#ifdef __USE_GNU*/
-/* Test for access to NAME using the effective UID and GID
- (as normal file operations use). */
-extern int euidaccess (__const char *__name, int __type) __THROW;
-#endif
-
/* Values for the WHENCE argument to lseek. */
#ifndef _STDIO_H /* <stdio.h> has the same definitions. */
@@ -454,15 +447,6 @@ extern char **environ;
extern int execve (__const char *__path, char *__const __argv[],
char *__const __envp[]) __THROW;
-#if 0
-/*#ifdef __USE_GNU*/
-/* Execute the file FD refers to, overlaying the running program image.
- ARGV and ENVP are passed to the new program, as for `execve'. */
-extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
- __THROW;
-#endif
-
-
/* Execute PATH with arguments ARGV and environment from `environ'. */
extern int execv (__const char *__path, char *__const __argv[]) __THROW;
@@ -601,12 +585,6 @@ extern __gid_t getegid (void) __THROW;
of its supplementary groups in LIST and return the number written. */
extern int getgroups (int __size, __gid_t __list[]) __THROW;
-#if 0
-/*#ifdef __USE_GNU*/
-/* Return nonzero iff the calling process is in group GID. */
-extern int group_member (__gid_t __gid) __THROW;
-#endif
-
/* Set the user ID of the calling process to UID.
If the calling process is the super-user, set the real
and effective user IDs, and the saved set-user-ID to UID;
diff --git a/include/wchar.h b/include/wchar.h
index 3787bbb43..ed83ccc4a 100644
--- a/include/wchar.h
+++ b/include/wchar.h
@@ -341,17 +341,7 @@ extern size_t __mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW;
extern size_t mbrlen (__const char *__restrict __s, size_t __n,
mbstate_t *__restrict __ps) __THROW;
-__END_NAMESPACE_C99
-
-#ifdef __USE_EXTERN_INLINES
-/* Define inline function as optimization. */
-extern __inline size_t mbrlen (__const char *__restrict __s, size_t __n,
- mbstate_t *__restrict __ps) __THROW
-{ return (__ps != NULL
- ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); }
-#endif
-__BEGIN_NAMESPACE_C99
/* Write wide character representation of multibyte character string
SRC to DST. */
extern size_t mbsrtowcs (wchar_t *__restrict __dst,
@@ -533,94 +523,6 @@ extern long double __wcstold_l (__const wchar_t *__restrict __nptr,
#endif /* GNU */
-#if 0
-#ifdef __UCLIBC_HAS_FLOATS__
-/* The internal entry points for `wcstoX' take an extra flag argument
- saying whether or not to parse locale-dependent number grouping. */
-extern double __wcstod_internal (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __group)
- __THROW;
-extern float __wcstof_internal (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr, int __group)
- __THROW;
-extern long double __wcstold_internal (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __group) __THROW;
-#endif /* __UCLIBC_HAS_FLOATS__ */
-
-#ifndef __wcstol_internal_defined
-extern long int __wcstol_internal (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __wcstol_internal_defined 1
-#endif
-#ifndef __wcstoul_internal_defined
-extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt,
- wchar_t **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __wcstoul_internal_defined 1
-#endif
-#ifndef __wcstoll_internal_defined
-__extension__
-extern long long int __wcstoll_internal (__const wchar_t *__restrict __nptr,
- wchar_t **__restrict __endptr,
- int __base, int __group) __THROW;
-# define __wcstoll_internal_defined 1
-#endif
-#ifndef __wcstoull_internal_defined
-__extension__
-extern unsigned long long int __wcstoull_internal (__const wchar_t *
- __restrict __nptr,
- wchar_t **
- __restrict __endptr,
- int __base,
- int __group) __THROW;
-# define __wcstoull_internal_defined 1
-#endif
-
-
-#if defined __OPTIMIZE__ && __GNUC__ >= 2
-/* Define inline functions which call the internal entry points. */
-/* __BEGIN_NAMESPACE_C99 */
-
-/* extern __inline double wcstod (__const wchar_t *__restrict __nptr, */
-/* wchar_t **__restrict __endptr) __THROW */
-/* { return __wcstod_internal (__nptr, __endptr, 0); } */
-/* extern __inline long int wcstol (__const wchar_t *__restrict __nptr, */
-/* wchar_t **__restrict __endptr, */
-/* int __base) __THROW */
-/* { return __wcstol_internal (__nptr, __endptr, __base, 0); } */
-/* extern __inline unsigned long int wcstoul (__const wchar_t *__restrict __nptr, */
-/* wchar_t **__restrict __endptr, */
-/* int __base) __THROW */
-/* { return __wcstoul_internal (__nptr, __endptr, __base, 0); } */
-/* __END_NAMESPACE_C99 */
-
-# ifdef __USE_GNU
-/* extern __inline float wcstof (__const wchar_t *__restrict __nptr, */
-/* wchar_t **__restrict __endptr) __THROW */
-/* { return __wcstof_internal (__nptr, __endptr, 0); } */
-/* extern __inline long double wcstold (__const wchar_t *__restrict __nptr, */
-/* wchar_t **__restrict __endptr) __THROW */
-/* { return __wcstold_internal (__nptr, __endptr, 0); } */
-
-
-/* __extension__ */
-/* extern __inline long long int wcstoq (__const wchar_t *__restrict __nptr, */
-/* wchar_t **__restrict __endptr, */
-/* int __base) __THROW */
-/* { return __wcstoll_internal (__nptr, __endptr, __base, 0); } */
-/* __extension__ */
-/* extern __inline unsigned long long int wcstouq (__const wchar_t * */
-/* __restrict __nptr, */
-/* wchar_t **__restrict __endptr, */
-/* int __base) __THROW */
-/* { return __wcstoull_internal (__nptr, __endptr, __base, 0); } */
-# endif /* Use GNU. */
-#endif /* Optimizing GCC >=2. */
-#endif /* 0 */
-
-
#ifdef __USE_GNU
/* Copy SRC to DEST, returning the address of the terminating L'\0' in
DEST. */
diff --git a/libc/sysdeps/linux/arm/bits/string.h b/libc/sysdeps/linux/arm/bits/string.h
deleted file mode 100644
index 206f956df..000000000
--- a/libc/sysdeps/linux/arm/bits/string.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Optimized, inlined string functions. ARM version.
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* We must defeat the generic optimized versions of these functions in
- <bits/string2.h> since they don't work on the ARM. This is because
- the games they play with the __STRING2_COPY_ARR# structures fail
- when structs are always 32-bit aligned.
- XXX Should provide suitably optimal replacements. */
-#define _HAVE_STRING_ARCH_strcpy 1
-#define _HAVE_STRING_ARCH_stpcpy 1
-#define _HAVE_STRING_ARCH_mempcpy 1
diff --git a/libc/sysdeps/linux/common/bits/string.h b/libc/sysdeps/linux/common/bits/string.h
deleted file mode 100644
index ad68b038b..000000000
--- a/libc/sysdeps/linux/common/bits/string.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* This file should provide inline versions of string functions.
-
- Surround GCC-specific parts with #ifdef __GNUC__, and use `extern __inline'.
-
- This file should define __STRING_INLINES if functions are actually defined
- as inlines. */
-
-#ifndef _BITS_STRING_H
-#define _BITS_STRING_H 1
-
-
-#endif /* bits/string.h */
diff --git a/libc/sysdeps/linux/common/bits/string2.h b/libc/sysdeps/linux/common/bits/string2.h
deleted file mode 100644
index 8f9fbd120..000000000
--- a/libc/sysdeps/linux/common/bits/string2.h
+++ /dev/null
@@ -1,1265 +0,0 @@
-/* Machine-independant string function optimizations.
- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _STRING_H
-# error "Never use <bits/string2.h> directly; include <string.h> instead."
-#endif
-
-#if !defined __NO_STRING_INLINES && !defined __BOUNDED_POINTERS__
-
-/* Unlike the definitions in the header <bits/string.h> the
- definitions contained here are not optimized down to assembler
- level. Those optimizations are not always a good idea since this
- means the code size increases a lot. Instead the definitions here
- optimize some functions in a way which do not dramatically
- increase the code size and which do not use assembler. The main
- trick is to use GNU CC's `__builtin_constant_p' function.
-
- Every function XXX which has a defined version in
- <bits/string.h> must be accompanied by a symbol _HAVE_STRING_ARCH_XXX
- to make sure we don't get redefinitions.
-
- We must use here macros instead of inline functions since the
- trick won't work with the latter. */
-
-#ifndef __STRING_INLINE
-# ifdef __cplusplus
-# define __STRING_INLINE inline
-# else
-# define __STRING_INLINE extern __inline
-# endif
-#endif
-
-#if _STRING_ARCH_unaligned
-/* If we can do unaligned memory accesses we must know the endianess. */
-# include <endian.h>
-# include <bits/types.h>
-
-# if __BYTE_ORDER == __LITTLE_ENDIAN
-# define __STRING2_SMALL_GET16(src, idx) \
- (((__const unsigned char *) (__const char *) (src))[idx + 1] << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx])
-# define __STRING2_SMALL_GET32(src, idx) \
- (((((__const unsigned char *) (__const char *) (src))[idx + 3] << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx + 2]) << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx + 1]) << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx])
-# else
-# define __STRING2_SMALL_GET16(src, idx) \
- (((__const unsigned char *) (__const char *) (src))[idx] << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx + 1])
-# define __STRING2_SMALL_GET32(src, idx) \
- (((((__const unsigned char *) (__const char *) (src))[idx] << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx + 1]) << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx + 2]) << 8 \
- | ((__const unsigned char *) (__const char *) (src))[idx + 3])
-# endif
-#else
-/* These are a few types we need for the optimizations if we cannot
- use unaligned memory accesses. */
-# define __STRING2_COPY_TYPE(N) \
- typedef struct { unsigned char __arr[N]; } \
- __STRING2_COPY_ARR##N __attribute__ ((packed))
-__STRING2_COPY_TYPE (2);
-__STRING2_COPY_TYPE (3);
-__STRING2_COPY_TYPE (4);
-__STRING2_COPY_TYPE (5);
-__STRING2_COPY_TYPE (6);
-__STRING2_COPY_TYPE (7);
-__STRING2_COPY_TYPE (8);
-# undef __STRING2_COPY_TYPE
-#endif
-
-/* Dereferencing a pointer arg to run sizeof on it fails for the void
- pointer case, so we use this instead.
- Note that __x is evaluated twice. */
-#define __string2_1bptr_p(__x) \
- ((size_t)(const void *)((__x) + 1) - (size_t)(const void *)(__x) == 1)
-
-/* Set N bytes of S to C. */
-#ifndef _HAVE_STRING_ARCH_memset
-# if _STRING_ARCH_unaligned
-# define memset(s, c, n) \
- (__extension__ (__builtin_constant_p (n) && (n) <= 16 \
- ? ((n) == 1 \
- ? __memset_1 (s, c) \
- : __memset_gc (s, c, n)) \
- : (__builtin_constant_p (c) && (c) == '\0' \
- ? ({ void *__s = (s); __bzero (__s, n); __s; }) \
- : memset (s, c, n))))
-
-# define __memset_1(s, c) ({ void *__s = (s); \
- *((__uint8_t *) __s) = (__uint8_t) c; __s; })
-
-# define __memset_gc(s, c, n) \
- ({ void *__s = (s); \
- union { \
- unsigned int __ui; \
- unsigned short int __usi; \
- unsigned char __uc; \
- } *__u = __s; \
- __uint8_t __c = (__uint8_t) (c); \
- \
- /* This `switch' statement will be removed at compile-time. */ \
- switch ((unsigned int) (n)) \
- { \
- case 15: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 11: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 7: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 3: \
- __u->__usi = (unsigned short int) __c * 0x0101; \
- __u = __extension__ (void *)((char *) __u + 2); \
- __u->__uc = (unsigned char) __c; \
- break; \
- \
- case 14: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 10: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 6: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 2: \
- __u->__usi = (unsigned short int) __c * 0x0101; \
- break; \
- \
- case 13: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 9: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 5: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 1: \
- __u->__uc = (unsigned char) __c; \
- break; \
- \
- case 16: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 12: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 8: \
- __u->__ui = __c * 0x01010101; \
- __u = __extension__ (void *)((char *) __u + 4); \
- case 4: \
- __u->__ui = __c * 0x01010101; \
- case 0: \
- break; \
- } \
- \
- __s; })
-# else
-# define memset(s, c, n) \
- (__extension__ (__builtin_constant_p (c) && (c) == '\0' \
- ? ({ void *__s = (s); __bzero (__s, n); __s; }) \
- : memset (s, c, n)))
-# endif
-
-/* GCC optimizes memset(s, 0, n) but not bzero(s, n).
- The optimization is broken before EGCS 1.1. */
-# if __GNUC_PREREQ (2, 91)
-# define __bzero(s, n) __builtin_memset (s, '\0', n)
-# endif
-
-#endif
-
-
-/* Copy N bytes from SRC to DEST, returning pointer to byte following the
- last copied. */
-#ifdef __USE_GNU
-# if !defined _HAVE_STRING_ARCH_mempcpy || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_mempcpy
-# if __GNUC_PREREQ (3, 0)
-# define __mempcpy(dest, src, n) \
- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \
- && __string2_1bptr_p (src) && n <= 8 \
- ? __builtin_memcpy (dest, src, n) + (n) \
- : __mempcpy (dest, src, n)))
-# else
-# define __mempcpy(dest, src, n) \
- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \
- && __string2_1bptr_p (src) && n <= 8 \
- ? __mempcpy_small (dest, __mempcpy_args (src), n) \
- : __mempcpy (dest, src, n)))
-# endif
-/* In glibc we use this function frequently but for namespace reasons
- we have to use the name `__mempcpy'. */
-# define mempcpy(dest, src, n) __mempcpy (dest, src, n)
-# endif
-
-# if !__GNUC_PREREQ (3, 0) || defined _FORCE_INLINES
-# if _STRING_ARCH_unaligned
-# ifndef _FORCE_INLINES
-# define __mempcpy_args(src) \
- ((__const char *) (src))[0], ((__const char *) (src))[2], \
- ((__const char *) (src))[4], ((__const char *) (src))[6], \
- __extension__ __STRING2_SMALL_GET16 (src, 0), \
- __extension__ __STRING2_SMALL_GET16 (src, 4), \
- __extension__ __STRING2_SMALL_GET32 (src, 0), \
- __extension__ __STRING2_SMALL_GET32 (src, 4)
-# endif
-__STRING_INLINE void *__mempcpy_small (void *, char, char, char, char,
- __uint16_t, __uint16_t, __uint32_t,
- __uint32_t, size_t);
-__STRING_INLINE void *
-__mempcpy_small (void *__dest1,
- char __src0_1, char __src2_1, char __src4_1, char __src6_1,
- __uint16_t __src0_2, __uint16_t __src4_2,
- __uint32_t __src0_4, __uint32_t __src4_4,
- size_t __srclen)
-{
- union {
- __uint32_t __ui;
- __uint16_t __usi;
- unsigned char __uc;
- unsigned char __c;
- } *__u = __dest1;
- switch ((unsigned int) __srclen)
- {
- case 1:
- __u->__c = __src0_1;
- __u = __extension__ (void *)((char *) __u + 1);
- break;
- case 2:
- __u->__usi = __src0_2;
- __u = __extension__ (void *)((char *) __u + 2);
- break;
- case 3:
- __u->__usi = __src0_2;
- __u = __extension__ (void *)((char *) __u + 2);
- __u->__c = __src2_1;
- __u = __extension__ (void *)((char *) __u + 1);
- break;
- case 4:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- break;
- case 5:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__c = __src4_1;
- __u = __extension__ (void *)((char *) __u + 1);
- break;
- case 6:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__usi = __src4_2;
- __u = __extension__ (void *)((char *) __u + 2);
- break;
- case 7:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__usi = __src4_2;
- __u = __extension__ (void *)((char *) __u + 2);
- __u->__c = __src6_1;
- __u = __extension__ (void *)((char *) __u + 1);
- break;
- case 8:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__ui = __src4_4;
- __u = __extension__ (void *)((char *) __u + 4);
- break;
- }
- return (void *) __u;
-}
-# else
-# ifndef _FORCE_INLINES
-# define __mempcpy_args(src) \
- ((__const char *) (src))[0], \
- __extension__ ((__STRING2_COPY_ARR2) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1] } }), \
- __extension__ ((__STRING2_COPY_ARR3) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2] } }), \
- __extension__ ((__STRING2_COPY_ARR4) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3] } }), \
- __extension__ ((__STRING2_COPY_ARR5) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4] } }), \
- __extension__ ((__STRING2_COPY_ARR6) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5] } }), \
- __extension__ ((__STRING2_COPY_ARR7) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5], \
- ((__const char *) (src))[6] } }), \
- __extension__ ((__STRING2_COPY_ARR8) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5], \
- ((__const char *) (src))[6], ((__const char *) (src))[7] } })
-# endif
-__STRING_INLINE void *__mempcpy_small (void *, char, __STRING2_COPY_ARR2,
- __STRING2_COPY_ARR3,
- __STRING2_COPY_ARR4,
- __STRING2_COPY_ARR5,
- __STRING2_COPY_ARR6,
- __STRING2_COPY_ARR7,
- __STRING2_COPY_ARR8, size_t);
-__STRING_INLINE void *
-__mempcpy_small (void *__dest, char __src1,
- __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
- __STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
- __STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
- __STRING2_COPY_ARR8 __src8, size_t __srclen)
-{
- union {
- char __c;
- __STRING2_COPY_ARR2 __sca2;
- __STRING2_COPY_ARR3 __sca3;
- __STRING2_COPY_ARR4 __sca4;
- __STRING2_COPY_ARR5 __sca5;
- __STRING2_COPY_ARR6 __sca6;
- __STRING2_COPY_ARR7 __sca7;
- __STRING2_COPY_ARR8 __sca8;
- } *__u = __dest;
- switch ((unsigned int) __srclen)
- {
- case 1:
- __u->__c = __src1;
- break;
- case 2:
- __extension__ __u->__sca2 = __src2;
- break;
- case 3:
- __extension__ __u->__sca3 = __src3;
- break;
- case 4:
- __extension__ __u->__sca4 = __src4;
- break;
- case 5:
- __extension__ __u->__sca5 = __src5;
- break;
- case 6:
- __extension__ __u->__sca6 = __src6;
- break;
- case 7:
- __extension__ __u->__sca7 = __src7;
- break;
- case 8:
- __extension__ __u->__sca8 = __src8;
- break;
- }
- return __extension__ (void *)((char *) __u + __srclen);
-}
-# endif
-# endif
-# endif
-#endif
-
-
-/* Return pointer to C in S. */
-#ifndef _HAVE_STRING_ARCH_strchr
-extern void *__rawmemchr (const void *__s, int __c);
-# define strchr(s, c) \
- (__extension__ (__builtin_constant_p (c) && (c) == '\0' \
- ? (char *) __rawmemchr (s, c) \
- : strchr (s, c)))
-#endif
-
-
-/* Copy SRC to DEST. */
-#if (!defined _HAVE_STRING_ARCH_strcpy && !__GNUC_PREREQ (3, 0)) \
- || defined _FORCE_INLINES
-# if !defined _HAVE_STRING_ARCH_strcpy && !__GNUC_PREREQ (3, 0)
-# define strcpy(dest, src) \
- (__extension__ (__builtin_constant_p (src) \
- ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 \
- ? __strcpy_small (dest, __strcpy_args (src), \
- strlen (src) + 1) \
- : (char *) memcpy (dest, src, strlen (src) + 1)) \
- : strcpy (dest, src)))
-# endif
-
-# if _STRING_ARCH_unaligned
-# ifndef _FORCE_INLINES
-# define __strcpy_args(src) \
- __extension__ __STRING2_SMALL_GET16 (src, 0), \
- __extension__ __STRING2_SMALL_GET16 (src, 4), \
- __extension__ __STRING2_SMALL_GET32 (src, 0), \
- __extension__ __STRING2_SMALL_GET32 (src, 4)
-# endif
-__STRING_INLINE char *__strcpy_small (char *, __uint16_t, __uint16_t,
- __uint32_t, __uint32_t, size_t);
-__STRING_INLINE char *
-__strcpy_small (char *__dest,
- __uint16_t __src0_2, __uint16_t __src4_2,
- __uint32_t __src0_4, __uint32_t __src4_4,
- size_t __srclen)
-{
- union {
- __uint32_t __ui;
- __uint16_t __usi;
- unsigned char __uc;
- } *__u = (void *) __dest;
- switch ((unsigned int) __srclen)
- {
- case 1:
- __u->__uc = '\0';
- break;
- case 2:
- __u->__usi = __src0_2;
- break;
- case 3:
- __u->__usi = __src0_2;
- __u = __extension__ (void *)((char *) __u + 2);
- __u->__uc = '\0';
- break;
- case 4:
- __u->__ui = __src0_4;
- break;
- case 5:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__uc = '\0';
- break;
- case 6:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__usi = __src4_2;
- break;
- case 7:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__usi = __src4_2;
- __u = __extension__ (void *)((char *) __u + 2);
- __u->__uc = '\0';
- break;
- case 8:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__ui = __src4_4;
- break;
- }
- return __dest;
-}
-# else
-# ifndef _FORCE_INLINES
-# define __strcpy_args(src) \
- __extension__ ((__STRING2_COPY_ARR2) \
- { { ((__const char *) (src))[0], '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR3) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR4) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR5) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR6) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR7) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5], \
- '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR8) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5], \
- ((__const char *) (src))[6], '\0' } })
-# endif
-__STRING_INLINE char *__strcpy_small (char *, __STRING2_COPY_ARR2,
- __STRING2_COPY_ARR3,
- __STRING2_COPY_ARR4,
- __STRING2_COPY_ARR5,
- __STRING2_COPY_ARR6,
- __STRING2_COPY_ARR7,
- __STRING2_COPY_ARR8, size_t);
-__STRING_INLINE char *
-__strcpy_small (char *__dest,
- __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
- __STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
- __STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
- __STRING2_COPY_ARR8 __src8, size_t __srclen)
-{
- union {
- char __c;
- __STRING2_COPY_ARR2 __sca2;
- __STRING2_COPY_ARR3 __sca3;
- __STRING2_COPY_ARR4 __sca4;
- __STRING2_COPY_ARR5 __sca5;
- __STRING2_COPY_ARR6 __sca6;
- __STRING2_COPY_ARR7 __sca7;
- __STRING2_COPY_ARR8 __sca8;
- } *__u = (void *) __dest;
- switch ((unsigned int) __srclen)
- {
- case 1:
- __u->__c = '\0';
- break;
- case 2:
- __extension__ __u->__sca2 = __src2;
- break;
- case 3:
- __extension__ __u->__sca3 = __src3;
- break;
- case 4:
- __extension__ __u->__sca4 = __src4;
- break;
- case 5:
- __extension__ __u->__sca5 = __src5;
- break;
- case 6:
- __extension__ __u->__sca6 = __src6;
- break;
- case 7:
- __extension__ __u->__sca7 = __src7;
- break;
- case 8:
- __extension__ __u->__sca8 = __src8;
- break;
- }
- return __dest;
-}
-# endif
-#endif
-
-
-/* Copy SRC to DEST, returning pointer to final NUL byte. */
-#ifdef __USE_GNU
-# if !defined _HAVE_STRING_ARCH_stpcpy || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_stpcpy
-# if __GNUC_PREREQ (3, 0)
-# define __stpcpy(dest, src) \
- (__extension__ (__builtin_constant_p (src) \
- ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 \
- ? __builtin_strcpy (dest, src) + strlen (src) \
- : ((char *) (__mempcpy) (dest, src, strlen (src) + 1) \
- - 1)) \
- : __stpcpy (dest, src)))
-# else
-# define __stpcpy(dest, src) \
- (__extension__ (__builtin_constant_p (src) \
- ? (__string2_1bptr_p (src) && strlen (src) + 1 <= 8 \
- ? __stpcpy_small (dest, __stpcpy_args (src), \
- strlen (src) + 1) \
- : ((char *) (__mempcpy) (dest, src, strlen (src) + 1) \
- - 1)) \
- : __stpcpy (dest, src)))
-# endif
-/* In glibc we use this function frequently but for namespace reasons
- we have to use the name `__stpcpy'. */
-# define stpcpy(dest, src) __stpcpy (dest, src)
-# endif
-
-# if !__GNUC_PREREQ (3, 0) || defined _FORCE_INLINES
-# if _STRING_ARCH_unaligned
-# ifndef _FORCE_INLINES
-# define __stpcpy_args(src) \
- __extension__ __STRING2_SMALL_GET16 (src, 0), \
- __extension__ __STRING2_SMALL_GET16 (src, 4), \
- __extension__ __STRING2_SMALL_GET32 (src, 0), \
- __extension__ __STRING2_SMALL_GET32 (src, 4)
-# endif
-__STRING_INLINE char *__stpcpy_small (char *, __uint16_t, __uint16_t,
- __uint32_t, __uint32_t, size_t);
-__STRING_INLINE char *
-__stpcpy_small (char *__dest,
- __uint16_t __src0_2, __uint16_t __src4_2,
- __uint32_t __src0_4, __uint32_t __src4_4,
- size_t __srclen)
-{
- union {
- unsigned int __ui;
- unsigned short int __usi;
- unsigned char __uc;
- char __c;
- } *__u = (void *) __dest;
- switch ((unsigned int) __srclen)
- {
- case 1:
- __u->__uc = '\0';
- break;
- case 2:
- __u->__usi = __src0_2;
- __u = __extension__ (void *)((char *) __u + 1);
- break;
- case 3:
- __u->__usi = __src0_2;
- __u = __extension__ (void *)((char *) __u + 2);
- __u->__uc = '\0';
- break;
- case 4:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 3);
- break;
- case 5:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__uc = '\0';
- break;
- case 6:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__usi = __src4_2;
- __u = __extension__ (void *)((char *) __u + 1);
- break;
- case 7:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__usi = __src4_2;
- __u = __extension__ (void *)((char *) __u + 2);
- __u->__uc = '\0';
- break;
- case 8:
- __u->__ui = __src0_4;
- __u = __extension__ (void *)((char *) __u + 4);
- __u->__ui = __src4_4;
- __u = __extension__ (void *)((char *) __u + 3);
- break;
- }
- return &__u->__c;
-}
-# else
-# ifndef _FORCE_INLINES
-# define __stpcpy_args(src) \
- __extension__ ((__STRING2_COPY_ARR2) \
- { { ((__const char *) (src))[0], '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR3) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR4) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR5) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR6) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR7) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5], \
- '\0' } }), \
- __extension__ ((__STRING2_COPY_ARR8) \
- { { ((__const char *) (src))[0], ((__const char *) (src))[1], \
- ((__const char *) (src))[2], ((__const char *) (src))[3], \
- ((__const char *) (src))[4], ((__const char *) (src))[5], \
- ((__const char *) (src))[6], '\0' } })
-# endif
-__STRING_INLINE char *__stpcpy_small (char *, __STRING2_COPY_ARR2,
- __STRING2_COPY_ARR3,
- __STRING2_COPY_ARR4,
- __STRING2_COPY_ARR5,
- __STRING2_COPY_ARR6,
- __STRING2_COPY_ARR7,
- __STRING2_COPY_ARR8, size_t);
-__STRING_INLINE char *
-__stpcpy_small (char *__dest,
- __STRING2_COPY_ARR2 __src2, __STRING2_COPY_ARR3 __src3,
- __STRING2_COPY_ARR4 __src4, __STRING2_COPY_ARR5 __src5,
- __STRING2_COPY_ARR6 __src6, __STRING2_COPY_ARR7 __src7,
- __STRING2_COPY_ARR8 __src8, size_t __srclen)
-{
- union {
- char __c;
- __STRING2_COPY_ARR2 __sca2;
- __STRING2_COPY_ARR3 __sca3;
- __STRING2_COPY_ARR4 __sca4;
- __STRING2_COPY_ARR5 __sca5;
- __STRING2_COPY_ARR6 __sca6;
- __STRING2_COPY_ARR7 __sca7;
- __STRING2_COPY_ARR8 __sca8;
- } *__u = (void *) __dest;
- switch ((unsigned int) __srclen)
- {
- case 1:
- __u->__c = '\0';
- break;
- case 2:
- __extension__ __u->__sca2 = __src2;
- break;
- case 3:
- __extension__ __u->__sca3 = __src3;
- break;
- case 4:
- __extension__ __u->__sca4 = __src4;
- break;
- case 5:
- __extension__ __u->__sca5 = __src5;
- break;
- case 6:
- __extension__ __u->__sca6 = __src6;
- break;
- case 7:
- __extension__ __u->__sca7 = __src7;
- break;
- case 8:
- __extension__ __u->__sca8 = __src8;
- break;
- }
- return __dest + __srclen - 1;
-}
-# endif
-# endif
-# endif
-#endif
-
-
-/* Copy no more than N characters of SRC to DEST. */
-#ifndef _HAVE_STRING_ARCH_strncpy
-# if defined _USE_STRING_ARCH_memset && defined _USE_STRING_ARCH_mempcpy
-# define strncpy(dest, src, n) \
- (__extension__ ({ char *__dest = (dest); \
- __builtin_constant_p (src) && __builtin_constant_p (n) \
- ? (strlen (src) + 1 >= ((size_t) (n)) \
- ? (char *) memcpy (__dest, src, n) \
- : (memset (__mempcpy (__dest, src, strlen (src)), \
- '\0', n - strlen (src)), \
- __dest)) \
- : strncpy (__dest, src, n); }))
-# else
-# define strncpy(dest, src, n) \
- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \
- ? (strlen (src) + 1 >= ((size_t) (n)) \
- ? (char *) memcpy (dest, src, n) \
- : strncpy (dest, src, n)) \
- : strncpy (dest, src, n)))
-# endif
-#endif
-
-
-/* Append no more than N characters from SRC onto DEST. */
-#ifndef _HAVE_STRING_ARCH_strncat
-# ifdef _USE_STRING_ARCH_strchr
-# define strncat(dest, src, n) \
- (__extension__ ({ char *__dest = (dest); \
- __builtin_constant_p (src) && __builtin_constant_p (n) \
- ? (strlen (src) < ((size_t) (n)) \
- ? strcat (__dest, src) \
- : (*((char *) __mempcpy (strchr (__dest, '\0'), \
- src, n)) = '\0', __dest)) \
- : strncat (dest, src, n); }))
-# else
-# define strncat(dest, src, n) \
- (__extension__ (__builtin_constant_p (src) && __builtin_constant_p (n) \
- ? (strlen (src) < ((size_t) (n)) \
- ? strcat (dest, src) \
- : strncat (dest, src, n)) \
- : strncat (dest, src, n)))
-# endif
-#endif
-
-
-/* Compare characters of S1 and S2. */
-#ifndef _HAVE_STRING_ARCH_strcmp
-# define strcmp(s1, s2) \
- __extension__ \
- ({ size_t __s1_len, __s2_len; \
- (__builtin_constant_p (s1) && __builtin_constant_p (s2) \
- && (__s1_len = strlen (s1), __s2_len = strlen (s2), \
- (!__string2_1bptr_p (s1) || __s1_len >= 4) \
- && (!__string2_1bptr_p (s2) || __s2_len >= 4)) \
- ? memcmp ((__const char *) (s1), (__const char *) (s2), \
- (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) \
- : (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \
- && (__s1_len = strlen (s1), __s1_len < 4) \
- ? (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \
- ? __strcmp_cc (s1, s2, __s1_len) \
- : __strcmp_cg (s1, s2, __s1_len)) \
- : (__builtin_constant_p (s2) && __string2_1bptr_p (s2) \
- && (__s2_len = strlen (s2), __s2_len < 4) \
- ? (__builtin_constant_p (s1) && __string2_1bptr_p (s1) \
- ? __strcmp_cc (s1, s2, __s2_len) \
- : __strcmp_gc (s1, s2, __s2_len)) \
- : strcmp (s1, s2)))); })
-
-# define __strcmp_cc(s1, s2, l) \
- (__extension__ ({ register int __result = \
- (((__const unsigned char *) (__const char *) (s1))[0] \
- - ((__const unsigned char *) (__const char *)(s2))[0]);\
- if (l > 0 && __result == 0) \
- { \
- __result = (((__const unsigned char *) \
- (__const char *) (s1))[1] \
- - ((__const unsigned char *) \
- (__const char *) (s2))[1]); \
- if (l > 1 && __result == 0) \
- { \
- __result = \
- (((__const unsigned char *) \
- (__const char *) (s1))[2] \
- - ((__const unsigned char *) \
- (__const char *) (s2))[2]); \
- if (l > 2 && __result == 0) \
- __result = \
- (((__const unsigned char *) \
- (__const char *) (s1))[3] \
- - ((__const unsigned char *) \
- (__const char *) (s2))[3]); \
- } \
- } \
- __result; }))
-
-# define __strcmp_cg(s1, s2, l1) \
- (__extension__ ({ __const unsigned char *__s2 = \
- (__const unsigned char *) (__const char *) (s2); \
- register int __result = \
- (((__const unsigned char *) (__const char *) (s1))[0] \
- - __s2[0]); \
- if (l1 > 0 && __result == 0) \
- { \
- __result = (((__const unsigned char *) \
- (__const char *) (s1))[1] - __s2[1]); \
- if (l1 > 1 && __result == 0) \
- { \
- __result = (((__const unsigned char *) \
- (__const char *) (s1))[2] - __s2[2]);\
- if (l1 > 2 && __result == 0) \
- __result = (((__const unsigned char *) \
- (__const char *) (s1))[3] \
- - __s2[3]); \
- } \
- } \
- __result; }))
-
-# define __strcmp_gc(s1, s2, l2) \
- (__extension__ ({ __const unsigned char *__s1 = \
- (__const unsigned char *) (__const char *) (s1); \
- register int __result = \
- __s1[0] - ((__const unsigned char *) \
- (__const char *) (s2))[0]; \
- if (l2 > 0 && __result == 0) \
- { \
- __result = (__s1[1] \
- - ((__const unsigned char *) \
- (__const char *) (s2))[1]); \
- if (l2 > 1 && __result == 0) \
- { \
- __result = \
- (__s1[2] - ((__const unsigned char *) \
- (__const char *) (s2))[2]); \
- if (l2 > 2 && __result == 0) \
- __result = \
- (__s1[3] \
- - ((__const unsigned char *) \
- (__const char *) (s2))[3]); \
- } \
- } \
- __result; }))
-#endif
-
-
-/* Compare N characters of S1 and S2. */
-#ifndef _HAVE_STRING_ARCH_strncmp
-# define strncmp(s1, s2, n) \
- (__extension__ (__builtin_constant_p (n) \
- && ((__builtin_constant_p (s1) \
- && strlen (s1) < ((size_t) (n))) \
- || (__builtin_constant_p (s2) \
- && strlen (s2) < ((size_t) (n)))) \
- ? strcmp (s1, s2) : strncmp (s1, s2, n)))
-#endif
-
-
-/* Return the length of the initial segment of S which
- consists entirely of characters not in REJECT. */
-#if !defined _HAVE_STRING_ARCH_strcspn || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_strcspn
-# define strcspn(s, reject) \
- __extension__ \
- ({ char __r0, __r1, __r2; \
- (__builtin_constant_p (reject) && __string2_1bptr_p (reject) \
- ? ((__r0 = ((__const char *) (reject))[0], __r0 == '\0') \
- ? strlen (s) \
- : ((__r1 = ((__const char *) (reject))[1], __r1 == '\0') \
- ? __strcspn_c1 (s, __r0) \
- : ((__r2 = ((__const char *) (reject))[2], __r2 == '\0') \
- ? __strcspn_c2 (s, __r0, __r1) \
- : (((__const char *) (reject))[3] == '\0' \
- ? __strcspn_c3 (s, __r0, __r1, __r2) \
- : strcspn (s, reject))))) \
- : strcspn (s, reject)); })
-# endif
-
-__STRING_INLINE size_t __strcspn_c1 (__const char *__s, int __reject);
-__STRING_INLINE size_t
-__strcspn_c1 (__const char *__s, int __reject)
-{
- register size_t __result = 0;
- while (__s[__result] != '\0' && __s[__result] != __reject)
- ++__result;
- return __result;
-}
-
-__STRING_INLINE size_t __strcspn_c2 (__const char *__s, int __reject1,
- int __reject2);
-__STRING_INLINE size_t
-__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
-{
- register size_t __result = 0;
- while (__s[__result] != '\0' && __s[__result] != __reject1
- && __s[__result] != __reject2)
- ++__result;
- return __result;
-}
-
-__STRING_INLINE size_t __strcspn_c3 (__const char *__s, int __reject1,
- int __reject2, int __reject3);
-__STRING_INLINE size_t
-__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
- int __reject3)
-{
- register size_t __result = 0;
- while (__s[__result] != '\0' && __s[__result] != __reject1
- && __s[__result] != __reject2 && __s[__result] != __reject3)
- ++__result;
- return __result;
-}
-#endif
-
-
-/* Return the length of the initial segment of S which
- consists entirely of characters in ACCEPT. */
-#if !defined _HAVE_STRING_ARCH_strspn || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_strspn
-# define strspn(s, accept) \
- __extension__ \
- ({ char __a0, __a1, __a2; \
- (__builtin_constant_p (accept) && __string2_1bptr_p (accept) \
- ? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0') \
- ? ((void) (s), 0) \
- : ((__a1 = ((__const char *) (accept))[1], __a1 == '\0') \
- ? __strspn_c1 (s, __a0) \
- : ((__a2 = ((__const char *) (accept))[2], __a2 == '\0') \
- ? __strspn_c2 (s, __a0, __a1) \
- : (((__const char *) (accept))[3] == '\0' \
- ? __strspn_c3 (s, __a0, __a1, __a2) \
- : strspn (s, accept))))) \
- : strspn (s, accept)); })
-# endif
-
-__STRING_INLINE size_t __strspn_c1 (__const char *__s, int __accept);
-__STRING_INLINE size_t
-__strspn_c1 (__const char *__s, int __accept)
-{
- register size_t __result = 0;
- /* Please note that __accept never can be '\0'. */
- while (__s[__result] == __accept)
- ++__result;
- return __result;
-}
-
-__STRING_INLINE size_t __strspn_c2 (__const char *__s, int __accept1,
- int __accept2);
-__STRING_INLINE size_t
-__strspn_c2 (__const char *__s, int __accept1, int __accept2)
-{
- register size_t __result = 0;
- /* Please note that __accept1 and __accept2 never can be '\0'. */
- while (__s[__result] == __accept1 || __s[__result] == __accept2)
- ++__result;
- return __result;
-}
-
-__STRING_INLINE size_t __strspn_c3 (__const char *__s, int __accept1,
- int __accept2, int __accept3);
-__STRING_INLINE size_t
-__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
-{
- register size_t __result = 0;
- /* Please note that __accept1 to __accept3 never can be '\0'. */
- while (__s[__result] == __accept1 || __s[__result] == __accept2
- || __s[__result] == __accept3)
- ++__result;
- return __result;
-}
-#endif
-
-
-/* Find the first occurrence in S of any character in ACCEPT. */
-#if !defined _HAVE_STRING_ARCH_strpbrk || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_strpbrk
-# define strpbrk(s, accept) \
- __extension__ \
- ({ char __a0, __a1, __a2; \
- (__builtin_constant_p (accept) && __string2_1bptr_p (accept) \
- ? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0') \
- ? ((void) (s), NULL) \
- : ((__a1 = ((__const char *) (accept))[1], __a1 == '\0') \
- ? strchr (s, __a0) \
- : ((__a2 = ((__const char *) (accept))[2], __a2 == '\0') \
- ? __strpbrk_c2 (s, __a0, __a1) \
- : (((__const char *) (accept))[3] == '\0' \
- ? __strpbrk_c3 (s, __a0, __a1, __a2) \
- : strpbrk (s, accept))))) \
- : strpbrk (s, accept)); })
-# endif
-
-__STRING_INLINE char *__strpbrk_c2 (__const char *__s, int __accept1,
- int __accept2);
-__STRING_INLINE char *
-__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
-{
- /* Please note that __accept1 and __accept2 never can be '\0'. */
- while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
- ++__s;
- return *__s == '\0' ? NULL : (char *) (size_t) __s;
-}
-
-__STRING_INLINE char *__strpbrk_c3 (__const char *__s, int __accept1,
- int __accept2, int __accept3);
-__STRING_INLINE char *
-__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
- int __accept3)
-{
- /* Please note that __accept1 to __accept3 never can be '\0'. */
- while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
- && *__s != __accept3)
- ++__s;
- return *__s == '\0' ? NULL : (char *) (size_t) __s;
-}
-#endif
-
-
-/* Find the first occurrence of NEEDLE in HAYSTACK. Newer gcc versions
- do this itself. */
-#if !defined _HAVE_STRING_ARCH_strstr && !__GNUC_PREREQ (2, 97)
-# define strstr(haystack, needle) \
- (__extension__ (__builtin_constant_p (needle) && __string2_1bptr_p (needle) \
- ? (((__const char *) (needle))[0] == '\0' \
- ? (char *) (size_t) (haystack) \
- : (((__const char *) (needle))[1] == '\0' \
- ? strchr (haystack, \
- ((__const char *) (needle))[0]) \
- : strstr (haystack, needle))) \
- : strstr (haystack, needle)))
-#endif
-
-
-#if !defined _HAVE_STRING_ARCH_strtok_r || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_strtok_r
-# define __strtok_r(s, sep, nextp) \
- (__extension__ (__builtin_constant_p (sep) && __string2_1bptr_p (sep) \
- ? (((__const char *) (sep))[0] != '\0' \
- && ((__const char *) (sep))[1] == '\0' \
- ? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp) \
- : __strtok_r (s, sep, nextp)) \
- : __strtok_r (s, sep, nextp)))
-# endif
-
-__STRING_INLINE char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
-__STRING_INLINE char *
-__strtok_r_1c (char *__s, char __sep, char **__nextp)
-{
- char *__result;
- if (__s == NULL)
- __s = *__nextp;
- while (*__s == __sep)
- ++__s;
- __result = NULL;
- if (*__s != '\0')
- {
- __result = __s++;
- while (*__s != '\0')
- if (*__s++ == __sep)
- {
- __s[-1] = '\0';
- break;
- }
- *__nextp = __s;
- }
- return __result;
-}
-# if defined __USE_POSIX || defined __USE_MISC
-# define strtok_r(s, sep, nextp) __strtok_r (s, sep, nextp)
-# endif
-#endif
-
-
-#if !defined _HAVE_STRING_ARCH_strsep || defined _FORCE_INLINES
-# ifndef _HAVE_STRING_ARCH_strsep
-
-extern char *__strsep_g (char **__stringp, __const char *__delim);
-# define __strsep(s, reject) \
- __extension__ \
- ({ char __r0, __r1, __r2; \
- (__builtin_constant_p (reject) && __string2_1bptr_p (reject) \
- && (__r0 = ((__const char *) (reject))[0], \
- ((__const char *) (reject))[0] != '\0') \
- ? ((__r1 = ((__const char *) (reject))[1], \
- ((__const char *) (reject))[1] == '\0') \
- ? __strsep_1c (s, __r0) \
- : ((__r2 = ((__const char *) (reject))[2], __r2 == '\0') \
- ? __strsep_2c (s, __r0, __r1) \
- : (((__const char *) (reject))[3] == '\0' \
- ? __strsep_3c (s, __r0, __r1, __r2) \
- : __strsep_g (s, reject)))) \
- : __strsep_g (s, reject)); })
-# endif
-
-__STRING_INLINE char *__strsep_1c (char **__s, char __reject);
-__STRING_INLINE char *
-__strsep_1c (char **__s, char __reject)
-{
- register char *__retval = *__s;
- if (__retval != NULL && (*__s = strchr (__retval, __reject)) != NULL)
- *(*__s)++ = '\0';
- return __retval;
-}
-
-__STRING_INLINE char *__strsep_2c (char **__s, char __reject1, char __reject2);
-__STRING_INLINE char *
-__strsep_2c (char **__s, char __reject1, char __reject2)
-{
- register char *__retval = *__s;
- if (__retval != NULL)
- {
- register char *__cp = __retval;
- while (1)
- {
- if (*__cp == '\0')
- {
- __cp = NULL;
- break;
- }
- if (*__cp == __reject1 || *__cp == __reject2)
- {
- *__cp++ = '\0';
- break;
- }
- ++__cp;
- }
- *__s = __cp;
- }
- return __retval;
-}
-
-__STRING_INLINE char *__strsep_3c (char **__s, char __reject1, char __reject2,
- char __reject3);
-__STRING_INLINE char *
-__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
-{
- register char *__retval = *__s;
- if (__retval != NULL)
- {
- register char *__cp = __retval;
- while (1)
- {
- if (*__cp == '\0')
- {
- __cp = NULL;
- break;
- }
- if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
- {
- *__cp++ = '\0';
- break;
- }
- ++__cp;
- }
- *__s = __cp;
- }
- return __retval;
-}
-# ifdef __USE_BSD
-# define strsep(s, reject) __strsep (s, reject)
-# endif
-#endif
-
-/* We need the memory allocation functions for inline strdup().
- Referring to stdlib.h (even minimally) is not allowed
- in any of the tight standards compliant modes. */
-#ifdef __USE_MISC
-
-# if !defined _HAVE_STRING_ARCH_strdup || !defined _HAVE_STRING_ARCH_strndup
-# define __need_malloc_and_calloc
-# include <stdlib.h>
-# endif
-
-# ifndef _HAVE_STRING_ARCH_strdup
-
-extern char *__strdup (__const char *__string) __THROW __attribute_malloc__;
-# define __strdup(s) \
- (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
- ? (((__const char *) (s))[0] == '\0' \
- ? (char *) calloc (1, 1) \
- : ({ size_t __len = strlen (s) + 1; \
- char *__retval = (char *) malloc (__len); \
- if (__retval != NULL) \
- __retval = (char *) memcpy (__retval, s, __len); \
- __retval; })) \
- : __strdup (s)))
-
-# if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED
-# define strdup(s) __strdup (s)
-# endif
-# endif
-
-# ifndef _HAVE_STRING_ARCH_strndup
-
-extern char *__strndup (__const char *__string, size_t __n)
- __THROW __attribute_malloc__;
-# define __strndup(s, n) \
- (__extension__ (__builtin_constant_p (s) && __string2_1bptr_p (s) \
- ? (((__const char *) (s))[0] == '\0' \
- ? (char *) calloc (1, 1) \
- : ({ size_t __len = strlen (s) + 1; \
- size_t __n = (n); \
- char *__retval; \
- if (__n < __len) \
- __len = __n + 1; \
- __retval = (char *) malloc (__len); \
- if (__retval != NULL) \
- { \
- __retval[__len - 1] = '\0'; \
- __retval = (char *) memcpy (__retval, s, \
- __len - 1); \
- } \
- __retval; })) \
- : __strndup (s, n)))
-
-# ifdef __USE_GNU
-# define strndup(s, n) __strndup (s, n)
-# endif
-# endif
-
-#endif /* Use misc. or use GNU. */
-
-#ifndef _FORCE_INLINES
-# undef __STRING_INLINE
-#endif
-
-#endif /* No string inlines. */
diff --git a/libc/sysdeps/linux/i386/bits/string.h b/libc/sysdeps/linux/i386/bits/string.h
deleted file mode 100644
index 79bd40b97..000000000
--- a/libc/sysdeps/linux/i386/bits/string.h
+++ /dev/null
@@ -1,904 +0,0 @@
-/* Optimized, inlined string functions. i386 version.
- Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* The ix86 processors can access unaligned multi-byte variables. */
-#define _STRING_ARCH_unaligned 1
-
-
-/* We only provide optimizations if the user selects them and if
- GNU CC is used. */
-#if !defined __NO_STRING_INLINES && defined __USE_STRING_INLINES \
- && defined __GNUC__ && __GNUC__ >= 2 && !__BOUNDED_POINTERS__
-
-#ifndef __STRING_INLINE
-# ifdef __cplusplus
-# define __STRING_INLINE inline
-# else
-# define __STRING_INLINE extern __inline
-# endif
-#endif
-
-
-/* Copy N bytes of SRC to DEST. */
-#define _HAVE_STRING_ARCH_memcpy 1
-#define memcpy(dest, src, n) \
- (__extension__ (__builtin_constant_p (n) \
- ? __memcpy_c (dest, src, n) \
- : memcpy (dest, src, n)))
-/* This looks horribly ugly, but the compiler can optimize it totally,
- as the count is constant. */
-__STRING_INLINE void *__memcpy_c (void *__dest, __const void *__src,
- size_t __n);
-
-__STRING_INLINE void *
-__memcpy_c (void *__dest, __const void *__src, size_t __n)
-{
- register unsigned long int __d0, __d1, __d2;
- union {
- unsigned int __ui;
- unsigned short int __usi;
- unsigned char __uc;
- } *__u = __dest;
- switch (__n)
- {
- case 0:
- return __dest;
- case 1:
- __u->__uc = *(const unsigned char *) __src;
- return __dest;
- case 2:
- __u->__usi = *(const unsigned short int *) __src;
- return __dest;
- case 3:
- __u->__usi = *(const unsigned short int *) __src;
- __u = (void *) __u + 2;
- __u->__uc = *(2 + (const unsigned char *) __src);
- return __dest;
- case 4:
- __u->__ui = *(const unsigned int *) __src;
- return __dest;
- case 6:
- __u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
- __u->__usi = *(2 + (const unsigned short int *) __src);
- return __dest;
- case 8:
- __u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
- __u->__ui = *(1 + (const unsigned int *) __src);
- return __dest;
- case 12:
- __u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
- __u->__ui = *(1 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
- __u->__ui = *(2 + (const unsigned int *) __src);
- return __dest;
- case 16:
- __u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
- __u->__ui = *(1 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
- __u->__ui = *(2 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
- __u->__ui = *(3 + (const unsigned int *) __src);
- return __dest;
- case 20:
- __u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
- __u->__ui = *(1 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
- __u->__ui = *(2 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
- __u->__ui = *(3 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
- __u->__ui = *(4 + (const unsigned int *) __src);
- return __dest;
- }
-#define __COMMON_CODE(x) \
- __asm__ __volatile__ \
- ("cld\n\t" \
- "rep; movsl" \
- x \
- : "=&c" (__d0), "=&D" (__d1), "=&S" (__d2) \
- : "0" (__n / 4), "1" (&__u->__uc), "2" (__src) \
- : "memory");
-
- switch (__n % 4)
- {
- case 0:
- __COMMON_CODE ("");
- break;
- case 1:
- __COMMON_CODE ("\n\tmovsb");
- break;
- case 2:
- __COMMON_CODE ("\n\tmovsw");
- break;
- case 3:
- __COMMON_CODE ("\n\tmovsw\n\tmovsb");
- break;
- }
- return __dest;
-#undef __COMMON_CODE
-}
-
-
-/* Copy N bytes of SRC to DEST, guaranteeing
- correct behavior for overlapping strings. */
-#define _HAVE_STRING_ARCH_memmove 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE void *
-memmove (void *__dest, __const void *__src, size_t __n)
-{
- register unsigned long int __d0, __d1, __d2;
- if (__dest < __src)
- __asm__ __volatile__
- ("cld\n\t"
- "rep\n\t"
- "movsb"
- : "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
- : "0" (__n), "1" (__src), "2" (__dest)
- : "memory");
- else
- __asm__ __volatile__
- ("std\n\t"
- "rep\n\t"
- "movsb\n\t"
- "cld"
- : "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
- : "0" (__n), "1" (__n - 1 + (const char *) __src),
- "2" (__n - 1 + (char *) __dest)
- : "memory");
- return __dest;
-}
-#endif
-
-/* Set N bytes of S to C. */
-#define _HAVE_STRING_ARCH_memset 1
-#define _USE_STRING_ARCH_memset 1
-#define memset(s, c, n) \
- (__extension__ (__builtin_constant_p (c) \
- ? (__builtin_constant_p (n) \
- ? __memset_cc (s, 0x01010101UL * (unsigned char) (c), n) \
- : __memset_cg (s, 0x01010101UL * (unsigned char) (c), n))\
- : __memset_gg (s, c, n)))
-
-__STRING_INLINE void *__memset_cc (void *__s, unsigned long int __pattern,
- size_t __n);
-
-__STRING_INLINE void *
-__memset_cc (void *__s, unsigned long int __pattern, size_t __n)
-{
- register unsigned long int __d0, __d1;
- union {
- unsigned int __ui;
- unsigned short int __usi;
- unsigned char __uc;
- } *__u = __s;
- switch (__n)
- {
- case 0:
- return __s;
- case 1:
- __u->__uc = __pattern;
- return __s;
- case 2:
- __u->__usi = __pattern;
- return __s;
- case 3:
- __u->__usi = __pattern;
- __u = __extension__ ((void *) __u + 2);
- __u->__uc = __pattern;
- return __s;
- case 4:
- __u->__ui = __pattern;
- return __s;
- }
-#define __COMMON_CODE(x) \
- __asm__ __volatile__ \
- ("cld\n\t" \
- "rep; stosl" \
- x \
- : "=&c" (__d0), "=&D" (__d1) \
- : "a" (__pattern), "0" (__n / 4), "1" (&__u->__uc) \
- : "memory")
-
- switch (__n % 4)
- {
- case 0:
- __COMMON_CODE ("");
- break;
- case 1:
- __COMMON_CODE ("\n\tstosb");
- break;
- case 2:
- __COMMON_CODE ("\n\tstosw");
- break;
- case 3:
- __COMMON_CODE ("\n\tstosw\n\tstosb");
- break;
- }
- return __s;
-#undef __COMMON_CODE
-}
-
-__STRING_INLINE void *__memset_cg (void *__s, unsigned long __c, size_t __n);
-
-__STRING_INLINE void *
-__memset_cg (void *__s, unsigned long __c, size_t __n)
-{
- register unsigned long int __d0, __d1;
- __asm__ __volatile__
- ("cld\n\t"
- "rep; stosl\n\t"
- "testb $2,%b3\n\t"
- "je 1f\n\t"
- "stosw\n"
- "1:\n\t"
- "testb $1,%b3\n\t"
- "je 2f\n\t"
- "stosb\n"
- "2:"
- : "=&c" (__d0), "=&D" (__d1)
- : "a" (__c), "q" (__n), "0" (__n / 4), "1" (__s)
- : "memory");
- return __s;
-}
-
-__STRING_INLINE void *__memset_gg (void *__s, char __c, size_t __n);
-
-__STRING_INLINE void *
-__memset_gg (void *__s, char __c, size_t __n)
-{
- register unsigned long int __d0, __d1;
- __asm__ __volatile__
- ("cld\n\t"
- "rep; stosb"
- : "=&D" (__d0), "=&c" (__d1)
- : "a" (__c), "0" (__s), "1" (__n)
- : "memory");
- return __s;
-}
-
-
-
-
-/* Search N bytes of S for C. */
-#define _HAVE_STRING_ARCH_memchr 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE void *
-memchr (__const void *__s, int __c, size_t __n)
-{
- register unsigned long int __d0;
- register void *__res;
- if (__n == 0)
- return NULL;
- __asm__ __volatile__
- ("cld\n\t"
- "repne; scasb\n\t"
- "je 1f\n\t"
- "movl $1,%0\n"
- "1:"
- : "=D" (__res), "=&c" (__d0)
- : "a" (__c), "0" (__s), "1" (__n)
- : "cc");
- return __res - 1;
-}
-#endif
-
-#define _HAVE_STRING_ARCH_memrchr 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE void *
-__memrchr (__const void *__s, int __c, size_t __n)
-{
- register unsigned long int __d0;
- register void *__res;
- if (__n == 0)
- return NULL;
- __asm__ __volatile__
- ("std\n\t"
- "repne; scasb\n\t"
- "je 1f\n\t"
- "orl $-1,%0\n"
- "1:\tcld"
- : "=D" (__res), "=&c" (__d0)
- : "a" (__c), "0" (__s + __n - 1), "1" (__n)
- : "cc");
- return __res + 1;
-}
-# ifdef __USE_GNU
-# define memrchr(s, c, n) __memrchr (s, c, n)
-# endif
-#endif
-
-/* Return the length of S. */
-#define _HAVE_STRING_ARCH_strlen 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE size_t
-strlen (__const char *__str)
-{
- register unsigned long int __d0;
- register size_t __res;
- __asm__ __volatile__
- ("cld\n\t"
- "repne; scasb\n\t"
- "notl %0"
- : "=c" (__res), "=&D" (__d0)
- : "1" (__str), "a" (0), "0" (0xffffffff)
- : "cc");
- return __res - 1;
-}
-#endif
-
-/* Copy SRC to DEST. */
-#define _HAVE_STRING_ARCH_strcpy 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strcpy (char *__dest, __const char *__src)
-{
- register unsigned long int __d0, __d1;
- __asm__ __volatile__
- ("cld\n"
- "1:\n\t"
- "lodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b"
- : "=&S" (__d0), "=&D" (__d1)
- : "0" (__src), "1" (__dest)
- : "ax", "memory", "cc");
- return __dest;
-}
-#endif
-
-/* Copy no more than N characters of SRC to DEST. */
-#define _HAVE_STRING_ARCH_strncpy 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strncpy (char *__dest, __const char *__src, size_t __n)
-{
- register unsigned long int __d0, __d1, __d2;
- __asm__ __volatile__
- ("cld\n"
- "1:\n\t"
- "decl %2\n\t"
- "js 2f\n\t"
- "lodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "rep; stosb\n"
- "2:"
- : "=&S" (__d0), "=&D" (__d1), "=&c" (__d2)
- : "0" (__src), "1" (__dest), "2" (__n)
- : "ax", "memory", "cc");
- return __dest;
-}
-#endif
-
-/* Append SRC onto DEST. */
-#define _HAVE_STRING_ARCH_strcat 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strcat (char *__dest, __const char *__src)
-{
- register unsigned long int __d0, __d1, __d2, __d3;
- __asm__ __volatile__
- ("cld\n\t"
- "repne; scasb\n\t"
- "decl %1\n"
- "1:\n\t"
- "lodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b"
- : "=&S" (__d0), "=&D" (__d1), "=&c" (__d2), "=&a" (__d3)
- : "0" (__src), "1" (__dest), "2" (0xffffffff), "3" (0)
- : "memory", "cc");
- return __dest;
-}
-#endif
-
-/* Append no more than N characters from SRC onto DEST. */
-#define _HAVE_STRING_ARCH_strncat 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE char *
-strncat (char *__dest, __const char *__src, size_t __n)
-{
- register unsigned long int __d0, __d1, __d2, __d3;
- __asm__ __volatile__
- ("cld\n\t"
- "repne; scasb\n\t"
- "decl %1\n\t"
- "movl %4,%2\n"
- "1:\n\t"
- "decl %2\n\t"
- "js 2f\n\t"
- "lodsb\n\t"
- "stosb\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "jmp 3f\n"
- "2:\n\t"
- "xorl %3,%3\n\t"
- "stosb\n"
- "3:"
- : "=&S" (__d0), "=&D" (__d1), "=&c" (__d2), "=&a" (__d3)
- : "g" (__n), "0" (__src), "1" (__dest), "2" (0xffffffff), "3" (0)
- : "memory", "cc");
- return __dest;
-}
-#endif
-
-/* Compare S1 and S2. */
-#define _HAVE_STRING_ARCH_strcmp 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE int
-strcmp (__const char *__s1, __const char *__s2)
-{
- register unsigned long int __d0, __d1;
- register int __res;
- __asm__ __volatile__
- ("cld\n"
- "1:\n\t"
- "lodsb\n\t"
- "scasb\n\t"
- "jne 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "xorl %%eax,%%eax\n\t"
- "jmp 3f\n"
- "2:\n\t"
- "sbbl %%eax,%%eax\n\t"
- "orb $1,%%al\n"
- "3:"
- : "=a" (__res), "=&S" (__d0), "=&D" (__d1)
- : "1" (__s1), "2" (__s2)
- : "cc");
- return __res;
-}
-#endif
-
-/* Compare N characters of S1 and S2. */
-#define _HAVE_STRING_ARCH_strncmp 1
-#ifndef _FORCE_INLINES
-__STRING_INLINE int
-strncmp (__const char *__s1, __const char *__s2, size_t __n)
-{
- register unsigned long int __d0, __d1, __d2;
- register int __res;
- __asm__ __volatile__
- ("cld\n"
- "1:\n\t"
- "decl %3\n\t"
- "js 2f\n\t"
- "lodsb\n\t"
- "scasb\n\t"
- "jne 3f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n"
- "2:\n\t"
- "xorl %%eax,%%eax\n\t"
- "jmp 4f\n"
- "3:\n\t"
- "sbbl %%eax,%%eax\n\t"
- "orb $1,%%al\n"
- "4:"
- : "=a" (__res), "=&S" (__d0), "=&D" (__d1), "=&c" (__d2)
- : "1" (__s1), "2" (__s2), "3" (__n)
- : "cc");
- return __res;
-}
-#endif
-
-/* Find the first occurrence of C in S. */
-#define _HAVE_STRING_ARCH_strchr 1
-#define _USE_STRING_ARCH_strchr 1
-#define strchr(s, c) \
- (__extension__ (__builtin_constant_p (c) \
- ? __strchr_c (s, ((c) & 0xff) << 8) \
- : __strchr_g (s, c)))
-
-__STRING_INLINE char *__strchr_g (__const char *__s, int __c);
-
-__STRING_INLINE char *
-__strchr_g (__const char *__s, int __c)
-{
- register unsigned long int __d0;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "movb %%al,%%ah\n"
- "1:\n\t"
- "lodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "je 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "movl $1,%1\n"
- "2:\n\t"
- "movl %1,%0"
- : "=a" (__res), "=&S" (__d0)
- : "0" (__c), "1" (__s)
- : "cc");
- return __res - 1;
-}
-
-__STRING_INLINE char *__strchr_c (__const char *__s, int __c);
-
-__STRING_INLINE char *
-__strchr_c (__const char *__s, int __c)
-{
- register unsigned long int __d0;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "1:\n\t"
- "lodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "je 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "movl $1,%1\n"
- "2:\n\t"
- "movl %1,%0"
- : "=a" (__res), "=&S" (__d0)
- : "0" (__c), "1" (__s)
- : "cc");
- return __res - 1;
-}
-
-
-/* Find the first occurrence of C in S or the final NUL byte. */
-#define _HAVE_STRING_ARCH_strchrnul 1
-#define __strchrnul(s, c) \
- (__extension__ (__builtin_constant_p (c) \
- ? ((c) == '\0' \
- ? (char *) __rawmemchr (s, c) \
- : __strchrnul_c (s, ((c) & 0xff) << 8)) \
- : __strchrnul_g (s, c)))
-
-__STRING_INLINE char *__strchrnul_g (__const char *__s, int __c);
-
-__STRING_INLINE char *
-__strchrnul_g (__const char *__s, int __c)
-{
- register unsigned long int __d0;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "movb %%al,%%ah\n"
- "1:\n\t"
- "lodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "je 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "2:\n\t"
- "movl %1,%0"
- : "=a" (__res), "=&S" (__d0)
- : "0" (__c), "1" (__s)
- : "cc");
- return __res - 1;
-}
-
-__STRING_INLINE char *__strchrnul_c (__const char *__s, int __c);
-
-__STRING_INLINE char *
-__strchrnul_c (__const char *__s, int __c)
-{
- register unsigned long int __d0;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "1:\n\t"
- "lodsb\n\t"
- "cmpb %%ah,%%al\n\t"
- "je 2f\n\t"
- "testb %%al,%%al\n\t"
- "jne 1b\n\t"
- "2:\n\t"
- "movl %1,%0"
- : "=a" (__res), "=&S" (__d0)
- : "0" (__c), "1" (__s)
- : "cc");
- return __res - 1;
-}
-#ifdef __USE_GNU
-# define strchrnul(s, c) __strchrnul (s, c)
-#endif
-
-
-/* Return the length of the initial segment of S which
- consists entirely of characters not in REJECT. */
-#define _HAVE_STRING_ARCH_strcspn 1
-#ifndef _FORCE_INLINES
-# ifdef __PIC__
-__STRING_INLINE size_t
-strcspn (__const char *__s, __const char *__reject)
-{
- register unsigned long int __d0, __d1, __d2;
- register char *__res;
- __asm__ __volatile__
- ("pushl %%ebx\n\t"
- "cld\n\t"
- "movl %4,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t"
- "movl %%ecx,%%ebx\n"
- "1:\n\t"
- "lodsb\n\t"
- "testb %%al,%%al\n\t"
- "je 2f\n\t"
- "movl %4,%%edi\n\t"
- "movl %%ebx,%%ecx\n\t"
- "repne; scasb\n\t"
- "jne 1b\n"
- "2:\n\t"
- "popl %%ebx"
- : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
- : "d" (__reject), "0" (__s), "1" (0), "2" (0xffffffff)
- : "cc");
- return (__res - 1) - __s;
-}
-# else
-__STRING_INLINE size_t
-strcspn (__const char *__s, __const char *__reject)
-{
- register unsigned long int __d0, __d1, __d2, __d3;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "movl %5,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t"
- "movl %%ecx,%%edx\n"
- "1:\n\t"
- "lodsb\n\t"
- "testb %%al,%%al\n\t"
- "je 2f\n\t"
- "movl %5,%%edi\n\t"
- "movl %%edx,%%ecx\n\t"
- "repne; scasb\n\t"
- "jne 1b\n"
- "2:"
- : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
- : "g" (__reject), "0" (__s), "1" (0), "2" (0xffffffff)
- : "cc");
- return (__res - 1) - __s;
-}
-# endif
-#endif
-
-
-/* Return the length of the initial segment of S which
- consists entirely of characters in ACCEPT. */
-#define _HAVE_STRING_ARCH_strspn 1
-#ifndef _FORCE_INLINES
-# ifdef __PIC__
-__STRING_INLINE size_t
-strspn (__const char *__s, __const char *__accept)
-{
- register unsigned long int __d0, __d1, __d2;
- register char *__res;
- __asm__ __volatile__
- ("pushl %%ebx\n\t"
- "cld\n\t"
- "movl %4,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t"
- "movl %%ecx,%%ebx\n"
- "1:\n\t"
- "lodsb\n\t"
- "testb %%al,%%al\n\t"
- "je 2f\n\t"
- "movl %4,%%edi\n\t"
- "movl %%ebx,%%ecx\n\t"
- "repne; scasb\n\t"
- "je 1b\n"
- "2:\n\t"
- "popl %%ebx"
- : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
- : "r" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
- : "cc");
- return (__res - 1) - __s;
-}
-# else
-__STRING_INLINE size_t
-strspn (__const char *__s, __const char *__accept)
-{
- register unsigned long int __d0, __d1, __d2, __d3;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "movl %5,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t"
- "movl %%ecx,%%edx\n"
- "1:\n\t"
- "lodsb\n\t"
- "testb %%al,%%al\n\t"
- "je 2f\n\t"
- "movl %5,%%edi\n\t"
- "movl %%edx,%%ecx\n\t"
- "repne; scasb\n\t"
- "je 1b\n"
- "2:"
- : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
- : "g" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
- : "cc");
- return (__res - 1) - __s;
-}
-# endif
-#endif
-
-
-/* Find the first occurrence in S of any character in ACCEPT. */
-#define _HAVE_STRING_ARCH_strpbrk 1
-#ifndef _FORCE_INLINES
-# ifdef __PIC__
-__STRING_INLINE char *
-strpbrk (__const char *__s, __const char *__accept)
-{
- unsigned long int __d0, __d1, __d2;
- register char *__res;
- __asm__ __volatile__
- ("pushl %%ebx\n\t"
- "cld\n\t"
- "movl %4,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t"
- "movl %%ecx,%%ebx\n"
- "1:\n\t"
- "lodsb\n\t"
- "testb %%al,%%al\n\t"
- "je 2f\n\t"
- "movl %4,%%edi\n\t"
- "movl %%ebx,%%ecx\n\t"
- "repne; scasb\n\t"
- "jne 1b\n\t"
- "decl %0\n\t"
- "jmp 3f\n"
- "2:\n\t"
- "xorl %0,%0\n"
- "3:\n\t"
- "popl %%ebx"
- : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&D" (__d2)
- : "r" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
- : "cc");
- return __res;
-}
-# else
-__STRING_INLINE char *
-strpbrk (__const char *__s, __const char *__accept)
-{
- register unsigned long int __d0, __d1, __d2, __d3;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t"
- "movl %5,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t"
- "movl %%ecx,%%edx\n"
- "1:\n\t"
- "lodsb\n\t"
- "testb %%al,%%al\n\t"
- "je 2f\n\t"
- "movl %5,%%edi\n\t"
- "movl %%edx,%%ecx\n\t"
- "repne; scasb\n\t"
- "jne 1b\n\t"
- "decl %0\n\t"
- "jmp 3f\n"
- "2:\n\t"
- "xorl %0,%0\n"
- "3:"
- : "=&S" (__res), "=&a" (__d0), "=&c" (__d1), "=&d" (__d2), "=&D" (__d3)
- : "g" (__accept), "0" (__s), "1" (0), "2" (0xffffffff)
- : "cc");
- return __res;
-}
-# endif
-#endif
-
-
-/* Find the first occurrence of NEEDLE in HAYSTACK. */
-#define _HAVE_STRING_ARCH_strstr 1
-#ifndef _FORCE_INLINES
-# ifdef __PIC__
-__STRING_INLINE char *
-strstr (__const char *__haystack, __const char *__needle)
-{
- register unsigned long int __d0, __d1, __d2;
- register char *__res;
- __asm__ __volatile__
- ("pushl %%ebx\n\t"
- "cld\n\t" \
- "movl %4,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t" /* NOTE! This also sets Z if searchstring='' */
- "movl %%ecx,%%ebx\n"
- "1:\n\t"
- "movl %4,%%edi\n\t"
- "movl %%esi,%%eax\n\t"
- "movl %%ebx,%%ecx\n\t"
- "repe; cmpsb\n\t"
- "je 2f\n\t" /* also works for empty string, see above */
- "xchgl %%eax,%%esi\n\t"
- "incl %%esi\n\t"
- "cmpb $0,-1(%%eax)\n\t"
- "jne 1b\n\t"
- "xorl %%eax,%%eax\n\t"
- "2:\n\t"
- "popl %%ebx"
- : "=&a" (__res), "=&c" (__d0), "=&S" (__d1), "=&D" (__d2)
- : "r" (__needle), "0" (0), "1" (0xffffffff), "2" (__haystack)
- : "cc");
- return __res;
-}
-# else
-__STRING_INLINE char *
-strstr (__const char *__haystack, __const char *__needle)
-{
- register unsigned long int __d0, __d1, __d2, __d3;
- register char *__res;
- __asm__ __volatile__
- ("cld\n\t" \
- "movl %5,%%edi\n\t"
- "repne; scasb\n\t"
- "notl %%ecx\n\t"
- "decl %%ecx\n\t" /* NOTE! This also sets Z if searchstring='' */
- "movl %%ecx,%%edx\n"
- "1:\n\t"
- "movl %5,%%edi\n\t"
- "movl %%esi,%%eax\n\t"
- "movl %%edx,%%ecx\n\t"
- "repe; cmpsb\n\t"
- "je 2f\n\t" /* also works for empty string, see above */
- "xchgl %%eax,%%esi\n\t"
- "incl %%esi\n\t"
- "cmpb $0,-1(%%eax)\n\t"
- "jne 1b\n\t"
- "xorl %%eax,%%eax\n\t"
- "2:"
- : "=&a" (__res), "=&c" (__d0), "=&S" (__d1), "=&d" (__d2), "=&D" (__d3)
- : "g" (__needle), "0" (0), "1" (0xffffffff), "2" (__haystack)
- : "cc");
- return __res;
-}
-# endif
-#endif
-
-#ifndef _FORCE_INLINES
-# undef __STRING_INLINE
-#endif
-
-#endif /* use string inlines && GNU CC */
diff --git a/libc/sysdeps/linux/sparc/bits/string.h b/libc/sysdeps/linux/sparc/bits/string.h
deleted file mode 100644
index 03f717676..000000000
--- a/libc/sysdeps/linux/sparc/bits/string.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Optimized, inlined string functions. SPARC version.
- Copyright (C) 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
-#ifndef _STRING_H
-# error "Never use <bits/string.h> directly; include <string.h> instead."
-#endif
-
-/* sparc32 and sparc64 strchr(x, '\0') perform better than
- __rawmemchr(x, '\0'). */
-#define _HAVE_STRING_ARCH_strchr 1
diff --git a/libpthread/linuxthreads/testrtsig.h b/libpthread/linuxthreads/testrtsig.h
deleted file mode 100644
index fb8b011f0..000000000
--- a/libpthread/linuxthreads/testrtsig.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Test whether RT signals are really available.
- Copyright (C) 1997 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include <limits.h>
-#include <string.h>
-#include <sys/utsname.h>
-
-static int
-kernel_has_rtsig (void)
-{
- return 0; /* hacked to test old uClibc that doesn't know about RT signals. 0.9.9 should work with RT signals. Make this proper in the end! */
-#ifdef RTSIG_MAX
- return 1;
-#else
- return 0;
-#endif
-
-/*
- struct utsname name;
-
- return uname (&name) == 0 && __strverscmp (name.release, "2.1.70") >= 0;
-*/
-}