diff options
Diffstat (limited to 'lib/unistr.in.h')
-rw-r--r-- | lib/unistr.in.h | 111 |
1 files changed, 56 insertions, 55 deletions
diff --git a/lib/unistr.in.h b/lib/unistr.in.h index 04bec81e..90125e59 100644 --- a/lib/unistr.in.h +++ b/lib/unistr.in.h @@ -1,24 +1,15 @@ /* Elementary Unicode string functions. - Copyright (C) 2001-2002, 2005-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2002, 2005-2022 Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or - modify it under the terms of either: + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your - option) any later version. - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at your - option) any later version. - - or both in parallel, as here. - This program is distributed in the hope that it will be useful, + This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ @@ -37,9 +28,12 @@ /* Get bool. */ #include <unistring/stdbool.h> -/* Get size_t. */ +/* Get size_t, ptrdiff_t. */ #include <stddef.h> +/* Get free(). */ +#include <stdlib.h> + #ifdef __cplusplus extern "C" { #endif @@ -205,7 +199,7 @@ extern int # else static inline int u32_mbtouc_unsafe (ucs4_t *puc, - const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) + const uint32_t *s, _GL_ATTRIBUTE_MAYBE_UNUSED size_t n) { uint32_t c = *s; @@ -271,7 +265,8 @@ extern int u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n); # else static inline int -u32_mbtouc (ucs4_t *puc, const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) +u32_mbtouc (ucs4_t *puc, const uint32_t *s, + _GL_ATTRIBUTE_MAYBE_UNUSED size_t n) { uint32_t c = *s; @@ -317,13 +312,13 @@ extern int #if 1 /* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */ extern int - u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n); + u8_uctomb_aux (uint8_t *s, ucs4_t uc, ptrdiff_t n); # if !UNISTRING_HAVE_INLINE extern int - u8_uctomb (uint8_t *s, ucs4_t uc, int n); + u8_uctomb (uint8_t *s, ucs4_t uc, ptrdiff_t n); # else static inline int -u8_uctomb (uint8_t *s, ucs4_t uc, int n) +u8_uctomb (uint8_t *s, ucs4_t uc, ptrdiff_t n) { if (uc < 0x80 && n > 0) { @@ -339,13 +334,13 @@ u8_uctomb (uint8_t *s, ucs4_t uc, int n) #if 1 /* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */ extern int - u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n); + u16_uctomb_aux (uint16_t *s, ucs4_t uc, ptrdiff_t n); # if !UNISTRING_HAVE_INLINE extern int - u16_uctomb (uint16_t *s, ucs4_t uc, int n); + u16_uctomb (uint16_t *s, ucs4_t uc, ptrdiff_t n); # else static inline int -u16_uctomb (uint16_t *s, ucs4_t uc, int n) +u16_uctomb (uint16_t *s, ucs4_t uc, ptrdiff_t n) { if (uc < 0xd800 && n > 0) { @@ -361,10 +356,10 @@ u16_uctomb (uint16_t *s, ucs4_t uc, int n) #if 1 # if !UNISTRING_HAVE_INLINE extern int - u32_uctomb (uint32_t *s, ucs4_t uc, int n); + u32_uctomb (uint32_t *s, ucs4_t uc, ptrdiff_t n); # else static inline int -u32_uctomb (uint32_t *s, ucs4_t uc, int n) +u32_uctomb (uint32_t *s, ucs4_t uc, ptrdiff_t n) { if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000)) { @@ -385,11 +380,11 @@ u32_uctomb (uint32_t *s, ucs4_t uc, int n) /* Copy N units from SRC to DEST. */ /* Similar to memcpy(). */ extern uint8_t * - u8_cpy (uint8_t *dest, const uint8_t *src, size_t n); + u8_cpy (uint8_t *_UC_RESTRICT dest, const uint8_t *src, size_t n); extern uint16_t * - u16_cpy (uint16_t *dest, const uint16_t *src, size_t n); + u16_cpy (uint16_t *_UC_RESTRICT dest, const uint16_t *src, size_t n); extern uint32_t * - u32_cpy (uint32_t *dest, const uint32_t *src, size_t n); + u32_cpy (uint32_t *_UC_RESTRICT dest, const uint32_t *src, size_t n); /* Copy N units from SRC to DEST, guaranteeing correct behavior for overlapping memory areas. */ @@ -540,57 +535,57 @@ extern size_t /* Copy SRC to DEST. */ /* Similar to strcpy(), wcscpy(). */ extern uint8_t * - u8_strcpy (uint8_t *dest, const uint8_t *src); + u8_strcpy (uint8_t *_UC_RESTRICT dest, const uint8_t *src); extern uint16_t * - u16_strcpy (uint16_t *dest, const uint16_t *src); + u16_strcpy (uint16_t *_UC_RESTRICT dest, const uint16_t *src); extern uint32_t * - u32_strcpy (uint32_t *dest, const uint32_t *src); + u32_strcpy (uint32_t *_UC_RESTRICT dest, const uint32_t *src); /* Copy SRC to DEST, returning the address of the terminating NUL in DEST. */ /* Similar to stpcpy(). */ extern uint8_t * - u8_stpcpy (uint8_t *dest, const uint8_t *src); + u8_stpcpy (uint8_t *_UC_RESTRICT dest, const uint8_t *src); extern uint16_t * - u16_stpcpy (uint16_t *dest, const uint16_t *src); + u16_stpcpy (uint16_t *_UC_RESTRICT dest, const uint16_t *src); extern uint32_t * - u32_stpcpy (uint32_t *dest, const uint32_t *src); + u32_stpcpy (uint32_t *_UC_RESTRICT dest, const uint32_t *src); /* Copy no more than N units of SRC to DEST. */ /* Similar to strncpy(), wcsncpy(). */ extern uint8_t * - u8_strncpy (uint8_t *dest, const uint8_t *src, size_t n); + u8_strncpy (uint8_t *_UC_RESTRICT dest, const uint8_t *src, size_t n); extern uint16_t * - u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n); + u16_strncpy (uint16_t *_UC_RESTRICT dest, const uint16_t *src, size_t n); extern uint32_t * - u32_strncpy (uint32_t *dest, const uint32_t *src, size_t n); + u32_strncpy (uint32_t *_UC_RESTRICT dest, const uint32_t *src, size_t n); /* Copy no more than N units of SRC to DEST. Return a pointer past the last non-NUL unit written into DEST. */ /* Similar to stpncpy(). */ extern uint8_t * - u8_stpncpy (uint8_t *dest, const uint8_t *src, size_t n); + u8_stpncpy (uint8_t *_UC_RESTRICT dest, const uint8_t *src, size_t n); extern uint16_t * - u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n); + u16_stpncpy (uint16_t *_UC_RESTRICT dest, const uint16_t *src, size_t n); extern uint32_t * - u32_stpncpy (uint32_t *dest, const uint32_t *src, size_t n); + u32_stpncpy (uint32_t *_UC_RESTRICT dest, const uint32_t *src, size_t n); /* Append SRC onto DEST. */ /* Similar to strcat(), wcscat(). */ extern uint8_t * - u8_strcat (uint8_t *dest, const uint8_t *src); + u8_strcat (uint8_t *_UC_RESTRICT dest, const uint8_t *src); extern uint16_t * - u16_strcat (uint16_t *dest, const uint16_t *src); + u16_strcat (uint16_t *_UC_RESTRICT dest, const uint16_t *src); extern uint32_t * - u32_strcat (uint32_t *dest, const uint32_t *src); + u32_strcat (uint32_t *_UC_RESTRICT dest, const uint32_t *src); /* Append no more than N units of SRC onto DEST. */ /* Similar to strncat(), wcsncat(). */ extern uint8_t * - u8_strncat (uint8_t *dest, const uint8_t *src, size_t n); + u8_strncat (uint8_t *_UC_RESTRICT dest, const uint8_t *src, size_t n); extern uint16_t * - u16_strncat (uint16_t *dest, const uint16_t *src, size_t n); + u16_strncat (uint16_t *_UC_RESTRICT dest, const uint16_t *src, size_t n); extern uint32_t * - u32_strncat (uint32_t *dest, const uint32_t *src, size_t n); + u32_strncat (uint32_t *_UC_RESTRICT dest, const uint32_t *src, size_t n); /* Compare S1 and S2. */ /* Similar to strcmp(), wcscmp(). */ @@ -638,11 +633,14 @@ extern int /* Duplicate S, returning an identical malloc'd string. */ /* Similar to strdup(), wcsdup(). */ extern uint8_t * - u8_strdup (const uint8_t *s); + u8_strdup (const uint8_t *s) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE; extern uint16_t * - u16_strdup (const uint16_t *s); + u16_strdup (const uint16_t *s) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE; extern uint32_t * - u32_strdup (const uint32_t *s); + u32_strdup (const uint32_t *s) + _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE; /* Find the first occurrence of UC in STR. */ /* Similar to strchr(), wcschr(). */ @@ -744,11 +742,14 @@ extern bool This interface is actually more similar to wcstok than to strtok. */ /* Similar to strtok_r(), wcstok(). */ extern uint8_t * - u8_strtok (uint8_t *str, const uint8_t *delim, uint8_t **ptr); + u8_strtok (uint8_t *_UC_RESTRICT str, const uint8_t *delim, + uint8_t **ptr); extern uint16_t * - u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr); + u16_strtok (uint16_t *_UC_RESTRICT str, const uint16_t *delim, + uint16_t **ptr); extern uint32_t * - u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr); + u32_strtok (uint32_t *_UC_RESTRICT str, const uint32_t *delim, + uint32_t **ptr); #ifdef __cplusplus |