diff options
Diffstat (limited to 'gl/string.in.h')
| -rw-r--r-- | gl/string.in.h | 196 |
1 files changed, 148 insertions, 48 deletions
diff --git a/gl/string.in.h b/gl/string.in.h index 13c0f095..d7a6c9c9 100644 --- a/gl/string.in.h +++ b/gl/string.in.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* A GNU-like <string.h>. | 1 | /* A GNU-like <string.h>. |
| 2 | 2 | ||
| 3 | Copyright (C) 1995-1996, 2001-2010 Free Software Foundation, Inc. | 3 | Copyright (C) 1995-1996, 2001-2013 Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This program is free software; you can redistribute it and/or modify | 5 | This program 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 General Public License as published by |
| @@ -13,20 +13,20 @@ | |||
| 13 | GNU General Public License for more details. | 13 | GNU 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 General Public License |
| 16 | along with this program; if not, write to the Free Software Foundation, | 16 | along with this program; if not, see <http://www.gnu.org/licenses/>. */ |
| 17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
| 18 | 17 | ||
| 19 | #ifndef _GL_STRING_H | 18 | #ifndef _@GUARD_PREFIX@_STRING_H |
| 20 | 19 | ||
| 21 | #if __GNUC__ >= 3 | 20 | #if __GNUC__ >= 3 |
| 22 | @PRAGMA_SYSTEM_HEADER@ | 21 | @PRAGMA_SYSTEM_HEADER@ |
| 23 | #endif | 22 | #endif |
| 23 | @PRAGMA_COLUMNS@ | ||
| 24 | 24 | ||
| 25 | /* The include_next requires a split double-inclusion guard. */ | 25 | /* The include_next requires a split double-inclusion guard. */ |
| 26 | #@INCLUDE_NEXT@ @NEXT_STRING_H@ | 26 | #@INCLUDE_NEXT@ @NEXT_STRING_H@ |
| 27 | 27 | ||
| 28 | #ifndef _GL_STRING_H | 28 | #ifndef _@GUARD_PREFIX@_STRING_H |
| 29 | #define _GL_STRING_H | 29 | #define _@GUARD_PREFIX@_STRING_H |
| 30 | 30 | ||
| 31 | /* NetBSD 5.0 mis-defines NULL. */ | 31 | /* NetBSD 5.0 mis-defines NULL. */ |
| 32 | #include <stddef.h> | 32 | #include <stddef.h> |
| @@ -36,17 +36,20 @@ | |||
| 36 | # include <wchar.h> | 36 | # include <wchar.h> |
| 37 | #endif | 37 | #endif |
| 38 | 38 | ||
| 39 | #ifndef __attribute__ | 39 | /* The __attribute__ feature is available in gcc versions 2.5 and later. |
| 40 | /* This 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__ < 5) | 41 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) |
| 42 | # define __attribute__(Spec) /* empty */ | 42 | # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) |
| 43 | # endif | 43 | #else |
| 44 | /* The attribute __pure__ was added in gcc 2.96. */ | 44 | # define _GL_ATTRIBUTE_PURE /* empty */ |
| 45 | # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) | ||
| 46 | # define __pure__ /* empty */ | ||
| 47 | # endif | ||
| 48 | #endif | 45 | #endif |
| 49 | 46 | ||
| 47 | /* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */ | ||
| 48 | /* But in any case avoid namespace pollution on glibc systems. */ | ||
| 49 | #if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \ | ||
| 50 | && ! defined __GLIBC__ | ||
| 51 | # include <unistd.h> | ||
| 52 | #endif | ||
| 50 | 53 | ||
| 51 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ | 54 | /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ |
| 52 | 55 | ||
| @@ -55,6 +58,36 @@ | |||
| 55 | /* The definition of _GL_WARN_ON_USE is copied here. */ | 58 | /* The definition of _GL_WARN_ON_USE is copied here. */ |
| 56 | 59 | ||
| 57 | 60 | ||
| 61 | /* Find the index of the least-significant set bit. */ | ||
| 62 | #if @GNULIB_FFSL@ | ||
| 63 | # if !@HAVE_FFSL@ | ||
| 64 | _GL_FUNCDECL_SYS (ffsl, int, (long int i)); | ||
| 65 | # endif | ||
| 66 | _GL_CXXALIAS_SYS (ffsl, int, (long int i)); | ||
| 67 | _GL_CXXALIASWARN (ffsl); | ||
| 68 | #elif defined GNULIB_POSIXCHECK | ||
| 69 | # undef ffsl | ||
| 70 | # if HAVE_RAW_DECL_FFSL | ||
| 71 | _GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module"); | ||
| 72 | # endif | ||
| 73 | #endif | ||
| 74 | |||
| 75 | |||
| 76 | /* Find the index of the least-significant set bit. */ | ||
| 77 | #if @GNULIB_FFSLL@ | ||
| 78 | # if !@HAVE_FFSLL@ | ||
| 79 | _GL_FUNCDECL_SYS (ffsll, int, (long long int i)); | ||
| 80 | # endif | ||
| 81 | _GL_CXXALIAS_SYS (ffsll, int, (long long int i)); | ||
| 82 | _GL_CXXALIASWARN (ffsll); | ||
| 83 | #elif defined GNULIB_POSIXCHECK | ||
| 84 | # undef ffsll | ||
| 85 | # if HAVE_RAW_DECL_FFSLL | ||
| 86 | _GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module"); | ||
| 87 | # endif | ||
| 88 | #endif | ||
| 89 | |||
| 90 | |||
| 58 | /* Return the first instance of C within N bytes of S, or NULL. */ | 91 | /* Return the first instance of C within N bytes of S, or NULL. */ |
| 59 | #if @GNULIB_MEMCHR@ | 92 | #if @GNULIB_MEMCHR@ |
| 60 | # if @REPLACE_MEMCHR@ | 93 | # if @REPLACE_MEMCHR@ |
| @@ -62,13 +95,13 @@ | |||
| 62 | # define memchr rpl_memchr | 95 | # define memchr rpl_memchr |
| 63 | # endif | 96 | # endif |
| 64 | _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) | 97 | _GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n) |
| 65 | __attribute__ ((__pure__)) | 98 | _GL_ATTRIBUTE_PURE |
| 66 | _GL_ARG_NONNULL ((1))); | 99 | _GL_ARG_NONNULL ((1))); |
| 67 | _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); | 100 | _GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n)); |
| 68 | # else | 101 | # else |
| 69 | # if ! @HAVE_MEMCHR@ | 102 | # if ! @HAVE_MEMCHR@ |
| 70 | _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) | 103 | _GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n) |
| 71 | __attribute__ ((__pure__)) | 104 | _GL_ATTRIBUTE_PURE |
| 72 | _GL_ARG_NONNULL ((1))); | 105 | _GL_ARG_NONNULL ((1))); |
| 73 | # endif | 106 | # endif |
| 74 | /* On some systems, this function is defined as an overloaded function: | 107 | /* On some systems, this function is defined as an overloaded function: |
| @@ -78,7 +111,7 @@ _GL_CXXALIAS_SYS_CAST2 (memchr, | |||
| 78 | void *, (void const *__s, int __c, size_t __n), | 111 | void *, (void const *__s, int __c, size_t __n), |
| 79 | void const *, (void const *__s, int __c, size_t __n)); | 112 | void const *, (void const *__s, int __c, size_t __n)); |
| 80 | # endif | 113 | # endif |
| 81 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 114 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 82 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 115 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 83 | _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); | 116 | _GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n)); |
| 84 | _GL_CXXALIASWARN1 (memchr, void const *, | 117 | _GL_CXXALIASWARN1 (memchr, void const *, |
| @@ -102,7 +135,8 @@ _GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - " | |||
| 102 | _GL_FUNCDECL_RPL (memmem, void *, | 135 | _GL_FUNCDECL_RPL (memmem, void *, |
| 103 | (void const *__haystack, size_t __haystack_len, | 136 | (void const *__haystack, size_t __haystack_len, |
| 104 | void const *__needle, size_t __needle_len) | 137 | void const *__needle, size_t __needle_len) |
| 105 | __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 3))); | 138 | _GL_ATTRIBUTE_PURE |
| 139 | _GL_ARG_NONNULL ((1, 3))); | ||
| 106 | _GL_CXXALIAS_RPL (memmem, void *, | 140 | _GL_CXXALIAS_RPL (memmem, void *, |
| 107 | (void const *__haystack, size_t __haystack_len, | 141 | (void const *__haystack, size_t __haystack_len, |
| 108 | void const *__needle, size_t __needle_len)); | 142 | void const *__needle, size_t __needle_len)); |
| @@ -111,7 +145,8 @@ _GL_CXXALIAS_RPL (memmem, void *, | |||
| 111 | _GL_FUNCDECL_SYS (memmem, void *, | 145 | _GL_FUNCDECL_SYS (memmem, void *, |
| 112 | (void const *__haystack, size_t __haystack_len, | 146 | (void const *__haystack, size_t __haystack_len, |
| 113 | void const *__needle, size_t __needle_len) | 147 | void const *__needle, size_t __needle_len) |
| 114 | __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 3))); | 148 | _GL_ATTRIBUTE_PURE |
| 149 | _GL_ARG_NONNULL ((1, 3))); | ||
| 115 | # endif | 150 | # endif |
| 116 | _GL_CXXALIAS_SYS (memmem, void *, | 151 | _GL_CXXALIAS_SYS (memmem, void *, |
| 117 | (void const *__haystack, size_t __haystack_len, | 152 | (void const *__haystack, size_t __haystack_len, |
| @@ -152,7 +187,7 @@ _GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - " | |||
| 152 | #if @GNULIB_MEMRCHR@ | 187 | #if @GNULIB_MEMRCHR@ |
| 153 | # if ! @HAVE_DECL_MEMRCHR@ | 188 | # if ! @HAVE_DECL_MEMRCHR@ |
| 154 | _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) | 189 | _GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t) |
| 155 | __attribute__ ((__pure__)) | 190 | _GL_ATTRIBUTE_PURE |
| 156 | _GL_ARG_NONNULL ((1))); | 191 | _GL_ARG_NONNULL ((1))); |
| 157 | # endif | 192 | # endif |
| 158 | /* On some systems, this function is defined as an overloaded function: | 193 | /* 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) | |||
| 161 | _GL_CXXALIAS_SYS_CAST2 (memrchr, | 196 | _GL_CXXALIAS_SYS_CAST2 (memrchr, |
| 162 | void *, (void const *, int, size_t), | 197 | void *, (void const *, int, size_t), |
| 163 | void const *, (void const *, int, size_t)); | 198 | void const *, (void const *, int, size_t)); |
| 164 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 199 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 165 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 200 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 166 | _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); | 201 | _GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t)); |
| 167 | _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); | 202 | _GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t)); |
| @@ -182,7 +217,7 @@ _GL_WARN_ON_USE (memrchr, "memrchr is unportable - " | |||
| 182 | #if @GNULIB_RAWMEMCHR@ | 217 | #if @GNULIB_RAWMEMCHR@ |
| 183 | # if ! @HAVE_RAWMEMCHR@ | 218 | # if ! @HAVE_RAWMEMCHR@ |
| 184 | _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) | 219 | _GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in) |
| 185 | __attribute__ ((__pure__)) | 220 | _GL_ATTRIBUTE_PURE |
| 186 | _GL_ARG_NONNULL ((1))); | 221 | _GL_ARG_NONNULL ((1))); |
| 187 | # endif | 222 | # endif |
| 188 | /* On some systems, this function is defined as an overloaded function: | 223 | /* 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) | |||
| 191 | _GL_CXXALIAS_SYS_CAST2 (rawmemchr, | 226 | _GL_CXXALIAS_SYS_CAST2 (rawmemchr, |
| 192 | void *, (void const *__s, int __c_in), | 227 | void *, (void const *__s, int __c_in), |
| 193 | void const *, (void const *__s, int __c_in)); | 228 | void const *, (void const *__s, int __c_in)); |
| 194 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 229 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 195 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 230 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 196 | _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); | 231 | _GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in)); |
| 197 | _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); | 232 | _GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in)); |
| @@ -229,6 +264,7 @@ _GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - " | |||
| 229 | #if @GNULIB_STPNCPY@ | 264 | #if @GNULIB_STPNCPY@ |
| 230 | # if @REPLACE_STPNCPY@ | 265 | # if @REPLACE_STPNCPY@ |
| 231 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 266 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 267 | # undef stpncpy | ||
| 232 | # define stpncpy rpl_stpncpy | 268 | # define stpncpy rpl_stpncpy |
| 233 | # endif | 269 | # endif |
| 234 | _GL_FUNCDECL_RPL (stpncpy, char *, | 270 | _GL_FUNCDECL_RPL (stpncpy, char *, |
| @@ -270,18 +306,29 @@ _GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings " | |||
| 270 | 306 | ||
| 271 | /* Find the first occurrence of C in S or the final NUL byte. */ | 307 | /* Find the first occurrence of C in S or the final NUL byte. */ |
| 272 | #if @GNULIB_STRCHRNUL@ | 308 | #if @GNULIB_STRCHRNUL@ |
| 273 | # if ! @HAVE_STRCHRNUL@ | 309 | # if @REPLACE_STRCHRNUL@ |
| 310 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 311 | # define strchrnul rpl_strchrnul | ||
| 312 | # endif | ||
| 313 | _GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in) | ||
| 314 | _GL_ATTRIBUTE_PURE | ||
| 315 | _GL_ARG_NONNULL ((1))); | ||
| 316 | _GL_CXXALIAS_RPL (strchrnul, char *, | ||
| 317 | (const char *str, int ch)); | ||
| 318 | # else | ||
| 319 | # if ! @HAVE_STRCHRNUL@ | ||
| 274 | _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) | 320 | _GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in) |
| 275 | __attribute__ ((__pure__)) | 321 | _GL_ATTRIBUTE_PURE |
| 276 | _GL_ARG_NONNULL ((1))); | 322 | _GL_ARG_NONNULL ((1))); |
| 277 | # endif | 323 | # endif |
| 278 | /* On some systems, this function is defined as an overloaded function: | 324 | /* On some systems, this function is defined as an overloaded function: |
| 279 | extern "C++" { const char * std::strchrnul (const char *, int); } | 325 | extern "C++" { const char * std::strchrnul (const char *, int); } |
| 280 | extern "C++" { char * std::strchrnul (char *, int); } */ | 326 | extern "C++" { char * std::strchrnul (char *, int); } */ |
| 281 | _GL_CXXALIAS_SYS_CAST2 (strchrnul, | 327 | _GL_CXXALIAS_SYS_CAST2 (strchrnul, |
| 282 | char *, (char const *__s, int __c_in), | 328 | char *, (char const *__s, int __c_in), |
| 283 | char const *, (char const *__s, int __c_in)); | 329 | char const *, (char const *__s, int __c_in)); |
| 284 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 330 | # endif |
| 331 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ | ||
| 285 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 332 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 286 | _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); | 333 | _GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in)); |
| 287 | _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); | 334 | _GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in)); |
| @@ -306,6 +353,10 @@ _GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - " | |||
| 306 | _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); | 353 | _GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); |
| 307 | _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); | 354 | _GL_CXXALIAS_RPL (strdup, char *, (char const *__s)); |
| 308 | # else | 355 | # else |
| 356 | # if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup | ||
| 357 | /* strdup exists as a function and as a macro. Get rid of the macro. */ | ||
| 358 | # undef strdup | ||
| 359 | # endif | ||
| 309 | # if !(@HAVE_DECL_STRDUP@ || defined strdup) | 360 | # if !(@HAVE_DECL_STRDUP@ || defined strdup) |
| 310 | _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); | 361 | _GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1))); |
| 311 | # endif | 362 | # endif |
| @@ -378,13 +429,13 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - " | |||
| 378 | # define strnlen rpl_strnlen | 429 | # define strnlen rpl_strnlen |
| 379 | # endif | 430 | # endif |
| 380 | _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) | 431 | _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) |
| 381 | __attribute__ ((__pure__)) | 432 | _GL_ATTRIBUTE_PURE |
| 382 | _GL_ARG_NONNULL ((1))); | 433 | _GL_ARG_NONNULL ((1))); |
| 383 | _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); | 434 | _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); |
| 384 | # else | 435 | # else |
| 385 | # if ! @HAVE_DECL_STRNLEN@ | 436 | # if ! @HAVE_DECL_STRNLEN@ |
| 386 | _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) | 437 | _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) |
| 387 | __attribute__ ((__pure__)) | 438 | _GL_ATTRIBUTE_PURE |
| 388 | _GL_ARG_NONNULL ((1))); | 439 | _GL_ARG_NONNULL ((1))); |
| 389 | # endif | 440 | # endif |
| 390 | _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); | 441 | _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 " | |||
| 414 | #if @GNULIB_STRPBRK@ | 465 | #if @GNULIB_STRPBRK@ |
| 415 | # if ! @HAVE_STRPBRK@ | 466 | # if ! @HAVE_STRPBRK@ |
| 416 | _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) | 467 | _GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept) |
| 417 | __attribute__ ((__pure__)) | 468 | _GL_ATTRIBUTE_PURE |
| 418 | _GL_ARG_NONNULL ((1, 2))); | 469 | _GL_ARG_NONNULL ((1, 2))); |
| 419 | # endif | 470 | # endif |
| 420 | /* On some systems, this function is defined as an overloaded function: | 471 | /* 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) | |||
| 423 | _GL_CXXALIAS_SYS_CAST2 (strpbrk, | 474 | _GL_CXXALIAS_SYS_CAST2 (strpbrk, |
| 424 | char *, (char const *__s, char const *__accept), | 475 | char *, (char const *__s, char const *__accept), |
| 425 | const char *, (char const *__s, char const *__accept)); | 476 | const char *, (char const *__s, char const *__accept)); |
| 426 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 477 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 427 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 478 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 428 | _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); | 479 | _GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept)); |
| 429 | _GL_CXXALIASWARN1 (strpbrk, char const *, | 480 | _GL_CXXALIASWARN1 (strpbrk, char const *, |
| @@ -514,7 +565,7 @@ _GL_WARN_ON_USE (strsep, "strsep is unportable - " | |||
| 514 | # define strstr rpl_strstr | 565 | # define strstr rpl_strstr |
| 515 | # endif | 566 | # endif |
| 516 | _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) | 567 | _GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle) |
| 517 | __attribute__ ((__pure__)) | 568 | _GL_ATTRIBUTE_PURE |
| 518 | _GL_ARG_NONNULL ((1, 2))); | 569 | _GL_ARG_NONNULL ((1, 2))); |
| 519 | _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); | 570 | _GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle)); |
| 520 | # else | 571 | # else |
| @@ -525,7 +576,7 @@ _GL_CXXALIAS_SYS_CAST2 (strstr, | |||
| 525 | char *, (const char *haystack, const char *needle), | 576 | char *, (const char *haystack, const char *needle), |
| 526 | const char *, (const char *haystack, const char *needle)); | 577 | const char *, (const char *haystack, const char *needle)); |
| 527 | # endif | 578 | # endif |
| 528 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 579 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 529 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 580 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 530 | _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); | 581 | _GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle)); |
| 531 | _GL_CXXALIASWARN1 (strstr, const char *, | 582 | _GL_CXXALIASWARN1 (strstr, const char *, |
| @@ -556,14 +607,16 @@ _GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot " | |||
| 556 | # endif | 607 | # endif |
| 557 | _GL_FUNCDECL_RPL (strcasestr, char *, | 608 | _GL_FUNCDECL_RPL (strcasestr, char *, |
| 558 | (const char *haystack, const char *needle) | 609 | (const char *haystack, const char *needle) |
| 559 | __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 2))); | 610 | _GL_ATTRIBUTE_PURE |
| 611 | _GL_ARG_NONNULL ((1, 2))); | ||
| 560 | _GL_CXXALIAS_RPL (strcasestr, char *, | 612 | _GL_CXXALIAS_RPL (strcasestr, char *, |
| 561 | (const char *haystack, const char *needle)); | 613 | (const char *haystack, const char *needle)); |
| 562 | # else | 614 | # else |
| 563 | # if ! @HAVE_STRCASESTR@ | 615 | # if ! @HAVE_STRCASESTR@ |
| 564 | _GL_FUNCDECL_SYS (strcasestr, char *, | 616 | _GL_FUNCDECL_SYS (strcasestr, char *, |
| 565 | (const char *haystack, const char *needle) | 617 | (const char *haystack, const char *needle) |
| 566 | __attribute__ ((__pure__)) _GL_ARG_NONNULL ((1, 2))); | 618 | _GL_ATTRIBUTE_PURE |
| 619 | _GL_ARG_NONNULL ((1, 2))); | ||
| 567 | # endif | 620 | # endif |
| 568 | /* On some systems, this function is defined as an overloaded function: | 621 | /* On some systems, this function is defined as an overloaded function: |
| 569 | extern "C++" { const char * strcasestr (const char *, const char *); } | 622 | extern "C++" { const char * strcasestr (const char *, const char *); } |
| @@ -572,7 +625,7 @@ _GL_CXXALIAS_SYS_CAST2 (strcasestr, | |||
| 572 | char *, (const char *haystack, const char *needle), | 625 | char *, (const char *haystack, const char *needle), |
| 573 | const char *, (const char *haystack, const char *needle)); | 626 | const char *, (const char *haystack, const char *needle)); |
| 574 | # endif | 627 | # endif |
| 575 | # if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 10 \ | 628 | # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \ |
| 576 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) | 629 | && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
| 577 | _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); | 630 | _GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle)); |
| 578 | _GL_CXXALIASWARN1 (strcasestr, const char *, | 631 | _GL_CXXALIASWARN1 (strcasestr, const char *, |
| @@ -671,10 +724,14 @@ _GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - " | |||
| 671 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 724 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 672 | # define mbslen rpl_mbslen | 725 | # define mbslen rpl_mbslen |
| 673 | # endif | 726 | # endif |
| 674 | _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1))); | 727 | _GL_FUNCDECL_RPL (mbslen, size_t, (const char *string) |
| 728 | _GL_ATTRIBUTE_PURE | ||
| 729 | _GL_ARG_NONNULL ((1))); | ||
| 675 | _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); | 730 | _GL_CXXALIAS_RPL (mbslen, size_t, (const char *string)); |
| 676 | # else | 731 | # else |
| 677 | _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) _GL_ARG_NONNULL ((1))); | 732 | _GL_FUNCDECL_SYS (mbslen, size_t, (const char *string) |
| 733 | _GL_ATTRIBUTE_PURE | ||
| 734 | _GL_ARG_NONNULL ((1))); | ||
| 678 | _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); | 735 | _GL_CXXALIAS_SYS (mbslen, size_t, (const char *string)); |
| 679 | # endif | 736 | # endif |
| 680 | _GL_CXXALIASWARN (mbslen); | 737 | _GL_CXXALIASWARN (mbslen); |
| @@ -684,6 +741,7 @@ _GL_CXXALIASWARN (mbslen); | |||
| 684 | /* Return the number of multibyte characters in the character string starting | 741 | /* Return the number of multibyte characters in the character string starting |
| 685 | at STRING and ending at STRING + LEN. */ | 742 | at STRING and ending at STRING + LEN. */ |
| 686 | _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) | 743 | _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) |
| 744 | _GL_ATTRIBUTE_PURE | ||
| 687 | _GL_ARG_NONNULL ((1)); | 745 | _GL_ARG_NONNULL ((1)); |
| 688 | #endif | 746 | #endif |
| 689 | 747 | ||
| @@ -697,10 +755,12 @@ _GL_EXTERN_C size_t mbsnlen (const char *string, size_t len) | |||
| 697 | # define mbschr rpl_mbschr /* avoid collision with HP-UX function */ | 755 | # define mbschr rpl_mbschr /* avoid collision with HP-UX function */ |
| 698 | # endif | 756 | # endif |
| 699 | _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) | 757 | _GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c) |
| 758 | _GL_ATTRIBUTE_PURE | ||
| 700 | _GL_ARG_NONNULL ((1))); | 759 | _GL_ARG_NONNULL ((1))); |
| 701 | _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); | 760 | _GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c)); |
| 702 | # else | 761 | # else |
| 703 | _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) | 762 | _GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c) |
| 763 | _GL_ATTRIBUTE_PURE | ||
| 704 | _GL_ARG_NONNULL ((1))); | 764 | _GL_ARG_NONNULL ((1))); |
| 705 | _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); | 765 | _GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c)); |
| 706 | # endif | 766 | # endif |
| @@ -712,15 +772,17 @@ _GL_CXXALIASWARN (mbschr); | |||
| 712 | and return a pointer to it. Return NULL if C is not found in STRING. | 772 | and return a pointer to it. Return NULL if C is not found in STRING. |
| 713 | Unlike strrchr(), this function works correctly in multibyte locales with | 773 | Unlike strrchr(), this function works correctly in multibyte locales with |
| 714 | encodings such as GB18030. */ | 774 | encodings such as GB18030. */ |
| 715 | # if defined __hpux | 775 | # if defined __hpux || defined __INTERIX |
| 716 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 776 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 717 | # define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */ | 777 | # define mbsrchr rpl_mbsrchr /* avoid collision with system function */ |
| 718 | # endif | 778 | # endif |
| 719 | _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) | 779 | _GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c) |
| 780 | _GL_ATTRIBUTE_PURE | ||
| 720 | _GL_ARG_NONNULL ((1))); | 781 | _GL_ARG_NONNULL ((1))); |
| 721 | _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); | 782 | _GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c)); |
| 722 | # else | 783 | # else |
| 723 | _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) | 784 | _GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c) |
| 785 | _GL_ATTRIBUTE_PURE | ||
| 724 | _GL_ARG_NONNULL ((1))); | 786 | _GL_ARG_NONNULL ((1))); |
| 725 | _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); | 787 | _GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c)); |
| 726 | # endif | 788 | # endif |
| @@ -733,6 +795,7 @@ _GL_CXXALIASWARN (mbsrchr); | |||
| 733 | Unlike strstr(), this function works correctly in multibyte locales with | 795 | Unlike strstr(), this function works correctly in multibyte locales with |
| 734 | encodings different from UTF-8. */ | 796 | encodings different from UTF-8. */ |
| 735 | _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) | 797 | _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) |
| 798 | _GL_ATTRIBUTE_PURE | ||
| 736 | _GL_ARG_NONNULL ((1, 2)); | 799 | _GL_ARG_NONNULL ((1, 2)); |
| 737 | #endif | 800 | #endif |
| 738 | 801 | ||
| @@ -744,6 +807,7 @@ _GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle) | |||
| 744 | different lengths! | 807 | different lengths! |
| 745 | Unlike strcasecmp(), this function works correctly in multibyte locales. */ | 808 | Unlike strcasecmp(), this function works correctly in multibyte locales. */ |
| 746 | _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) | 809 | _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) |
| 810 | _GL_ATTRIBUTE_PURE | ||
| 747 | _GL_ARG_NONNULL ((1, 2)); | 811 | _GL_ARG_NONNULL ((1, 2)); |
| 748 | #endif | 812 | #endif |
| 749 | 813 | ||
| @@ -758,20 +822,21 @@ _GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2) | |||
| 758 | Unlike strncasecmp(), this function works correctly in multibyte locales. | 822 | Unlike strncasecmp(), this function works correctly in multibyte locales. |
| 759 | But beware that N is not a byte count but a character count! */ | 823 | But beware that N is not a byte count but a character count! */ |
| 760 | _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) | 824 | _GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n) |
| 825 | _GL_ATTRIBUTE_PURE | ||
| 761 | _GL_ARG_NONNULL ((1, 2)); | 826 | _GL_ARG_NONNULL ((1, 2)); |
| 762 | #endif | 827 | #endif |
| 763 | 828 | ||
| 764 | #if @GNULIB_MBSPCASECMP@ | 829 | #if @GNULIB_MBSPCASECMP@ |
| 765 | /* Compare the initial segment of the character string STRING consisting of | 830 | /* Compare the initial segment of the character string STRING consisting of |
| 766 | at most mbslen (PREFIX) characters with the character string PREFIX, | 831 | at most mbslen (PREFIX) characters with the character string PREFIX, |
| 767 | ignoring case, returning less than, equal to or greater than zero if this | 832 | ignoring case. If the two match, return a pointer to the first byte |
| 768 | initial segment is lexicographically less than, equal to or greater than | 833 | after this prefix in STRING. Otherwise, return NULL. |
| 769 | PREFIX. | 834 | Note: This function may, in multibyte locales, return non-NULL if STRING |
| 770 | Note: This function may, in multibyte locales, return 0 if STRING is of | 835 | is of smaller length than PREFIX! |
| 771 | smaller length than PREFIX! | ||
| 772 | Unlike strncasecmp(), this function works correctly in multibyte | 836 | Unlike strncasecmp(), this function works correctly in multibyte |
| 773 | locales. */ | 837 | locales. */ |
| 774 | _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) | 838 | _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) |
| 839 | _GL_ATTRIBUTE_PURE | ||
| 775 | _GL_ARG_NONNULL ((1, 2)); | 840 | _GL_ARG_NONNULL ((1, 2)); |
| 776 | #endif | 841 | #endif |
| 777 | 842 | ||
| @@ -782,6 +847,7 @@ _GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix) | |||
| 782 | strlen (haystack) < strlen (needle) ! | 847 | strlen (haystack) < strlen (needle) ! |
| 783 | Unlike strcasestr(), this function works correctly in multibyte locales. */ | 848 | Unlike strcasestr(), this function works correctly in multibyte locales. */ |
| 784 | _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) | 849 | _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) |
| 850 | _GL_ATTRIBUTE_PURE | ||
| 785 | _GL_ARG_NONNULL ((1, 2)); | 851 | _GL_ARG_NONNULL ((1, 2)); |
| 786 | #endif | 852 | #endif |
| 787 | 853 | ||
| @@ -792,6 +858,7 @@ _GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle) | |||
| 792 | if none exists. | 858 | if none exists. |
| 793 | Unlike strcspn(), this function works correctly in multibyte locales. */ | 859 | Unlike strcspn(), this function works correctly in multibyte locales. */ |
| 794 | _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) | 860 | _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) |
| 861 | _GL_ATTRIBUTE_PURE | ||
| 795 | _GL_ARG_NONNULL ((1, 2)); | 862 | _GL_ARG_NONNULL ((1, 2)); |
| 796 | #endif | 863 | #endif |
| 797 | 864 | ||
| @@ -805,10 +872,12 @@ _GL_EXTERN_C size_t mbscspn (const char *string, const char *accept) | |||
| 805 | # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ | 872 | # define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */ |
| 806 | # endif | 873 | # endif |
| 807 | _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) | 874 | _GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept) |
| 875 | _GL_ATTRIBUTE_PURE | ||
| 808 | _GL_ARG_NONNULL ((1, 2))); | 876 | _GL_ARG_NONNULL ((1, 2))); |
| 809 | _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); | 877 | _GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept)); |
| 810 | # else | 878 | # else |
| 811 | _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) | 879 | _GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept) |
| 880 | _GL_ATTRIBUTE_PURE | ||
| 812 | _GL_ARG_NONNULL ((1, 2))); | 881 | _GL_ARG_NONNULL ((1, 2))); |
| 813 | _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); | 882 | _GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept)); |
| 814 | # endif | 883 | # endif |
| @@ -822,6 +891,7 @@ _GL_CXXALIASWARN (mbspbrk); | |||
| 822 | if none exists. | 891 | if none exists. |
| 823 | Unlike strspn(), this function works correctly in multibyte locales. */ | 892 | Unlike strspn(), this function works correctly in multibyte locales. */ |
| 824 | _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) | 893 | _GL_EXTERN_C size_t mbsspn (const char *string, const char *reject) |
| 894 | _GL_ATTRIBUTE_PURE | ||
| 825 | _GL_ARG_NONNULL ((1, 2)); | 895 | _GL_ARG_NONNULL ((1, 2)); |
| 826 | #endif | 896 | #endif |
| 827 | 897 | ||
| @@ -885,6 +955,35 @@ _GL_WARN_ON_USE (strerror, "strerror is unportable - " | |||
| 885 | "use gnulib module strerror to guarantee non-NULL result"); | 955 | "use gnulib module strerror to guarantee non-NULL result"); |
| 886 | #endif | 956 | #endif |
| 887 | 957 | ||
| 958 | /* Map any int, typically from errno, into an error message. Multithread-safe. | ||
| 959 | Uses the POSIX declaration, not the glibc declaration. */ | ||
| 960 | #if @GNULIB_STRERROR_R@ | ||
| 961 | # if @REPLACE_STRERROR_R@ | ||
| 962 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | ||
| 963 | # undef strerror_r | ||
| 964 | # define strerror_r rpl_strerror_r | ||
| 965 | # endif | ||
| 966 | _GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen) | ||
| 967 | _GL_ARG_NONNULL ((2))); | ||
| 968 | _GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)); | ||
| 969 | # else | ||
| 970 | # if !@HAVE_DECL_STRERROR_R@ | ||
| 971 | _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen) | ||
| 972 | _GL_ARG_NONNULL ((2))); | ||
| 973 | # endif | ||
| 974 | _GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)); | ||
| 975 | # endif | ||
| 976 | # if @HAVE_DECL_STRERROR_R@ | ||
| 977 | _GL_CXXALIASWARN (strerror_r); | ||
| 978 | # endif | ||
| 979 | #elif defined GNULIB_POSIXCHECK | ||
| 980 | # undef strerror_r | ||
| 981 | # if HAVE_RAW_DECL_STRERROR_R | ||
| 982 | _GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - " | ||
| 983 | "use gnulib module strerror_r-posix for portability"); | ||
| 984 | # endif | ||
| 985 | #endif | ||
| 986 | |||
| 888 | #if @GNULIB_STRSIGNAL@ | 987 | #if @GNULIB_STRSIGNAL@ |
| 889 | # if @REPLACE_STRSIGNAL@ | 988 | # if @REPLACE_STRSIGNAL@ |
| 890 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 989 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| @@ -912,6 +1011,7 @@ _GL_WARN_ON_USE (strsignal, "strsignal is unportable - " | |||
| 912 | #if @GNULIB_STRVERSCMP@ | 1011 | #if @GNULIB_STRVERSCMP@ |
| 913 | # if !@HAVE_STRVERSCMP@ | 1012 | # if !@HAVE_STRVERSCMP@ |
| 914 | _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) | 1013 | _GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *) |
| 1014 | _GL_ATTRIBUTE_PURE | ||
| 915 | _GL_ARG_NONNULL ((1, 2))); | 1015 | _GL_ARG_NONNULL ((1, 2))); |
| 916 | # endif | 1016 | # endif |
| 917 | _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); | 1017 | _GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *)); |
| @@ -925,5 +1025,5 @@ _GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - " | |||
| 925 | #endif | 1025 | #endif |
| 926 | 1026 | ||
| 927 | 1027 | ||
| 928 | #endif /* _GL_STRING_H */ | 1028 | #endif /* _@GUARD_PREFIX@_STRING_H */ |
| 929 | #endif /* _GL_STRING_H */ | 1029 | #endif /* _@GUARD_PREFIX@_STRING_H */ |
