diff options
| author | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2023-01-31 14:46:01 +0100 |
|---|---|---|
| committer | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2023-01-31 14:46:01 +0100 |
| commit | e8bd88d1fcded01ccd066572eeaae1b507989cb3 (patch) | |
| tree | c8e7be6c07c6f635f6e803e6a6ba9e7a95fee7c0 /gl/string.in.h | |
| parent | 2ad962c13473607ca0d974bfaa516a0ed53ec73d (diff) | |
| download | monitoring-plugins-e8bd88d1fcded01ccd066572eeaae1b507989cb3.tar.gz | |
Sync with the latest Gnulib code 668c0b8ffa
Diffstat (limited to 'gl/string.in.h')
| -rw-r--r-- | gl/string.in.h | 467 |
1 files changed, 380 insertions, 87 deletions
diff --git a/gl/string.in.h b/gl/string.in.h index d7a6c9c9..e993b2fb 100644 --- a/gl/string.in.h +++ b/gl/string.in.h | |||
| @@ -1,30 +1,46 @@ | |||
| 1 | /* A GNU-like <string.h>. | 1 | /* A GNU-like <string.h>. |
| 2 | 2 | ||
| 3 | Copyright (C) 1995-1996, 2001-2013 Free Software Foundation, Inc. | 3 | Copyright (C) 1995-1996, 2001-2023 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This program is free software; you can redistribute it and/or modify | 5 | This file is free software: you can redistribute it and/or modify |
| 6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU Lesser General Public License as |
| 7 | the Free Software Foundation; either version 3, or (at your option) | 7 | published by the Free Software Foundation; either version 2.1 of the |
| 8 | any later version. | 8 | License, or (at your option) any later version. |
| 9 | 9 | ||
| 10 | This program is distributed in the hope that it will be useful, | 10 | This file is distributed in the hope that it will be useful, |
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | GNU General Public License for more details. | 13 | GNU Lesser General Public License for more details. |
| 14 | 14 | ||
| 15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU Lesser General Public License |
| 16 | along with this program; if not, see <http://www.gnu.org/licenses/>. */ | 16 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ |
| 17 | |||
| 18 | #ifndef _@GUARD_PREFIX@_STRING_H | ||
| 19 | 17 | ||
| 20 | #if __GNUC__ >= 3 | 18 | #if __GNUC__ >= 3 |
| 21 | @PRAGMA_SYSTEM_HEADER@ | 19 | @PRAGMA_SYSTEM_HEADER@ |
| 22 | #endif | 20 | #endif |
| 23 | @PRAGMA_COLUMNS@ | 21 | @PRAGMA_COLUMNS@ |
| 24 | 22 | ||
| 23 | #if defined _GL_ALREADY_INCLUDING_STRING_H | ||
| 24 | /* Special invocation convention: | ||
| 25 | - On OS X/NetBSD we have a sequence of nested includes | ||
| 26 | <string.h> -> <strings.h> -> "string.h" | ||
| 27 | In this situation system _chk variants due to -D_FORTIFY_SOURCE | ||
| 28 | might be used after any replacements defined here. */ | ||
| 29 | |||
| 30 | #@INCLUDE_NEXT@ @NEXT_STRING_H@ | ||
| 31 | |||
| 32 | #else | ||
| 33 | /* Normal invocation convention. */ | ||
| 34 | |||
| 35 | #ifndef _@GUARD_PREFIX@_STRING_H | ||
| 36 | |||
| 37 | #define _GL_ALREADY_INCLUDING_STRING_H | ||
| 38 | |||
| 25 | /* The include_next requires a split double-inclusion guard. */ | 39 | /* The include_next requires a split double-inclusion guard. */ |
| 26 | #@INCLUDE_NEXT@ @NEXT_STRING_H@ | 40 | #@INCLUDE_NEXT@ @NEXT_STRING_H@ |
| 27 | 41 | ||
| 42 | #undef _GL_ALREADY_INCLUDING_STRING_H | ||
| 43 | |||
| 28 | #ifndef _@GUARD_PREFIX@_STRING_H | 44 | #ifndef _@GUARD_PREFIX@_STRING_H |
| 29 | #define _@GUARD_PREFIX@_STRING_H | 45 | #define _@GUARD_PREFIX@_STRING_H |
| 30 | 46 | ||
| @@ -36,14 +52,6 @@ | |||
| 36 | # include <wchar.h> | 52 | # include <wchar.h> |
| 37 | #endif | 53 | #endif |
| 38 | 54 | ||
| 39 | /* The __attribute__ feature is available in gcc versions 2.5 and later. | ||
| 40 | The attribute __pure__ was added in gcc 2.96. */ | ||
| 41 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) | ||
| 42 | # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) | ||
| 43 | #else | ||
| 44 | # define _GL_ATTRIBUTE_PURE /* empty */ | ||
| 45 | #endif | ||
| 46 | |||
| 47 | /* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */ | 55 | /* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */ |
| 48 | /* But in any case avoid namespace pollution on glibc systems. */ | 56 | /* But in any case avoid namespace pollution on glibc systems. */ |
| 49 | #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ | 57 | #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ |
| @@ -51,12 +59,122 @@ | |||
| 51 | # include <unistd.h> | 59 | # include <unistd.h> |
| 52 | #endif | 60 | #endif |
| 53 | 61 | ||
| 62 | /* AIX 7.2 declares ffsl and ffsll in <strings.h>, not in <string.h>. */ | ||
| 63 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
| 64 | #if ((@GNULIB_FFSL@ || @GNULIB_FFSLL@ || defined GNULIB_POSIXCHECK) \ | ||
| 65 | && defined _AIX) \ | ||
| 66 | && ! defined __GLIBC__ | ||
| 67 | # include <strings.h> | ||
| 68 | #endif | ||
| 69 | |||
| 70 | /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers | ||
| 71 | that can be freed by passing them as the Ith argument to the | ||
| 72 | function F. */ | ||
| 73 | #ifndef _GL_ATTRIBUTE_DEALLOC | ||
| 74 | # if __GNUC__ >= 11 | ||
| 75 | # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) | ||
| 76 | # else | ||
| 77 | # define _GL_ATTRIBUTE_DEALLOC(f, i) | ||
| 78 | # endif | ||
| 79 | #endif | ||
| 80 | |||
| 81 | /* _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that | ||
| 82 | can be freed via 'free'; it can be used only after declaring 'free'. */ | ||
| 83 | /* Applies to: functions. Cannot be used on inline functions. */ | ||
| 84 | #ifndef _GL_ATTRIBUTE_DEALLOC_FREE | ||
| 85 | # if defined __cplusplus && defined __GNUC__ && !defined __clang__ | ||
| 86 | /* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */ | ||
| 87 | # define _GL_ATTRIBUTE_DEALLOC_FREE \ | ||
| 88 | _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) | ||
| 89 | # else | ||
| 90 | # define _GL_ATTRIBUTE_DEALLOC_FREE \ | ||
| 91 | _GL_ATTRIBUTE_DEALLOC (free, 1) | ||
| 92 | # endif | ||
| 93 | #endif | ||
| 94 | |||
| 95 | /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly | ||
| 96 | allocated memory. */ | ||
| 97 | /* Applies to: functions. */ | ||
| 98 | #ifndef _GL_ATTRIBUTE_MALLOC | ||
| 99 | # if __GNUC__ >= 3 || defined __clang__ | ||
| 100 | # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) | ||
| 101 | # else | ||
| 102 | # define _GL_ATTRIBUTE_MALLOC | ||
| 103 | # endif | ||
| 104 | #endif | ||
| 105 | |||
| 106 | /* The __attribute__ feature is available in gcc versions 2.5 and later. | ||
| 107 | The attribute __pure__ was added in gcc 2.96. */ | ||
| 108 | #ifndef _GL_ATTRIBUTE_PURE | ||
| 109 | # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__ | ||
| 110 | # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) | ||
| 111 | # else | ||
| 112 | # define _GL_ATTRIBUTE_PURE /* empty */ | ||
| 113 | # endif | ||
| 114 | #endif | ||
| 115 | |||
| 54 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ | 116 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ |
| 55 | 117 | ||
| 56 | /* The definition of _GL_ARG_NONNULL is copied here. */ | 118 | /* The definition of _GL_ARG_NONNULL is copied here. */ |
| 57 | 119 | ||
| 58 | /* The definition of _GL_WARN_ON_USE is copied here. */ | 120 | /* The definition of _GL_WARN_ON_USE is copied here. */ |
| 59 | 121 | ||
| 122 | /* Make _GL_ATTRIBUTE_DEALLOC_FREE work, even though <stdlib.h> may not have | ||
| 123 | been included yet. */ | ||
| 124 | #if @GNULIB_FREE_POSIX@ | ||
| 125 | # if (@REPLACE_FREE@ && !defined free \ | ||
| 126 | && !(defined __cplusplus && defined GNULIB_NAMESPACE)) | ||
| 127 | /* We can't do '#define free rpl_free' here. */ | ||
| 128 | _GL_EXTERN_C void rpl_free (void *); | ||
| 129 | # undef _GL_ATTRIBUTE_DEALLOC_FREE | ||
| 130 | # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1) | ||
| 131 | # else | ||
| 132 | # if defined _MSC_VER && !defined free | ||
| 133 | _GL_EXTERN_C | ||
| 134 | # if defined _DLL | ||
| 135 | __declspec (dllimport) | ||
| 136 | # endif | ||
| 137 | void __cdecl free (void *); | ||
| 138 | # else | ||
| 139 | # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) | ||
| 140 | _GL_EXTERN_C void free (void *) throw (); | ||
| 141 | # else | ||
| 142 | _GL_EXTERN_C void free (void *); | ||
| 143 | # endif | ||
| 144 | # endif | ||
| 145 | # endif | ||
| 146 | #else | ||
| 147 | # if defined _MSC_VER && !defined free | ||
| 148 | _GL_EXTERN_C | ||
| 149 | # if defined _DLL | ||
| 150 | __declspec (dllimport) | ||
| 151 | # endif | ||
| 152 | void __cdecl free (void *); | ||
| 153 | # else | ||
| 154 | # if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2) | ||
| 155 | _GL_EXTERN_C void free (void *) throw (); | ||
| 156 | # else | ||
| 157 | _GL_EXTERN_C void free (void *); | ||
| 158 | # endif | ||
| 159 | # endif | ||
| 160 | #endif | ||
| 161 | |||
| 162 | /* Clear a block of memory. The compiler will not delete a call to | ||
| 163 | this function, even if the block is dead after the call. */ | ||
| 164 | #if @GNULIB_EXPLICIT_BZERO@ | ||
| 165 | # if ! @HAVE_EXPLICIT_BZERO@ | ||
| 166 | _GL_FUNCDECL_SYS (explicit_bzero, void, | ||
| 167 | (void *__dest, size_t __n) _GL_ARG_NONNULL ((1))); | ||
| 168 | # endif | ||
| 169 | _GL_CXXALIAS_SYS (explicit_bzero, void, (void *__dest, size_t __n)); | ||
| 170 | _GL_CXXALIASWARN (explicit_bzero); | ||
| 171 | #elif defined GNULIB_POSIXCHECK | ||
| 172 | # undef explicit_bzero | ||
| 173 | # if HAVE_RAW_DECL_EXPLICIT_BZERO | ||
| 174 | _GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is unportable - " | ||
| 175 | "use gnulib module explicit_bzero for portability"); | ||
| 176 | # endif | ||
| 177 | #endif | ||
| 60 | 178 | ||
| 61 | /* Find the index of the least-significant set bit. */ | 179 | /* Find the index of the least-significant set bit. */ |
| 62 | #if @GNULIB_FFSL@ | 180 | #if @GNULIB_FFSL@ |
| @@ -75,10 +193,18 @@ _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); | |||
| 75 | 193 | ||
| 76 | /* Find the index of the least-significant set bit. */ | 194 | /* Find the index of the least-significant set bit. */ |
| 77 | #if @GNULIB_FFSLL@ | 195 | #if @GNULIB_FFSLL@ |
| 78 | # if !@HAVE_FFSLL@ | 196 | # if @REPLACE_FFSLL@ |
| 197 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 198 | # define ffsll rpl_ffsll | ||
| 199 | # endif | ||
| 200 | _GL_FUNCDECL_RPL (ffsll, int, (long long int i)); | ||
| 201 | _GL_CXXALIAS_RPL (ffsll, int, (long long int i)); | ||
| 202 | # else | ||
| 203 | # if !@HAVE_FFSLL@ | ||
| 79 | _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); | 204 | _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); |
| 80 | # endif | 205 | # endif |
| 81 | _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); | 206 | _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); |
| 207 | # endif | ||
| 82 | _GL_CXXALIASWARN (ffsll); | 208 | _GL_CXXALIASWARN (ffsll); |
| 83 | #elif defined GNULIB_POSIXCHECK | 209 | #elif defined GNULIB_POSIXCHECK |
| 84 | # undef ffsll | 210 | # undef ffsll |
| @@ -88,10 +214,30 @@ _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); | |||
| 88 | #endif | 214 | #endif |
| 89 | 215 | ||
| 90 | 216 | ||
| 217 | #if @GNULIB_MDA_MEMCCPY@ | ||
| 218 | /* On native Windows, map 'memccpy' to '_memccpy', so that -loldnames is not | ||
| 219 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
| 220 | platforms by defining GNULIB_NAMESPACE::memccpy always. */ | ||
| 221 | # if defined _WIN32 && !defined __CYGWIN__ | ||
| 222 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 223 | # undef memccpy | ||
| 224 | # define memccpy _memccpy | ||
| 225 | # endif | ||
| 226 | _GL_CXXALIAS_MDA (memccpy, void *, | ||
| 227 | (void *dest, const void *src, int c, size_t n)); | ||
| 228 | # else | ||
| 229 | _GL_CXXALIAS_SYS (memccpy, void *, | ||
| 230 | (void *dest, const void *src, int c, size_t n)); | ||
| 231 | # endif | ||
| 232 | _GL_CXXALIASWARN (memccpy); | ||
| 233 | #endif | ||
| 234 | |||
| 235 | |||
| 91 | /* Return the first instance of C within N bytes of S, or NULL. */ | 236 | /* Return the first instance of C within N bytes of S, or NULL. */ |
| 92 | #if @GNULIB_MEMCHR@ | 237 | #if @GNULIB_MEMCHR@ |
| 93 | # if @REPLACE_MEMCHR@ | 238 | # if @REPLACE_MEMCHR@ |
| 94 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 239 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 240 | # undef memchr | ||
| 95 | # define memchr rpl_memchr | 241 | # define memchr rpl_memchr |
| 96 | # endif | 242 | # endif |
| 97 | _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) | 243 | _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) |
| @@ -99,11 +245,6 @@ _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) | |||
| 99 | _GL_ARG_NONNULL ((1))); | 245 | _GL_ARG_NONNULL ((1))); |
| 100 | _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); | 246 | _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); |
| 101 | # else | 247 | # else |
| 102 | # if ! @HAVE_MEMCHR@ | ||
| 103 | _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) | ||
| 104 | _GL_ATTRIBUTE_PURE | ||
| 105 | _GL_ARG_NONNULL ((1))); | ||
| 106 | # endif | ||
| 107 | /* On some systems, this function is defined as an overloaded function: | 248 | /* On some systems, this function is defined as an overloaded function: |
| 108 | extern "C" { const void * std::memchr (const void *, int, size_t); } | 249 | extern "C" { const void * std::memchr (const void *, int, size_t); } |
| 109 | extern "C++" { void * std::memchr (void *, int, size_t); } */ | 250 | extern "C++" { void * std::memchr (void *, int, size_t); } */ |
| @@ -112,11 +253,12 @@ _GL_CXXALIAS_SYS_CAST2 (memchr, | |||
| 112 | void const *, (void const *__s, int __c, size_t __n)); | 253 | void const *, (void const *__s, int __c, size_t __n)); |
| 113 | # endif | 254 | # endif |
| 114 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 255 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 115 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 256 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 116 | _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); | 257 | || defined __clang__) |
| 258 | _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n) throw ()); | ||
| 117 | _GL_CXXALIASWARN1 (memchr, void const *, | 259 | _GL_CXXALIASWARN1 (memchr, void const *, |
| 118 | (void const *__s, int __c, size_t __n)); | 260 | (void const *__s, int __c, size_t __n) throw ()); |
| 119 | # else | 261 | # elif __GLIBC__ >= 2 |
| 120 | _GL_CXXALIASWARN (memchr); | 262 | _GL_CXXALIASWARN (memchr); |
| 121 | # endif | 263 | # endif |
| 122 | #elif defined GNULIB_POSIXCHECK | 264 | #elif defined GNULIB_POSIXCHECK |
| @@ -197,9 +339,10 @@ _GL_CXXALIAS_SYS_CAST2 (memrchr, | |||
| 197 | void *, (void const *, int, size_t), | 339 | void *, (void const *, int, size_t), |
| 198 | void const *, (void const *, int, size_t)); | 340 | void const *, (void const *, int, size_t)); |
| 199 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 341 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 200 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 342 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 201 | _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); | 343 | || defined __clang__) |
| 202 | _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); | 344 | _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t) throw ()); |
| 345 | _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t) throw ()); | ||
| 203 | # else | 346 | # else |
| 204 | _GL_CXXALIASWARN (memrchr); | 347 | _GL_CXXALIASWARN (memrchr); |
| 205 | # endif | 348 | # endif |
| @@ -211,6 +354,23 @@ _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " | |||
| 211 | # endif | 354 | # endif |
| 212 | #endif | 355 | #endif |
| 213 | 356 | ||
| 357 | /* Overwrite a block of memory. The compiler will not optimize | ||
| 358 | effects away, even if the block is dead after the call. */ | ||
| 359 | #if @GNULIB_MEMSET_EXPLICIT@ | ||
| 360 | # if ! @HAVE_MEMSET_EXPLICIT@ | ||
| 361 | _GL_FUNCDECL_SYS (memset_explicit, void *, | ||
| 362 | (void *__dest, int __c, size_t __n) _GL_ARG_NONNULL ((1))); | ||
| 363 | # endif | ||
| 364 | _GL_CXXALIAS_SYS (memset_explicit, void *, (void *__dest, int __c, size_t __n)); | ||
| 365 | _GL_CXXALIASWARN (memset_explicit); | ||
| 366 | #elif defined GNULIB_POSIXCHECK | ||
| 367 | # undef memset_explicit | ||
| 368 | # if HAVE_RAW_DECL_MEMSET_EXPLICIT | ||
| 369 | _GL_WARN_ON_USE (memset_explicit, "memset_explicit is unportable - " | ||
| 370 | "use gnulib module memset_explicit for portability"); | ||
| 371 | # endif | ||
| 372 | #endif | ||
| 373 | |||
| 214 | /* Find the first occurrence of C in S. More efficient than | 374 | /* Find the first occurrence of C in S. More efficient than |
| 215 | memchr(S,C,N), at the expense of undefined behavior if C does not | 375 | memchr(S,C,N), at the expense of undefined behavior if C does not |
| 216 | occur within N bytes. */ | 376 | occur within N bytes. */ |
| @@ -227,9 +387,11 @@ _GL_CXXALIAS_SYS_CAST2 (rawmemchr, | |||
| 227 | void *, (void const *__s, int __c_in), | 387 | void *, (void const *__s, int __c_in), |
| 228 | void const *, (void const *__s, int __c_in)); | 388 | void const *, (void const *__s, int __c_in)); |
| 229 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 389 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 230 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 390 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 231 | _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); | 391 | || defined __clang__) |
| 232 | _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); | 392 | _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in) throw ()); |
| 393 | _GL_CXXALIASWARN1 (rawmemchr, void const *, | ||
| 394 | (void const *__s, int __c_in) throw ()); | ||
| 233 | # else | 395 | # else |
| 234 | _GL_CXXALIASWARN (rawmemchr); | 396 | _GL_CXXALIASWARN (rawmemchr); |
| 235 | # endif | 397 | # endif |
| @@ -299,9 +461,11 @@ _GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - " | |||
| 299 | GB18030 and the character to be searched is a digit. */ | 461 | GB18030 and the character to be searched is a digit. */ |
| 300 | # undef strchr | 462 | # undef strchr |
| 301 | /* Assume strchr is always declared. */ | 463 | /* Assume strchr is always declared. */ |
| 302 | _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " | 464 | _GL_WARN_ON_USE_CXX (strchr, |
| 303 | "in some multibyte locales - " | 465 | const char *, char *, (const char *, int), |
| 304 | "use mbschr if you care about internationalization"); | 466 | "strchr cannot work correctly on character strings " |
| 467 | "in some multibyte locales - " | ||
| 468 | "use mbschr if you care about internationalization"); | ||
| 305 | #endif | 469 | #endif |
| 306 | 470 | ||
| 307 | /* Find the first occurrence of C in S or the final NUL byte. */ | 471 | /* Find the first occurrence of C in S or the final NUL byte. */ |
| @@ -329,9 +493,11 @@ _GL_CXXALIAS_SYS_CAST2 (strchrnul, | |||
| 329 | char const *, (char const *__s, int __c_in)); | 493 | char const *, (char const *__s, int __c_in)); |
| 330 | # endif | 494 | # endif |
| 331 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 495 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 332 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 496 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 333 | _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); | 497 | || defined __clang__) |
| 334 | _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); | 498 | _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in) throw ()); |
| 499 | _GL_CXXALIASWARN1 (strchrnul, char const *, | ||
| 500 | (char const *__s, int __c_in) throw ()); | ||
| 335 | # else | 501 | # else |
| 336 | _GL_CXXALIASWARN (strchrnul); | 502 | _GL_CXXALIASWARN (strchrnul); |
| 337 | # endif | 503 | # endif |
| @@ -350,24 +516,62 @@ _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " | |||
| 350 | # undef strdup | 516 | # undef strdup |
| 351 | # define strdup rpl_strdup | 517 | # define strdup rpl_strdup |
| 352 | # endif | 518 | # endif |
| 353 | _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); | 519 | _GL_FUNCDECL_RPL (strdup, char *, |
| 520 | (char const *__s) | ||
| 521 | _GL_ARG_NONNULL ((1)) | ||
| 522 | _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); | ||
| 354 | _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); | 523 | _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); |
| 524 | # elif defined _WIN32 && !defined __CYGWIN__ | ||
| 525 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 526 | # undef strdup | ||
| 527 | # define strdup _strdup | ||
| 528 | # endif | ||
| 529 | _GL_CXXALIAS_MDA (strdup, char *, (char const *__s)); | ||
| 355 | # else | 530 | # else |
| 356 | # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup | 531 | # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup |
| 357 | /* strdup exists as a function and as a macro. Get rid of the macro. */ | 532 | /* strdup exists as a function and as a macro. Get rid of the macro. */ |
| 358 | # undef strdup | 533 | # undef strdup |
| 359 | # endif | 534 | # endif |
| 360 | # if !(@HAVE_DECL_STRDUP@ || defined strdup) | 535 | # if (!@HAVE_DECL_STRDUP@ || __GNUC__ >= 11) && !defined strdup |
| 361 | _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); | 536 | _GL_FUNCDECL_SYS (strdup, char *, |
| 537 | (char const *__s) | ||
| 538 | _GL_ARG_NONNULL ((1)) | ||
| 539 | _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); | ||
| 362 | # endif | 540 | # endif |
| 363 | _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); | 541 | _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); |
| 364 | # endif | 542 | # endif |
| 365 | _GL_CXXALIASWARN (strdup); | 543 | _GL_CXXALIASWARN (strdup); |
| 366 | #elif defined GNULIB_POSIXCHECK | 544 | #else |
| 367 | # undef strdup | 545 | # if __GNUC__ >= 11 && !defined strdup |
| 368 | # if HAVE_RAW_DECL_STRDUP | 546 | /* For -Wmismatched-dealloc: Associate strdup with free or rpl_free. */ |
| 547 | _GL_FUNCDECL_SYS (strdup, char *, | ||
| 548 | (char const *__s) | ||
| 549 | _GL_ARG_NONNULL ((1)) | ||
| 550 | _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); | ||
| 551 | # endif | ||
| 552 | # if defined GNULIB_POSIXCHECK | ||
| 553 | # undef strdup | ||
| 554 | # if HAVE_RAW_DECL_STRDUP | ||
| 369 | _GL_WARN_ON_USE (strdup, "strdup is unportable - " | 555 | _GL_WARN_ON_USE (strdup, "strdup is unportable - " |
| 370 | "use gnulib module strdup for portability"); | 556 | "use gnulib module strdup for portability"); |
| 557 | # endif | ||
| 558 | # elif @GNULIB_MDA_STRDUP@ | ||
| 559 | /* On native Windows, map 'creat' to '_creat', so that -loldnames is not | ||
| 560 | required. In C++ with GNULIB_NAMESPACE, avoid differences between | ||
| 561 | platforms by defining GNULIB_NAMESPACE::strdup always. */ | ||
| 562 | # if defined _WIN32 && !defined __CYGWIN__ | ||
| 563 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 564 | # undef strdup | ||
| 565 | # define strdup _strdup | ||
| 566 | # endif | ||
| 567 | _GL_CXXALIAS_MDA (strdup, char *, (char const *__s)); | ||
| 568 | # else | ||
| 569 | # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup | ||
| 570 | # undef strdup | ||
| 571 | # endif | ||
| 572 | _GL_CXXALIAS_SYS (strdup, char *, (char const *__s)); | ||
| 573 | # endif | ||
| 574 | _GL_CXXALIASWARN (strdup); | ||
| 371 | # endif | 575 | # endif |
| 372 | #endif | 576 | #endif |
| 373 | 577 | ||
| @@ -378,13 +582,18 @@ _GL_WARN_ON_USE (strdup, "strdup is unportable - " | |||
| 378 | # undef strncat | 582 | # undef strncat |
| 379 | # define strncat rpl_strncat | 583 | # define strncat rpl_strncat |
| 380 | # endif | 584 | # endif |
| 381 | _GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n) | 585 | _GL_FUNCDECL_RPL (strncat, char *, |
| 382 | _GL_ARG_NONNULL ((1, 2))); | 586 | (char *restrict dest, const char *restrict src, size_t n) |
| 383 | _GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n)); | 587 | _GL_ARG_NONNULL ((1, 2))); |
| 588 | _GL_CXXALIAS_RPL (strncat, char *, | ||
| 589 | (char *restrict dest, const char *restrict src, size_t n)); | ||
| 384 | # else | 590 | # else |
| 385 | _GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n)); | 591 | _GL_CXXALIAS_SYS (strncat, char *, |
| 592 | (char *restrict dest, const char *restrict src, size_t n)); | ||
| 386 | # endif | 593 | # endif |
| 594 | # if __GLIBC__ >= 2 | ||
| 387 | _GL_CXXALIASWARN (strncat); | 595 | _GL_CXXALIASWARN (strncat); |
| 596 | # endif | ||
| 388 | #elif defined GNULIB_POSIXCHECK | 597 | #elif defined GNULIB_POSIXCHECK |
| 389 | # undef strncat | 598 | # undef strncat |
| 390 | # if HAVE_RAW_DECL_STRNCAT | 599 | # if HAVE_RAW_DECL_STRNCAT |
| @@ -400,22 +609,35 @@ _GL_WARN_ON_USE (strncat, "strncat is unportable - " | |||
| 400 | # undef strndup | 609 | # undef strndup |
| 401 | # define strndup rpl_strndup | 610 | # define strndup rpl_strndup |
| 402 | # endif | 611 | # endif |
| 403 | _GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) | 612 | _GL_FUNCDECL_RPL (strndup, char *, |
| 404 | _GL_ARG_NONNULL ((1))); | 613 | (char const *__s, size_t __n) |
| 405 | _GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); | 614 | _GL_ARG_NONNULL ((1)) |
| 615 | _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); | ||
| 616 | _GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n)); | ||
| 406 | # else | 617 | # else |
| 407 | # if ! @HAVE_DECL_STRNDUP@ | 618 | # if !@HAVE_DECL_STRNDUP@ || (__GNUC__ >= 11 && !defined strndup) |
| 408 | _GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) | 619 | _GL_FUNCDECL_SYS (strndup, char *, |
| 409 | _GL_ARG_NONNULL ((1))); | 620 | (char const *__s, size_t __n) |
| 621 | _GL_ARG_NONNULL ((1)) | ||
| 622 | _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); | ||
| 410 | # endif | 623 | # endif |
| 411 | _GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); | 624 | _GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n)); |
| 412 | # endif | 625 | # endif |
| 413 | _GL_CXXALIASWARN (strndup); | 626 | _GL_CXXALIASWARN (strndup); |
| 414 | #elif defined GNULIB_POSIXCHECK | 627 | #else |
| 415 | # undef strndup | 628 | # if __GNUC__ >= 11 && !defined strndup |
| 416 | # if HAVE_RAW_DECL_STRNDUP | 629 | /* For -Wmismatched-dealloc: Associate strndup with free or rpl_free. */ |
| 630 | _GL_FUNCDECL_SYS (strndup, char *, | ||
| 631 | (char const *__s, size_t __n) | ||
| 632 | _GL_ARG_NONNULL ((1)) | ||
| 633 | _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE); | ||
| 634 | # endif | ||
| 635 | # if defined GNULIB_POSIXCHECK | ||
| 636 | # undef strndup | ||
| 637 | # if HAVE_RAW_DECL_STRNDUP | ||
| 417 | _GL_WARN_ON_USE (strndup, "strndup is unportable - " | 638 | _GL_WARN_ON_USE (strndup, "strndup is unportable - " |
| 418 | "use gnulib module strndup for portability"); | 639 | "use gnulib module strndup for portability"); |
| 640 | # endif | ||
| 419 | # endif | 641 | # endif |
| 420 | #endif | 642 | #endif |
| 421 | 643 | ||
| @@ -428,17 +650,17 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - " | |||
| 428 | # undef strnlen | 650 | # undef strnlen |
| 429 | # define strnlen rpl_strnlen | 651 | # define strnlen rpl_strnlen |
| 430 | # endif | 652 | # endif |
| 431 | _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) | 653 | _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen) |
| 432 | _GL_ATTRIBUTE_PURE | 654 | _GL_ATTRIBUTE_PURE |
| 433 | _GL_ARG_NONNULL ((1))); | 655 | _GL_ARG_NONNULL ((1))); |
| 434 | _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); | 656 | _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)); |
| 435 | # else | 657 | # else |
| 436 | # if ! @HAVE_DECL_STRNLEN@ | 658 | # if ! @HAVE_DECL_STRNLEN@ |
| 437 | _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) | 659 | _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen) |
| 438 | _GL_ATTRIBUTE_PURE | 660 | _GL_ATTRIBUTE_PURE |
| 439 | _GL_ARG_NONNULL ((1))); | 661 | _GL_ARG_NONNULL ((1))); |
| 440 | # endif | 662 | # endif |
| 441 | _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); | 663 | _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)); |
| 442 | # endif | 664 | # endif |
| 443 | _GL_CXXALIASWARN (strnlen); | 665 | _GL_CXXALIASWARN (strnlen); |
| 444 | #elif defined GNULIB_POSIXCHECK | 666 | #elif defined GNULIB_POSIXCHECK |
| @@ -475,11 +697,12 @@ _GL_CXXALIAS_SYS_CAST2 (strpbrk, | |||
| 475 | char *, (char const *__s, char const *__accept), | 697 | char *, (char const *__s, char const *__accept), |
| 476 | const char *, (char const *__s, char const *__accept)); | 698 | const char *, (char const *__s, char const *__accept)); |
| 477 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 699 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 478 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 700 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 479 | _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); | 701 | || defined __clang__) |
| 702 | _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept) throw ()); | ||
| 480 | _GL_CXXALIASWARN1 (strpbrk, char const *, | 703 | _GL_CXXALIASWARN1 (strpbrk, char const *, |
| 481 | (char const *__s, char const *__accept)); | 704 | (char const *__s, char const *__accept) throw ()); |
| 482 | # else | 705 | # elif __GLIBC__ >= 2 |
| 483 | _GL_CXXALIASWARN (strpbrk); | 706 | _GL_CXXALIASWARN (strpbrk); |
| 484 | # endif | 707 | # endif |
| 485 | # if defined GNULIB_POSIXCHECK | 708 | # if defined GNULIB_POSIXCHECK |
| @@ -488,15 +711,19 @@ _GL_CXXALIASWARN (strpbrk); | |||
| 488 | locale encoding is GB18030 and one of the characters to be searched is a | 711 | locale encoding is GB18030 and one of the characters to be searched is a |
| 489 | digit. */ | 712 | digit. */ |
| 490 | # undef strpbrk | 713 | # undef strpbrk |
| 491 | _GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings " | 714 | _GL_WARN_ON_USE_CXX (strpbrk, |
| 492 | "in multibyte locales - " | 715 | const char *, char *, (const char *, const char *), |
| 493 | "use mbspbrk if you care about internationalization"); | 716 | "strpbrk cannot work correctly on character strings " |
| 717 | "in multibyte locales - " | ||
| 718 | "use mbspbrk if you care about internationalization"); | ||
| 494 | # endif | 719 | # endif |
| 495 | #elif defined GNULIB_POSIXCHECK | 720 | #elif defined GNULIB_POSIXCHECK |
| 496 | # undef strpbrk | 721 | # undef strpbrk |
| 497 | # if HAVE_RAW_DECL_STRPBRK | 722 | # if HAVE_RAW_DECL_STRPBRK |
| 498 | _GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - " | 723 | _GL_WARN_ON_USE_CXX (strpbrk, |
| 499 | "use gnulib module strpbrk for portability"); | 724 | const char *, char *, (const char *, const char *), |
| 725 | "strpbrk is unportable - " | ||
| 726 | "use gnulib module strpbrk for portability"); | ||
| 500 | # endif | 727 | # endif |
| 501 | #endif | 728 | #endif |
| 502 | 729 | ||
| @@ -515,9 +742,11 @@ _GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings " | |||
| 515 | GB18030 and the character to be searched is a digit. */ | 742 | GB18030 and the character to be searched is a digit. */ |
| 516 | # undef strrchr | 743 | # undef strrchr |
| 517 | /* Assume strrchr is always declared. */ | 744 | /* Assume strrchr is always declared. */ |
| 518 | _GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings " | 745 | _GL_WARN_ON_USE_CXX (strrchr, |
| 519 | "in some multibyte locales - " | 746 | const char *, char *, (const char *, int), |
| 520 | "use mbsrchr if you care about internationalization"); | 747 | "strrchr cannot work correctly on character strings " |
| 748 | "in some multibyte locales - " | ||
| 749 | "use mbsrchr if you care about internationalization"); | ||
| 521 | #endif | 750 | #endif |
| 522 | 751 | ||
| 523 | /* Search the next delimiter (char listed in DELIM) starting at *STRINGP. | 752 | /* Search the next delimiter (char listed in DELIM) starting at *STRINGP. |
| @@ -577,11 +806,13 @@ _GL_CXXALIAS_SYS_CAST2 (strstr, | |||
| 577 | const char *, (const char *haystack, const char *needle)); | 806 | const char *, (const char *haystack, const char *needle)); |
| 578 | # endif | 807 | # endif |
| 579 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 808 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 580 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 809 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 581 | _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); | 810 | || defined __clang__) |
| 811 | _GL_CXXALIASWARN1 (strstr, char *, | ||
| 812 | (char *haystack, const char *needle) throw ()); | ||
| 582 | _GL_CXXALIASWARN1 (strstr, const char *, | 813 | _GL_CXXALIASWARN1 (strstr, const char *, |
| 583 | (const char *haystack, const char *needle)); | 814 | (const char *haystack, const char *needle) throw ()); |
| 584 | # else | 815 | # elif __GLIBC__ >= 2 |
| 585 | _GL_CXXALIASWARN (strstr); | 816 | _GL_CXXALIASWARN (strstr); |
| 586 | # endif | 817 | # endif |
| 587 | #elif defined GNULIB_POSIXCHECK | 818 | #elif defined GNULIB_POSIXCHECK |
| @@ -626,10 +857,12 @@ _GL_CXXALIAS_SYS_CAST2 (strcasestr, | |||
| 626 | const char *, (const char *haystack, const char *needle)); | 857 | const char *, (const char *haystack, const char *needle)); |
| 627 | # endif | 858 | # endif |
| 628 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | 859 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 629 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 860 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4) \ |
| 630 | _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); | 861 | || defined __clang__) |
| 862 | _GL_CXXALIASWARN1 (strcasestr, char *, | ||
| 863 | (char *haystack, const char *needle) throw ()); | ||
| 631 | _GL_CXXALIASWARN1 (strcasestr, const char *, | 864 | _GL_CXXALIASWARN1 (strcasestr, const char *, |
| 632 | (const char *haystack, const char *needle)); | 865 | (const char *haystack, const char *needle) throw ()); |
| 633 | # else | 866 | # else |
| 634 | _GL_CXXALIASWARN (strcasestr); | 867 | _GL_CXXALIASWARN (strcasestr); |
| 635 | # endif | 868 | # endif |
| @@ -660,7 +893,7 @@ _GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character " | |||
| 660 | This is a variant of strtok() that is multithread-safe. | 893 | This is a variant of strtok() that is multithread-safe. |
| 661 | 894 | ||
| 662 | For the POSIX documentation for this function, see: | 895 | For the POSIX documentation for this function, see: |
| 663 | http://www.opengroup.org/susv3xsh/strtok.html | 896 | https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html |
| 664 | 897 | ||
| 665 | Caveat: It modifies the original string. | 898 | Caveat: It modifies the original string. |
| 666 | Caveat: These functions cannot be used on constant strings. | 899 | Caveat: These functions cannot be used on constant strings. |
| @@ -734,7 +967,9 @@ _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) | |||
| 734 | _GL_ARG_NONNULL ((1))); | 967 | _GL_ARG_NONNULL ((1))); |
| 735 | _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); | 968 | _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); |
| 736 | # endif | 969 | # endif |
| 970 | # if __GLIBC__ >= 2 | ||
| 737 | _GL_CXXALIASWARN (mbslen); | 971 | _GL_CXXALIASWARN (mbslen); |
| 972 | # endif | ||
| 738 | #endif | 973 | #endif |
| 739 | 974 | ||
| 740 | #if @GNULIB_MBSNLEN@ | 975 | #if @GNULIB_MBSNLEN@ |
| @@ -931,7 +1166,8 @@ _GL_EXTERN_C char * mbssep (char **stringp, const char *delim) | |||
| 931 | Caveat: The identity of the delimiting character is lost. | 1166 | Caveat: The identity of the delimiting character is lost. |
| 932 | 1167 | ||
| 933 | See also mbssep(). */ | 1168 | See also mbssep(). */ |
| 934 | _GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr) | 1169 | _GL_EXTERN_C char * mbstok_r (char *restrict string, const char *delim, |
| 1170 | char **save_ptr) | ||
| 935 | _GL_ARG_NONNULL ((2, 3)); | 1171 | _GL_ARG_NONNULL ((2, 3)); |
| 936 | #endif | 1172 | #endif |
| 937 | 1173 | ||
| @@ -947,7 +1183,9 @@ _GL_CXXALIAS_RPL (strerror, char *, (int)); | |||
| 947 | # else | 1183 | # else |
| 948 | _GL_CXXALIAS_SYS (strerror, char *, (int)); | 1184 | _GL_CXXALIAS_SYS (strerror, char *, (int)); |
| 949 | # endif | 1185 | # endif |
| 1186 | # if __GLIBC__ >= 2 | ||
| 950 | _GL_CXXALIASWARN (strerror); | 1187 | _GL_CXXALIASWARN (strerror); |
| 1188 | # endif | ||
| 951 | #elif defined GNULIB_POSIXCHECK | 1189 | #elif defined GNULIB_POSIXCHECK |
| 952 | # undef strerror | 1190 | # undef strerror |
| 953 | /* Assume strerror is always declared. */ | 1191 | /* Assume strerror is always declared. */ |
| @@ -984,6 +1222,60 @@ _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " | |||
| 984 | # endif | 1222 | # endif |
| 985 | #endif | 1223 | #endif |
| 986 | 1224 | ||
| 1225 | /* Return the name of the system error code ERRNUM. */ | ||
| 1226 | #if @GNULIB_STRERRORNAME_NP@ | ||
| 1227 | # if @REPLACE_STRERRORNAME_NP@ | ||
| 1228 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 1229 | # undef strerrorname_np | ||
| 1230 | # define strerrorname_np rpl_strerrorname_np | ||
| 1231 | # endif | ||
| 1232 | _GL_FUNCDECL_RPL (strerrorname_np, const char *, (int errnum)); | ||
| 1233 | _GL_CXXALIAS_RPL (strerrorname_np, const char *, (int errnum)); | ||
| 1234 | # else | ||
| 1235 | # if !@HAVE_STRERRORNAME_NP@ | ||
| 1236 | _GL_FUNCDECL_SYS (strerrorname_np, const char *, (int errnum)); | ||
| 1237 | # endif | ||
| 1238 | _GL_CXXALIAS_SYS (strerrorname_np, const char *, (int errnum)); | ||
| 1239 | # endif | ||
| 1240 | _GL_CXXALIASWARN (strerrorname_np); | ||
| 1241 | #elif defined GNULIB_POSIXCHECK | ||
| 1242 | # undef strerrorname_np | ||
| 1243 | # if HAVE_RAW_DECL_STRERRORNAME_NP | ||
| 1244 | _GL_WARN_ON_USE (strerrorname_np, "strerrorname_np is unportable - " | ||
| 1245 | "use gnulib module strerrorname_np for portability"); | ||
| 1246 | # endif | ||
| 1247 | #endif | ||
| 1248 | |||
| 1249 | /* Return an abbreviation string for the signal number SIG. */ | ||
| 1250 | #if @GNULIB_SIGABBREV_NP@ | ||
| 1251 | # if ! @HAVE_SIGABBREV_NP@ | ||
| 1252 | _GL_FUNCDECL_SYS (sigabbrev_np, const char *, (int sig)); | ||
| 1253 | # endif | ||
| 1254 | _GL_CXXALIAS_SYS (sigabbrev_np, const char *, (int sig)); | ||
| 1255 | _GL_CXXALIASWARN (sigabbrev_np); | ||
| 1256 | #elif defined GNULIB_POSIXCHECK | ||
| 1257 | # undef sigabbrev_np | ||
| 1258 | # if HAVE_RAW_DECL_SIGABBREV_NP | ||
| 1259 | _GL_WARN_ON_USE (sigabbrev_np, "sigabbrev_np is unportable - " | ||
| 1260 | "use gnulib module sigabbrev_np for portability"); | ||
| 1261 | # endif | ||
| 1262 | #endif | ||
| 1263 | |||
| 1264 | /* Return an English description string for the signal number SIG. */ | ||
| 1265 | #if @GNULIB_SIGDESCR_NP@ | ||
| 1266 | # if ! @HAVE_SIGDESCR_NP@ | ||
| 1267 | _GL_FUNCDECL_SYS (sigdescr_np, const char *, (int sig)); | ||
| 1268 | # endif | ||
| 1269 | _GL_CXXALIAS_SYS (sigdescr_np, const char *, (int sig)); | ||
| 1270 | _GL_CXXALIASWARN (sigdescr_np); | ||
| 1271 | #elif defined GNULIB_POSIXCHECK | ||
| 1272 | # undef sigdescr_np | ||
| 1273 | # if HAVE_RAW_DECL_SIGDESCR_NP | ||
| 1274 | _GL_WARN_ON_USE (sigdescr_np, "sigdescr_np is unportable - " | ||
| 1275 | "use gnulib module sigdescr_np for portability"); | ||
| 1276 | # endif | ||
| 1277 | #endif | ||
| 1278 | |||
| 987 | #if @GNULIB_STRSIGNAL@ | 1279 | #if @GNULIB_STRSIGNAL@ |
| 988 | # if @REPLACE_STRSIGNAL@ | 1280 | # if @REPLACE_STRSIGNAL@ |
| 989 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 1281 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| @@ -1027,3 +1319,4 @@ _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " | |||
| 1027 | 1319 | ||
| 1028 | #endif /* _@GUARD_PREFIX@_STRING_H */ | 1320 | #endif /* _@GUARD_PREFIX@_STRING_H */ |
| 1029 | #endif /* _@GUARD_PREFIX@_STRING_H */ | 1321 | #endif /* _@GUARD_PREFIX@_STRING_H */ |
| 1322 | #endif | ||
