Index: gdb/gnulib/import/string.in.h |
diff --git a/gdb/gnulib/string.in.h b/gdb/gnulib/import/string.in.h |
similarity index 85% |
rename from gdb/gnulib/string.in.h |
rename to gdb/gnulib/import/string.in.h |
index db3530add0f7589fbcc3923278a074034d997c1b..f8d7520eaaae2e25b937cf92c7ee27e20f4c47c3 100644 |
--- a/gdb/gnulib/string.in.h |
+++ b/gdb/gnulib/import/string.in.h |
@@ -1,6 +1,6 @@ |
/* A GNU-like <string.h>. |
- Copyright (C) 1995-1996, 2001-2011 Free Software Foundation, Inc. |
+ Copyright (C) 1995-1996, 2001-2012 Free Software Foundation, Inc. |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
@@ -13,20 +13,20 @@ |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
- along with this program; if not, write to the Free Software Foundation, |
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
+ along with this program; if not, see <http://www.gnu.org/licenses/>. */ |
-#ifndef _GL_STRING_H |
+#ifndef _@GUARD_PREFIX@_STRING_H |
#if __GNUC__ >= 3 |
@PRAGMA_SYSTEM_HEADER@ |
#endif |
+@PRAGMA_COLUMNS@ |
/* The include_next requires a split double-inclusion guard. */ |
#@INCLUDE_NEXT@ @NEXT_STRING_H@ |
-#ifndef _GL_STRING_H |
-#define _GL_STRING_H |
+#ifndef _@GUARD_PREFIX@_STRING_H |
+#define _@GUARD_PREFIX@_STRING_H |
/* NetBSD 5.0 mis-defines NULL. */ |
#include <stddef.h> |
@@ -36,17 +36,20 @@ |
# include <wchar.h> |
#endif |
-#ifndef __attribute__ |
-/* This feature is available in gcc versions 2.5 and later. */ |
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) |
-# define __attribute__(Spec) /* empty */ |
-# endif |
-/* The attribute __pure__ was added in gcc 2.96. */ |
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) |
-# define __pure__ /* empty */ |
-# endif |
+/* The __attribute__ feature is available in gcc versions 2.5 and later. |
+ The attribute __pure__ was added in gcc 2.96. */ |
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) |
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) |
+#else |
+# define _GL_ATTRIBUTE_PURE /* empty */ |
#endif |
+/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */ |
+/* But in any case avoid namespace pollution on glibc systems. */ |
+#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ |
+ && ! defined __GLIBC__ |
+# include <unistd.h> |
+#endif |
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ |
@@ -55,6 +58,36 @@ |
/* The definition of _GL_WARN_ON_USE is copied here. */ |
+/* Find the index of the least-significant set bit. */ |
+#if @GNULIB_FFSL@ |
+# if !@HAVE_FFSL@ |
+_GL_FUNCDECL_SYS (ffsl, int, (long int i)); |
+# endif |
+_GL_CXXALIAS_SYS (ffsl, int, (long int i)); |
+_GL_CXXALIASWARN (ffsl); |
+#elif defined GNULIB_POSIXCHECK |
+# undef ffsl |
+# if HAVE_RAW_DECL_FFSL |
+_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); |
+# endif |
+#endif |
+ |
+ |
+/* Find the index of the least-significant set bit. */ |
+#if @GNULIB_FFSLL@ |
+# if !@HAVE_FFSLL@ |
+_GL_FUNCDECL_SYS (ffsll, int, (long long int i)); |
+# endif |
+_GL_CXXALIAS_SYS (ffsll, int, (long long int i)); |
+_GL_CXXALIASWARN (ffsll); |
+#elif defined GNULIB_POSIXCHECK |
+# undef ffsll |
+# if HAVE_RAW_DECL_FFSLL |
+_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); |
+# endif |
+#endif |
+ |
+ |
/* Return the first instance of C within N bytes of S, or NULL. */ |
#if @GNULIB_MEMCHR@ |
# if @REPLACE_MEMCHR@ |
@@ -62,13 +95,13 @@ |
# define memchr rpl_memchr |
# endif |
_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); |
# else |
# if ! @HAVE_MEMCHR@ |
_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
# endif |
/* On some systems, this function is defined as an overloaded function: |
@@ -78,7 +111,7 @@ _GL_CXXALIAS_SYS_CAST2 (memchr, |
void *, (void const *__s, int __c, size_t __n), |
void const *, (void const *__s, int __c, size_t __n)); |
# endif |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); |
_GL_CXXALIASWARN1 (memchr, void const *, |
@@ -102,7 +135,8 @@ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " |
_GL_FUNCDECL_RPL (memmem, void *, |
(void const *__haystack, size_t __haystack_len, |
void const *__needle, size_t __needle_len) |
- __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 3))); |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1, 3))); |
_GL_CXXALIAS_RPL (memmem, void *, |
(void const *__haystack, size_t __haystack_len, |
void const *__needle, size_t __needle_len)); |
@@ -111,7 +145,8 @@ _GL_CXXALIAS_RPL (memmem, void *, |
_GL_FUNCDECL_SYS (memmem, void *, |
(void const *__haystack, size_t __haystack_len, |
void const *__needle, size_t __needle_len) |
- __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 3))); |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1, 3))); |
# endif |
_GL_CXXALIAS_SYS (memmem, void *, |
(void const *__haystack, size_t __haystack_len, |
@@ -152,7 +187,7 @@ _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " |
#if @GNULIB_MEMRCHR@ |
# if ! @HAVE_DECL_MEMRCHR@ |
_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
# endif |
/* On some systems, this function is defined as an overloaded function: |
@@ -161,7 +196,7 @@ _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) |
_GL_CXXALIAS_SYS_CAST2 (memrchr, |
void *, (void const *, int, size_t), |
void const *, (void const *, int, size_t)); |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); |
_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); |
@@ -182,7 +217,7 @@ _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " |
#if @GNULIB_RAWMEMCHR@ |
# if ! @HAVE_RAWMEMCHR@ |
_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
# endif |
/* On some systems, this function is defined as an overloaded function: |
@@ -191,7 +226,7 @@ _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) |
_GL_CXXALIAS_SYS_CAST2 (rawmemchr, |
void *, (void const *__s, int __c_in), |
void const *, (void const *__s, int __c_in)); |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); |
_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); |
@@ -229,6 +264,7 @@ _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " |
#if @GNULIB_STPNCPY@ |
# if @REPLACE_STPNCPY@ |
# if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
+# undef stpncpy |
# define stpncpy rpl_stpncpy |
# endif |
_GL_FUNCDECL_RPL (stpncpy, char *, |
@@ -270,18 +306,29 @@ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " |
/* Find the first occurrence of C in S or the final NUL byte. */ |
#if @GNULIB_STRCHRNUL@ |
-# if ! @HAVE_STRCHRNUL@ |
+# if @REPLACE_STRCHRNUL@ |
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
+# define strchrnul rpl_strchrnul |
+# endif |
+_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1))); |
+_GL_CXXALIAS_RPL (strchrnul, char *, |
+ (const char *str, int ch)); |
+# else |
+# if ! @HAVE_STRCHRNUL@ |
_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
-# endif |
+# endif |
/* On some systems, this function is defined as an overloaded function: |
extern "C++" { const char * std::strchrnul (const char *, int); } |
extern "C++" { char * std::strchrnul (char *, int); } */ |
_GL_CXXALIAS_SYS_CAST2 (strchrnul, |
char *, (char const *__s, int __c_in), |
char const *, (char const *__s, int __c_in)); |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# endif |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); |
_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); |
@@ -306,6 +353,10 @@ _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " |
_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); |
# else |
+# if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup |
+ /* strdup exists as a function and as a macro. Get rid of the macro. */ |
+# undef strdup |
+# endif |
# if !(@HAVE_DECL_STRDUP@ || defined strdup) |
_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); |
# endif |
@@ -378,13 +429,13 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - " |
# define strnlen rpl_strnlen |
# endif |
_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); |
# else |
# if ! @HAVE_DECL_STRNLEN@ |
_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
# endif |
_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); |
@@ -414,7 +465,7 @@ _GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings " |
#if @GNULIB_STRPBRK@ |
# if ! @HAVE_STRPBRK@ |
_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2))); |
# endif |
/* On some systems, this function is defined as an overloaded function: |
@@ -423,7 +474,7 @@ _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) |
_GL_CXXALIAS_SYS_CAST2 (strpbrk, |
char *, (char const *__s, char const *__accept), |
const char *, (char const *__s, char const *__accept)); |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); |
_GL_CXXALIASWARN1 (strpbrk, char const *, |
@@ -514,7 +565,7 @@ _GL_WARN_ON_USE (strsep, "strsep is unportable - " |
# define strstr rpl_strstr |
# endif |
_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) |
- __attribute__ ((__pure__)) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2))); |
_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); |
# else |
@@ -525,7 +576,7 @@ _GL_CXXALIAS_SYS_CAST2 (strstr, |
char *, (const char *haystack, const char *needle), |
const char *, (const char *haystack, const char *needle)); |
# endif |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); |
_GL_CXXALIASWARN1 (strstr, const char *, |
@@ -556,14 +607,16 @@ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " |
# endif |
_GL_FUNCDECL_RPL (strcasestr, char *, |
(const char *haystack, const char *needle) |
- __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 2))); |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1, 2))); |
_GL_CXXALIAS_RPL (strcasestr, char *, |
(const char *haystack, const char *needle)); |
# else |
# if ! @HAVE_STRCASESTR@ |
_GL_FUNCDECL_SYS (strcasestr, char *, |
(const char *haystack, const char *needle) |
- __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 2))); |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1, 2))); |
# endif |
/* On some systems, this function is defined as an overloaded function: |
extern "C++" { const char * strcasestr (const char *, const char *); } |
@@ -572,7 +625,7 @@ _GL_CXXALIAS_SYS_CAST2 (strcasestr, |
char *, (const char *haystack, const char *needle), |
const char *, (const char *haystack, const char *needle)); |
# endif |
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ |
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
&& (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); |
_GL_CXXALIASWARN1 (strcasestr, const char *, |
@@ -671,10 +724,14 @@ _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " |
# if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
# define mbslen rpl_mbslen |
# endif |
-_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1))); |
+_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); |
# else |
-_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1))); |
+_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) |
+ _GL_ATTRIBUTE_PURE |
+ _GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); |
# endif |
_GL_CXXALIASWARN (mbslen); |
@@ -684,6 +741,7 @@ _GL_CXXALIASWARN (mbslen); |
/* Return the number of multibyte characters in the character string starting |
at STRING and ending at STRING + LEN. */ |
_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1)); |
#endif |
@@ -697,10 +755,12 @@ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) |
# define mbschr rpl_mbschr /* avoid collision with HP-UX function */ |
# endif |
_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); |
# else |
_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); |
# endif |
@@ -712,15 +772,17 @@ _GL_CXXALIASWARN (mbschr); |
and return a pointer to it. Return NULL if C is not found in STRING. |
Unlike strrchr(), this function works correctly in multibyte locales with |
encodings such as GB18030. */ |
-# if defined __hpux |
+# if defined __hpux || defined __INTERIX |
# if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
-# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */ |
+# define mbsrchr rpl_mbsrchr /* avoid collision with system function */ |
# endif |
_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); |
# else |
_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1))); |
_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); |
# endif |
@@ -733,6 +795,7 @@ _GL_CXXALIASWARN (mbsrchr); |
Unlike strstr(), this function works correctly in multibyte locales with |
encodings different from UTF-8. */ |
_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
@@ -744,6 +807,7 @@ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) |
different lengths! |
Unlike strcasecmp(), this function works correctly in multibyte locales. */ |
_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
@@ -758,20 +822,21 @@ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) |
Unlike strncasecmp(), this function works correctly in multibyte locales. |
But beware that N is not a byte count but a character count! */ |
_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
#if @GNULIB_MBSPCASECMP@ |
/* Compare the initial segment of the character string STRING consisting of |
at most mbslen (PREFIX) characters with the character string PREFIX, |
- ignoring case, returning less than, equal to or greater than zero if this |
- initial segment is lexicographically less than, equal to or greater than |
- PREFIX. |
- Note: This function may, in multibyte locales, return 0 if STRING is of |
- smaller length than PREFIX! |
+ ignoring case. If the two match, return a pointer to the first byte |
+ after this prefix in STRING. Otherwise, return NULL. |
+ Note: This function may, in multibyte locales, return non-NULL if STRING |
+ is of smaller length than PREFIX! |
Unlike strncasecmp(), this function works correctly in multibyte |
locales. */ |
_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
@@ -782,6 +847,7 @@ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) |
strlen (haystack) < strlen (needle) ! |
Unlike strcasestr(), this function works correctly in multibyte locales. */ |
_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
@@ -792,6 +858,7 @@ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) |
if none exists. |
Unlike strcspn(), this function works correctly in multibyte locales. */ |
_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
@@ -805,10 +872,12 @@ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) |
# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ |
# endif |
_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2))); |
_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); |
# else |
_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2))); |
_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); |
# endif |
@@ -822,6 +891,7 @@ _GL_CXXALIASWARN (mbspbrk); |
if none exists. |
Unlike strspn(), this function works correctly in multibyte locales. */ |
_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2)); |
#endif |
@@ -885,6 +955,35 @@ _GL_WARN_ON_USE (strerror, "strerror is unportable - " |
"use gnulib module strerror to guarantee non-NULL result"); |
#endif |
+/* Map any int, typically from errno, into an error message. Multithread-safe. |
+ Uses the POSIX declaration, not the glibc declaration. */ |
+#if @GNULIB_STRERROR_R@ |
+# if @REPLACE_STRERROR_R@ |
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
+# undef strerror_r |
+# define strerror_r rpl_strerror_r |
+# endif |
+_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) |
+ _GL_ARG_NONNULL ((2))); |
+_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); |
+# else |
+# if !@HAVE_DECL_STRERROR_R@ |
+_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) |
+ _GL_ARG_NONNULL ((2))); |
+# endif |
+_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); |
+# endif |
+# if @HAVE_DECL_STRERROR_R@ |
+_GL_CXXALIASWARN (strerror_r); |
+# endif |
+#elif defined GNULIB_POSIXCHECK |
+# undef strerror_r |
+# if HAVE_RAW_DECL_STRERROR_R |
+_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " |
+ "use gnulib module strerror_r-posix for portability"); |
+# endif |
+#endif |
+ |
#if @GNULIB_STRSIGNAL@ |
# if @REPLACE_STRSIGNAL@ |
# if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
@@ -912,6 +1011,7 @@ _GL_WARN_ON_USE (strsignal, "strsignal is unportable - " |
#if @GNULIB_STRVERSCMP@ |
# if !@HAVE_STRVERSCMP@ |
_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) |
+ _GL_ATTRIBUTE_PURE |
_GL_ARG_NONNULL ((1, 2))); |
# endif |
_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); |
@@ -925,5 +1025,5 @@ _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " |
#endif |
-#endif /* _GL_STRING_H */ |
-#endif /* _GL_STRING_H */ |
+#endif /* _@GUARD_PREFIX@_STRING_H */ |
+#endif /* _@GUARD_PREFIX@_STRING_H */ |