#ifndef _STRING_H
+#ifndef _ISOMAC
#include <sys/types.h>
extern void *__memccpy (void *__dest, const void *__src,
extern int __ffs (int __i) __attribute__ ((const));
extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen);
+#endif
/* Now the real definitions. We do this here since some of the functions
above are defined as macros in the headers. */
#include <string/string.h>
+#ifndef _ISOMAC
extern __typeof (strcoll_l) __strcoll_l;
extern __typeof (strxfrm_l) __strxfrm_l;
extern __typeof (strcasecmp_l) __strcasecmp_l;
extern __typeof (strncasecmp_l) __strncasecmp_l;
/* Alternative version which doesn't pollute glibc's namespace. */
-#ifndef NOT_IN_libc
+#if IS_IN (libc)
# undef strndupa
# define strndupa(s, n) \
(__extension__ \
extern char *__strsep_g (char **__stringp, const char *__delim);
libc_hidden_proto (__strsep_g)
libc_hidden_proto (strnlen)
+libc_hidden_proto (memmem)
+extern __typeof (memmem) __memmem;
+libc_hidden_proto (__memmem)
+libc_hidden_proto (__ffs)
libc_hidden_builtin_proto (memchr)
libc_hidden_builtin_proto (memcpy)
libc_hidden_builtin_proto (strstr)
libc_hidden_builtin_proto (ffs)
+#if (!IS_IN (libc) || !defined SHARED) \
+ && !defined NO_MEMPCPY_STPCPY_REDIRECT
+/* Redirect calls to __builtin_mempcpy and __builtin_stpcpy to call
+ __mempcpy and __stpcpy if not inlined. */
+extern __typeof (mempcpy) mempcpy __asm__ ("__mempcpy");
+extern __typeof (stpcpy) stpcpy __asm__ ("__stpcpy");
+#endif
+
# ifndef _ISOMAC
# ifndef index
# define index(s, c) (strchr ((s), (c)))
extern char *__strncat_chk (char *__restrict __dest,
const char *__restrict __src,
size_t __len, size_t __destlen) __THROW;
+#endif
#endif