diff options
author | Andy Wingo <wingo@pobox.com> | 2016-07-10 12:44:35 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2016-07-10 12:44:35 +0200 |
commit | b05b67b2b3677be51297791ad16cd73a37918ada (patch) | |
tree | 180118f6bcd6216441254f845bc0ecbdc7b7cb34 /lib | |
parent | d484bfbacec75941ba643ddc600e995f2c160928 (diff) |
Avoid Gnulib unistr/* modules
(unistr/base, unistr/u8-mbtouc, unistr/u8-mbtouc-unsafe)
(unistr/u8-mbtoucr, unistr/u8-prev unistr/u8-uctomb, unitypes): --avoid
these modules.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile.am | 101 | ||||
-rw-r--r-- | lib/unistr.in.h | 750 | ||||
-rw-r--r-- | lib/unistr/u8-mbtouc-aux.c | 240 | ||||
-rw-r--r-- | lib/unistr/u8-mbtouc-unsafe-aux.c | 260 | ||||
-rw-r--r-- | lib/unistr/u8-mbtouc-unsafe.c | 271 | ||||
-rw-r--r-- | lib/unistr/u8-mbtouc.c | 250 | ||||
-rw-r--r-- | lib/unistr/u8-mbtoucr.c | 285 | ||||
-rw-r--r-- | lib/unistr/u8-prev.c | 93 | ||||
-rw-r--r-- | lib/unistr/u8-uctomb-aux.c | 69 | ||||
-rw-r--r-- | lib/unistr/u8-uctomb.c | 88 | ||||
-rw-r--r-- | lib/unitypes.in.h | 46 |
11 files changed, 2 insertions, 2451 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index b65c94279..adf95373e 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -21,9 +21,9 @@ # the same distribution terms as the rest of that program. # # Generated by gnulib-tool. -# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=lock --lgpl=3 --conditional-dependencies --libtool --macro-prefix=gl --no-vc-files accept alignof alloca-opt announce-gen autobuild bind byteswap c-strcase canonicalize-lgpl ceil clock-time close connect copysign dirfd duplocale environ extensions flock floor fpieee frexp fstat fsync full-read full-write func gendocs getaddrinfo getlogin getpeername getsockname getsockopt git-version-gen gitlog-to-changelog gnu-web-doc-update gnupload havelib iconv_open-utf inet_ntop inet_pton isfinite isinf isnan ldexp lib-symbol-versions lib-symbol-visibility libunistring link listen localcharset locale log1p lstat maintainer-makefile malloc-gnu malloca mkdir mkstemp nl_langinfo nproc open pipe-posix pipe2 poll putenv readlink recv recvfrom regex rename rmdir select send sendto setenv setsockopt shutdown socket stat-time stdlib strftime striconveh string sys_stat time times trunc unistd verify vsnprintf warnings wchar +# Reproduce by: gnulib-tool --import --local-dir=gnulib-local --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=lock --avoid=unistr/base --avoid=unistr/u8-mbtouc --avoid=unistr/u8-mbtouc-unsafe --avoid=unistr/u8-mbtoucr --avoid=unistr/u8-prev --avoid=unistr/u8-uctomb --avoid=unitypes --lgpl=3 --conditional-dependencies --libtool --macro-prefix=gl --no-vc-files accept alignof alloca-opt announce-gen autobuild bind byteswap c-strcase canonicalize-lgpl ceil clock-time close connect copysign dirfd duplocale environ extensions flock floor fpieee frexp fstat fsync full-read full-write func gendocs getaddrinfo getlogin getpeername getsockname getsockopt git-version-gen gitlog-to-changelog gnu-web-doc-update gnupload havelib iconv_open-utf inet_ntop inet_pton isfinite isinf isnan ldexp lib-symbol-versions lib-symbol-visibility libunistring link listen localcharset locale log1p lstat maintainer-makefile malloc-gnu malloca mkdir mkstemp nl_langinfo nproc open pipe-posix pipe2 poll putenv readlink recv recvfrom regex rename rmdir select send sendto setenv setsockopt shutdown socket stat-time stdlib strftime striconveh string sys_stat time times trunc unistd verify vsnprintf warnings wchar -AUTOMAKE_OPTIONS = 1.9.6 gnits subdir-objects +AUTOMAKE_OPTIONS = 1.9.6 gnits SUBDIRS = noinst_HEADERS = @@ -2014,31 +2014,6 @@ EXTRA_DIST += $(top_srcdir)/build-aux/snippet/c++defs.h ## end gnulib module snippet/c++defs -## begin gnulib module snippet/unused-parameter - -# The BUILT_SOURCES created by this Makefile snippet are not used via #include -# statements but through direct file reference. Therefore this snippet must be -# present in all Makefile.am that need it. This is ensured by the applicability -# 'all' defined above. - -BUILT_SOURCES += unused-parameter.h -# The unused-parameter.h that gets inserted into generated .h files is the same -# as build-aux/snippet/unused-parameter.h, except that it has the copyright -# header cut off. -unused-parameter.h: $(top_srcdir)/build-aux/snippet/unused-parameter.h - $(AM_V_GEN)rm -f $@-t $@ && \ - sed -n -e '/GL_UNUSED_PARAMETER/,$$p' \ - < $(top_srcdir)/build-aux/snippet/unused-parameter.h \ - > $@-t && \ - mv $@-t $@ -MOSTLYCLEANFILES += unused-parameter.h unused-parameter.h-t - -UNUSED_PARAMETER_H=unused-parameter.h - -EXTRA_DIST += $(top_srcdir)/build-aux/snippet/unused-parameter.h - -## end gnulib module snippet/unused-parameter - ## begin gnulib module snippet/warn-on-use BUILT_SOURCES += warn-on-use.h @@ -3161,78 +3136,6 @@ EXTRA_DIST += unistd.in.h ## end gnulib module unistd -## begin gnulib module unistr/base - -BUILT_SOURCES += $(LIBUNISTRING_UNISTR_H) - -unistr.h: unistr.in.h - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - cat $(srcdir)/unistr.in.h; \ - } > $@-t && \ - mv -f $@-t $@ -MOSTLYCLEANFILES += unistr.h unistr.h-t - -EXTRA_DIST += unistr.in.h - -## end gnulib module unistr/base - -## begin gnulib module unistr/u8-mbtouc - -if LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC -libgnu_la_SOURCES += unistr/u8-mbtouc.c unistr/u8-mbtouc-aux.c -endif - -## end gnulib module unistr/u8-mbtouc - -## begin gnulib module unistr/u8-mbtouc-unsafe - -if LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUC_UNSAFE -libgnu_la_SOURCES += unistr/u8-mbtouc-unsafe.c unistr/u8-mbtouc-unsafe-aux.c -endif - -## end gnulib module unistr/u8-mbtouc-unsafe - -## begin gnulib module unistr/u8-mbtoucr - -if LIBUNISTRING_COMPILE_UNISTR_U8_MBTOUCR -libgnu_la_SOURCES += unistr/u8-mbtoucr.c -endif - -## end gnulib module unistr/u8-mbtoucr - -## begin gnulib module unistr/u8-prev - -if LIBUNISTRING_COMPILE_UNISTR_U8_PREV -libgnu_la_SOURCES += unistr/u8-prev.c -endif - -## end gnulib module unistr/u8-prev - -## begin gnulib module unistr/u8-uctomb - -if LIBUNISTRING_COMPILE_UNISTR_U8_UCTOMB -libgnu_la_SOURCES += unistr/u8-uctomb.c unistr/u8-uctomb-aux.c -endif - -## end gnulib module unistr/u8-uctomb - -## begin gnulib module unitypes - -BUILT_SOURCES += $(LIBUNISTRING_UNITYPES_H) - -unitypes.h: unitypes.in.h - $(AM_V_GEN)rm -f $@-t $@ && \ - { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ - cat $(srcdir)/unitypes.in.h; \ - } > $@-t && \ - mv -f $@-t $@ -MOSTLYCLEANFILES += unitypes.h unitypes.h-t - -EXTRA_DIST += unitypes.in.h - -## end gnulib module unitypes - ## begin gnulib module unsetenv if gl_GNULIB_ENABLED_unsetenv diff --git a/lib/unistr.in.h b/lib/unistr.in.h deleted file mode 100644 index 2a64b31d9..000000000 --- a/lib/unistr.in.h +++ /dev/null @@ -1,750 +0,0 @@ -/* Elementary Unicode string functions. - Copyright (C) 2001-2002, 2005-2016 Free Software Foundation, Inc. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#ifndef _UNISTR_H -#define _UNISTR_H - -#include "unitypes.h" - -/* Get common macros for C. */ -#include "unused-parameter.h" - -/* Get bool. */ -#include <stdbool.h> - -/* Get size_t. */ -#include <stddef.h> - -#ifdef __cplusplus -extern "C" { -#endif - - -/* Conventions: - - All functions prefixed with u8_ operate on UTF-8 encoded strings. - Their unit is an uint8_t (1 byte). - - All functions prefixed with u16_ operate on UTF-16 encoded strings. - Their unit is an uint16_t (a 2-byte word). - - All functions prefixed with u32_ operate on UCS-4 encoded strings. - Their unit is an uint32_t (a 4-byte word). - - All argument pairs (s, n) denote a Unicode string s[0..n-1] with exactly - n units. - - All arguments starting with "str" and the arguments of functions starting - with u8_str/u16_str/u32_str denote a NUL terminated string, i.e. a string - which terminates at the first NUL unit. This termination unit is - considered part of the string for all memory allocation purposes, but - is not considered part of the string for all other logical purposes. - - Functions returning a string result take a (resultbuf, lengthp) argument - pair. If resultbuf is not NULL and the result fits into *lengthp units, - it is put in resultbuf, and resultbuf is returned. Otherwise, a freshly - allocated string is returned. In both cases, *lengthp is set to the - length (number of units) of the returned string. In case of error, - NULL is returned and errno is set. */ - - -/* Elementary string checks. */ - -/* Check whether an UTF-8 string is well-formed. - Return NULL if valid, or a pointer to the first invalid unit otherwise. */ -extern const uint8_t * - u8_check (const uint8_t *s, size_t n) - _UC_ATTRIBUTE_PURE; - -/* Check whether an UTF-16 string is well-formed. - Return NULL if valid, or a pointer to the first invalid unit otherwise. */ -extern const uint16_t * - u16_check (const uint16_t *s, size_t n) - _UC_ATTRIBUTE_PURE; - -/* Check whether an UCS-4 string is well-formed. - Return NULL if valid, or a pointer to the first invalid unit otherwise. */ -extern const uint32_t * - u32_check (const uint32_t *s, size_t n) - _UC_ATTRIBUTE_PURE; - - -/* Elementary string conversions. */ - -/* Convert an UTF-8 string to an UTF-16 string. */ -extern uint16_t * - u8_to_u16 (const uint8_t *s, size_t n, uint16_t *resultbuf, - size_t *lengthp); - -/* Convert an UTF-8 string to an UCS-4 string. */ -extern uint32_t * - u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, - size_t *lengthp); - -/* Convert an UTF-16 string to an UTF-8 string. */ -extern uint8_t * - u16_to_u8 (const uint16_t *s, size_t n, uint8_t *resultbuf, - size_t *lengthp); - -/* Convert an UTF-16 string to an UCS-4 string. */ -extern uint32_t * - u16_to_u32 (const uint16_t *s, size_t n, uint32_t *resultbuf, - size_t *lengthp); - -/* Convert an UCS-4 string to an UTF-8 string. */ -extern uint8_t * - u32_to_u8 (const uint32_t *s, size_t n, uint8_t *resultbuf, - size_t *lengthp); - -/* Convert an UCS-4 string to an UTF-16 string. */ -extern uint16_t * - u32_to_u16 (const uint32_t *s, size_t n, uint16_t *resultbuf, - size_t *lengthp); - - -/* Elementary string functions. */ - -/* Return the length (number of units) of the first character in S, which is - no longer than N. Return 0 if it is the NUL character. Return -1 upon - failure. */ -/* Similar to mblen(), except that s must not be NULL. */ -extern int - u8_mblen (const uint8_t *s, size_t n) - _UC_ATTRIBUTE_PURE; -extern int - u16_mblen (const uint16_t *s, size_t n) - _UC_ATTRIBUTE_PURE; -extern int - u32_mblen (const uint32_t *s, size_t n) - _UC_ATTRIBUTE_PURE; - -/* Return the length (number of units) of the first character in S, putting - its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, - and an appropriate number of units is returned. - The number of available units, N, must be > 0. */ -/* Similar to mbtowc(), except that puc and s must not be NULL, n must be > 0, - and the NUL character is not treated specially. */ -/* The variants with _safe suffix are safe, even if the library is compiled - without --enable-safety. */ - -#if GNULIB_UNISTR_U8_MBTOUC_UNSAFE || HAVE_LIBUNISTRING -# if !HAVE_INLINE -extern int - u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n); -# else -extern int - u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n); -static inline int -u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c < 0x80) - { - *puc = c; - return 1; - } - else - return u8_mbtouc_unsafe_aux (puc, s, n); -} -# endif -#endif - -#if GNULIB_UNISTR_U16_MBTOUC_UNSAFE || HAVE_LIBUNISTRING -# if !HAVE_INLINE -extern int - u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n); -# else -extern int - u16_mbtouc_unsafe_aux (ucs4_t *puc, const uint16_t *s, size_t n); -static inline int -u16_mbtouc_unsafe (ucs4_t *puc, const uint16_t *s, size_t n) -{ - uint16_t c = *s; - - if (c < 0xd800 || c >= 0xe000) - { - *puc = c; - return 1; - } - else - return u16_mbtouc_unsafe_aux (puc, s, n); -} -# endif -#endif - -#if GNULIB_UNISTR_U32_MBTOUC_UNSAFE || HAVE_LIBUNISTRING -# if !HAVE_INLINE -extern int - u32_mbtouc_unsafe (ucs4_t *puc, const uint32_t *s, size_t n); -# else -static inline int -u32_mbtouc_unsafe (ucs4_t *puc, - const uint32_t *s, size_t n _GL_UNUSED_PARAMETER) -{ - uint32_t c = *s; - -# if CONFIG_UNICODE_SAFETY - if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) -# endif - *puc = c; -# if CONFIG_UNICODE_SAFETY - else - /* invalid multibyte character */ - *puc = 0xfffd; -# endif - return 1; -} -# endif -#endif - -#if GNULIB_UNISTR_U8_MBTOUC || HAVE_LIBUNISTRING -# if !HAVE_INLINE -extern int - u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n); -# else -extern int - u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n); -static inline int -u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c < 0x80) - { - *puc = c; - return 1; - } - else - return u8_mbtouc_aux (puc, s, n); -} -# endif -#endif - -#if GNULIB_UNISTR_U16_MBTOUC || HAVE_LIBUNISTRING -# if !HAVE_INLINE -extern int - u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n); -# else -extern int - u16_mbtouc_aux (ucs4_t *puc, const uint16_t *s, size_t n); -static inline int -u16_mbtouc (ucs4_t *puc, const uint16_t *s, size_t n) -{ - uint16_t c = *s; - - if (c < 0xd800 || c >= 0xe000) - { - *puc = c; - return 1; - } - else - return u16_mbtouc_aux (puc, s, n); -} -# endif -#endif - -#if GNULIB_UNISTR_U32_MBTOUC || HAVE_LIBUNISTRING -# if !HAVE_INLINE -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) -{ - uint32_t c = *s; - - if (c < 0xd800 || (c >= 0xe000 && c < 0x110000)) - *puc = c; - else - /* invalid multibyte character */ - *puc = 0xfffd; - return 1; -} -# endif -#endif - -/* Return the length (number of units) of the first character in S, putting - its 'ucs4_t' representation in *PUC. Upon failure, *PUC is set to 0xfffd, - and -1 is returned for an invalid sequence of units, -2 is returned for an - incomplete sequence of units. - The number of available units, N, must be > 0. */ -/* Similar to u*_mbtouc(), except that the return value gives more details - about the failure, similar to mbrtowc(). */ - -#if GNULIB_UNISTR_U8_MBTOUCR || HAVE_LIBUNISTRING -extern int - u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n); -#endif - -#if GNULIB_UNISTR_U16_MBTOUCR || HAVE_LIBUNISTRING -extern int - u16_mbtoucr (ucs4_t *puc, const uint16_t *s, size_t n); -#endif - -#if GNULIB_UNISTR_U32_MBTOUCR || HAVE_LIBUNISTRING -extern int - u32_mbtoucr (ucs4_t *puc, const uint32_t *s, size_t n); -#endif - -/* Put the multibyte character represented by UC in S, returning its - length. Return -1 upon failure, -2 if the number of available units, N, - is too small. The latter case cannot occur if N >= 6/2/1, respectively. */ -/* Similar to wctomb(), except that s must not be NULL, and the argument n - must be specified. */ - -#if GNULIB_UNISTR_U8_UCTOMB || HAVE_LIBUNISTRING -/* Auxiliary function, also used by u8_chr, u8_strchr, u8_strrchr. */ -extern int - u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n); -# if !HAVE_INLINE -extern int - u8_uctomb (uint8_t *s, ucs4_t uc, int n); -# else -static inline int -u8_uctomb (uint8_t *s, ucs4_t uc, int n) -{ - if (uc < 0x80 && n > 0) - { - s[0] = uc; - return 1; - } - else - return u8_uctomb_aux (s, uc, n); -} -# endif -#endif - -#if GNULIB_UNISTR_U16_UCTOMB || HAVE_LIBUNISTRING -/* Auxiliary function, also used by u16_chr, u16_strchr, u16_strrchr. */ -extern int - u16_uctomb_aux (uint16_t *s, ucs4_t uc, int n); -# if !HAVE_INLINE -extern int - u16_uctomb (uint16_t *s, ucs4_t uc, int n); -# else -static inline int -u16_uctomb (uint16_t *s, ucs4_t uc, int n) -{ - if (uc < 0xd800 && n > 0) - { - s[0] = uc; - return 1; - } - else - return u16_uctomb_aux (s, uc, n); -} -# endif -#endif - -#if GNULIB_UNISTR_U32_UCTOMB || HAVE_LIBUNISTRING -# if !HAVE_INLINE -extern int - u32_uctomb (uint32_t *s, ucs4_t uc, int n); -# else -static inline int -u32_uctomb (uint32_t *s, ucs4_t uc, int n) -{ - if (uc < 0xd800 || (uc >= 0xe000 && uc < 0x110000)) - { - if (n > 0) - { - *s = uc; - return 1; - } - else - return -2; - } - else - return -1; -} -# endif -#endif - -/* 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); -extern uint16_t * - u16_cpy (uint16_t *dest, const uint16_t *src, size_t n); -extern uint32_t * - u32_cpy (uint32_t *dest, const uint32_t *src, size_t n); - -/* Copy N units from SRC to DEST, guaranteeing correct behavior for - overlapping memory areas. */ -/* Similar to memmove(). */ -extern uint8_t * - u8_move (uint8_t *dest, const uint8_t *src, size_t n); -extern uint16_t * - u16_move (uint16_t *dest, const uint16_t *src, size_t n); -extern uint32_t * - u32_move (uint32_t *dest, const uint32_t *src, size_t n); - -/* Set the first N characters of S to UC. UC should be a character that - occupies only 1 unit. */ -/* Similar to memset(). */ -extern uint8_t * - u8_set (uint8_t *s, ucs4_t uc, size_t n); -extern uint16_t * - u16_set (uint16_t *s, ucs4_t uc, size_t n); -extern uint32_t * - u32_set (uint32_t *s, ucs4_t uc, size_t n); - -/* Compare S1 and S2, each of length N. */ -/* Similar to memcmp(). */ -extern int - u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n) - _UC_ATTRIBUTE_PURE; -extern int - u16_cmp (const uint16_t *s1, const uint16_t *s2, size_t n) - _UC_ATTRIBUTE_PURE; -extern int - u32_cmp (const uint32_t *s1, const uint32_t *s2, size_t n) - _UC_ATTRIBUTE_PURE; - -/* Compare S1 and S2. */ -/* Similar to the gnulib function memcmp2(). */ -extern int - u8_cmp2 (const uint8_t *s1, size_t n1, const uint8_t *s2, size_t n2) - _UC_ATTRIBUTE_PURE; -extern int - u16_cmp2 (const uint16_t *s1, size_t n1, const uint16_t *s2, size_t n2) - _UC_ATTRIBUTE_PURE; -extern int - u32_cmp2 (const uint32_t *s1, size_t n1, const uint32_t *s2, size_t n2) - _UC_ATTRIBUTE_PURE; - -/* Search the string at S for UC. */ -/* Similar to memchr(). */ -extern uint8_t * - u8_chr (const uint8_t *s, size_t n, ucs4_t uc) - _UC_ATTRIBUTE_PURE; -extern uint16_t * - u16_chr (const uint16_t *s, size_t n, ucs4_t uc) - _UC_ATTRIBUTE_PURE; -extern uint32_t * - u32_chr (const uint32_t *s, size_t n, ucs4_t uc) - _UC_ATTRIBUTE_PURE; - -/* Count the number of Unicode characters in the N units from S. */ -/* Similar to mbsnlen(). */ -extern size_t - u8_mbsnlen (const uint8_t *s, size_t n) - _UC_ATTRIBUTE_PURE; -extern size_t - u16_mbsnlen (const uint16_t *s, size_t n) - _UC_ATTRIBUTE_PURE; -extern size_t - u32_mbsnlen (const uint32_t *s, size_t n) - _UC_ATTRIBUTE_PURE; - -/* Elementary string functions with memory allocation. */ - -/* Make a freshly allocated copy of S, of length N. */ -extern uint8_t * - u8_cpy_alloc (const uint8_t *s, size_t n); -extern uint16_t * - u16_cpy_alloc (const uint16_t *s, size_t n); -extern uint32_t * - u32_cpy_alloc (const uint32_t *s, size_t n); - -/* Elementary string functions on NUL terminated strings. */ - -/* Return the length (number of units) of the first character in S. - Return 0 if it is the NUL character. Return -1 upon failure. */ -extern int - u8_strmblen (const uint8_t *s) - _UC_ATTRIBUTE_PURE; -extern int - u16_strmblen (const uint16_t *s) - _UC_ATTRIBUTE_PURE; -extern int - u32_strmblen (const uint32_t *s) - _UC_ATTRIBUTE_PURE; - -/* Return the length (number of units) of the first character in S, putting - its 'ucs4_t' representation in *PUC. Return 0 if it is the NUL - character. Return -1 upon failure. */ -extern int - u8_strmbtouc (ucs4_t *puc, const uint8_t *s); -extern int - u16_strmbtouc (ucs4_t *puc, const uint16_t *s); -extern int - u32_strmbtouc (ucs4_t *puc, const uint32_t *s); - -/* Forward iteration step. Advances the pointer past the next character, - or returns NULL if the end of the string has been reached. Puts the - character's 'ucs4_t' representation in *PUC. */ -extern const uint8_t * - u8_next (ucs4_t *puc, const uint8_t *s); -extern const uint16_t * - u16_next (ucs4_t *puc, const uint16_t *s); -extern const uint32_t * - u32_next (ucs4_t *puc, const uint32_t *s); - -/* Backward iteration step. Advances the pointer to point to the previous - character, or returns NULL if the beginning of the string had been reached. - Puts the character's 'ucs4_t' representation in *PUC. */ -extern const uint8_t * - u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start); -extern const uint16_t * - u16_prev (ucs4_t *puc, const uint16_t *s, const uint16_t *start); -extern const uint32_t * - u32_prev (ucs4_t *puc, const uint32_t *s, const uint32_t *start); - -/* Return the number of units in S. */ -/* Similar to strlen(), wcslen(). */ -extern size_t - u8_strlen (const uint8_t *s) - _UC_ATTRIBUTE_PURE; -extern size_t - u16_strlen (const uint16_t *s) - _UC_ATTRIBUTE_PURE; -extern size_t - u32_strlen (const uint32_t *s) - _UC_ATTRIBUTE_PURE; - -/* Return the number of units in S, but at most MAXLEN. */ -/* Similar to strnlen(), wcsnlen(). */ -extern size_t - u8_strnlen (const uint8_t *s, size_t maxlen) - _UC_ATTRIBUTE_PURE; -extern size_t - u16_strnlen (const uint16_t *s, size_t maxlen) - _UC_ATTRIBUTE_PURE; -extern size_t - u32_strnlen (const uint32_t *s, size_t maxlen) - _UC_ATTRIBUTE_PURE; - -/* Copy SRC to DEST. */ -/* Similar to strcpy(), wcscpy(). */ -extern uint8_t * - u8_strcpy (uint8_t *dest, const uint8_t *src); -extern uint16_t * - u16_strcpy (uint16_t *dest, const uint16_t *src); -extern uint32_t * - u32_strcpy (uint32_t *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); -extern uint16_t * - u16_stpcpy (uint16_t *dest, const uint16_t *src); -extern uint32_t * - u32_stpcpy (uint32_t *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); -extern uint16_t * - u16_strncpy (uint16_t *dest, const uint16_t *src, size_t n); -extern uint32_t * - u32_strncpy (uint32_t *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); -extern uint16_t * - u16_stpncpy (uint16_t *dest, const uint16_t *src, size_t n); -extern uint32_t * - u32_stpncpy (uint32_t *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); -extern uint16_t * - u16_strcat (uint16_t *dest, const uint16_t *src); -extern uint32_t * - u32_strcat (uint32_t *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); -extern uint16_t * - u16_strncat (uint16_t *dest, const uint16_t *src, size_t n); -extern uint32_t * - u32_strncat (uint32_t *dest, const uint32_t *src, size_t n); - -/* Compare S1 and S2. */ -/* Similar to strcmp(), wcscmp(). */ -#ifdef __sun -/* Avoid a collision with the u8_strcmp() function in Solaris 11 libc. */ -extern int - u8_strcmp_gnu (const uint8_t *s1, const uint8_t *s2) - _UC_ATTRIBUTE_PURE; -# define u8_strcmp u8_strcmp_gnu -#else -extern int - u8_strcmp (const uint8_t *s1, const uint8_t *s2) - _UC_ATTRIBUTE_PURE; -#endif -extern int - u16_strcmp (const uint16_t *s1, const uint16_t *s2) - _UC_ATTRIBUTE_PURE; -extern int - u32_strcmp (const uint32_t *s1, const uint32_t *s2) - _UC_ATTRIBUTE_PURE; - -/* Compare S1 and S2 using the collation rules of the current locale. - Return -1 if S1 < S2, 0 if S1 = S2, 1 if S1 > S2. - Upon failure, set errno and return any value. */ -/* Similar to strcoll(), wcscoll(). */ -extern int - u8_strcoll (const uint8_t *s1, const uint8_t *s2); -extern int - u16_strcoll (const uint16_t *s1, const uint16_t *s2); -extern int - u32_strcoll (const uint32_t *s1, const uint32_t *s2); - -/* Compare no more than N units of S1 and S2. */ -/* Similar to strncmp(), wcsncmp(). */ -extern int - u8_strncmp (const uint8_t *s1, const uint8_t *s2, size_t n) - _UC_ATTRIBUTE_PURE; -extern int - u16_strncmp (const uint16_t *s1, const uint16_t *s2, size_t n) - _UC_ATTRIBUTE_PURE; -extern int - u32_strncmp (const uint32_t *s1, const uint32_t *s2, size_t n) - _UC_ATTRIBUTE_PURE; - -/* Duplicate S, returning an identical malloc'd string. */ -/* Similar to strdup(), wcsdup(). */ -extern uint8_t * - u8_strdup (const uint8_t *s); -extern uint16_t * - u16_strdup (const uint16_t *s); -extern uint32_t * - u32_strdup (const uint32_t *s); - -/* Find the first occurrence of UC in STR. */ -/* Similar to strchr(), wcschr(). */ -extern uint8_t * - u8_strchr (const uint8_t *str, ucs4_t uc) - _UC_ATTRIBUTE_PURE; -extern uint16_t * - u16_strchr (const uint16_t *str, ucs4_t uc) - _UC_ATTRIBUTE_PURE; -extern uint32_t * - u32_strchr (const uint32_t *str, ucs4_t uc) - _UC_ATTRIBUTE_PURE; - -/* Find the last occurrence of UC in STR. */ -/* Similar to strrchr(), wcsrchr(). */ -extern uint8_t * - u8_strrchr (const uint8_t *str, ucs4_t uc) - _UC_ATTRIBUTE_PURE; -extern uint16_t * - u16_strrchr (const uint16_t *str, ucs4_t uc) - _UC_ATTRIBUTE_PURE; -extern uint32_t * - u32_strrchr (const uint32_t *str, ucs4_t uc) - _UC_ATTRIBUTE_PURE; - -/* Return the length of the initial segment of STR which consists entirely - of Unicode characters not in REJECT. */ -/* Similar to strcspn(), wcscspn(). */ -extern size_t - u8_strcspn (const uint8_t *str, const uint8_t *reject) - _UC_ATTRIBUTE_PURE; -extern size_t - u16_strcspn (const uint16_t *str, const uint16_t *reject) - _UC_ATTRIBUTE_PURE; -extern size_t - u32_strcspn (const uint32_t *str, const uint32_t *reject) - _UC_ATTRIBUTE_PURE; - -/* Return the length of the initial segment of STR which consists entirely - of Unicode characters in ACCEPT. */ -/* Similar to strspn(), wcsspn(). */ -extern size_t - u8_strspn (const uint8_t *str, const uint8_t *accept) - _UC_ATTRIBUTE_PURE; -extern size_t - u16_strspn (const uint16_t *str, const uint16_t *accept) - _UC_ATTRIBUTE_PURE; -extern size_t - u32_strspn (const uint32_t *str, const uint32_t *accept) - _UC_ATTRIBUTE_PURE; - -/* Find the first occurrence in STR of any character in ACCEPT. */ -/* Similar to strpbrk(), wcspbrk(). */ -extern uint8_t * - u8_strpbrk (const uint8_t *str, const uint8_t *accept) - _UC_ATTRIBUTE_PURE; -extern uint16_t * - u16_strpbrk (const uint16_t *str, const uint16_t *accept) - _UC_ATTRIBUTE_PURE; -extern uint32_t * - u32_strpbrk (const uint32_t *str, const uint32_t *accept) - _UC_ATTRIBUTE_PURE; - -/* Find the first occurrence of NEEDLE in HAYSTACK. */ -/* Similar to strstr(), wcsstr(). */ -extern uint8_t * - u8_strstr (const uint8_t *haystack, const uint8_t *needle) - _UC_ATTRIBUTE_PURE; -extern uint16_t * - u16_strstr (const uint16_t *haystack, const uint16_t *needle) - _UC_ATTRIBUTE_PURE; -extern uint32_t * - u32_strstr (const uint32_t *haystack, const uint32_t *needle) - _UC_ATTRIBUTE_PURE; - -/* Test whether STR starts with PREFIX. */ -extern bool - u8_startswith (const uint8_t *str, const uint8_t *prefix) - _UC_ATTRIBUTE_PURE; -extern bool - u16_startswith (const uint16_t *str, const uint16_t *prefix) - _UC_ATTRIBUTE_PURE; -extern bool - u32_startswith (const uint32_t *str, const uint32_t *prefix) - _UC_ATTRIBUTE_PURE; - -/* Test whether STR ends with SUFFIX. */ -extern bool - u8_endswith (const uint8_t *str, const uint8_t *suffix) - _UC_ATTRIBUTE_PURE; -extern bool - u16_endswith (const uint16_t *str, const uint16_t *suffix) - _UC_ATTRIBUTE_PURE; -extern bool - u32_endswith (const uint32_t *str, const uint32_t *suffix) - _UC_ATTRIBUTE_PURE; - -/* Divide STR into tokens separated by characters in DELIM. - 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); -extern uint16_t * - u16_strtok (uint16_t *str, const uint16_t *delim, uint16_t **ptr); -extern uint32_t * - u32_strtok (uint32_t *str, const uint32_t *delim, uint32_t **ptr); - - -#ifdef __cplusplus -} -#endif - -#endif /* _UNISTR_H */ diff --git a/lib/unistr/u8-mbtouc-aux.c b/lib/unistr/u8-mbtouc-aux.c deleted file mode 100644 index d546ae7af..000000000 --- a/lib/unistr/u8-mbtouc-aux.c +++ /dev/null @@ -1,240 +0,0 @@ -/* Conversion UTF-8 to UCS-4. - Copyright (C) 2001-2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2001. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -/* Specification. */ -#include "unistr.h" - -#if defined IN_LIBUNISTRING || HAVE_INLINE - -int -u8_mbtouc_aux (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c >= 0xc2) - { - if (c < 0xe0) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x1f) << 6) - | (unsigned int) (s[1] ^ 0x80); - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return 1; - } - } - else if (c < 0xf0) - { - if (n >= 3) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((c >= 0xe1 || s[1] >= 0xa0) - && (c != 0xed || s[1] < 0xa0)) - { - *puc = ((unsigned int) (c & 0x0f) << 12) - | ((unsigned int) (s[1] ^ 0x80) << 6) - | (unsigned int) (s[2] ^ 0x80); - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else - return 2; - } - } - else if (c < 0xf8) - { - if (n >= 4) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((c >= 0xf1 || s[1] >= 0x90) -#if 1 - && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90)) -#endif - ) - { - *puc = ((unsigned int) (c & 0x07) << 18) - | ((unsigned int) (s[1] ^ 0x80) << 12) - | ((unsigned int) (s[2] ^ 0x80) << 6) - | (unsigned int) (s[3] ^ 0x80); - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else if (n == 2 || (s[2] ^ 0x80) >= 0x40) - return 2; - else - return 3; - } - } -#if 0 - else if (c < 0xfc) - { - if (n >= 5) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if (c >= 0xf9 || s[1] >= 0x88) - { - *puc = ((unsigned int) (c & 0x03) << 24) - | ((unsigned int) (s[1] ^ 0x80) << 18) - | ((unsigned int) (s[2] ^ 0x80) << 12) - | ((unsigned int) (s[3] ^ 0x80) << 6) - | (unsigned int) (s[4] ^ 0x80); - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } - else if (c < 0xfe) - { - if (n >= 6) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if ((s[5] ^ 0x80) < 0x40) - { - if (c >= 0xfd || s[1] >= 0x84) - { - *puc = ((unsigned int) (c & 0x01) << 30) - | ((unsigned int) (s[1] ^ 0x80) << 24) - | ((unsigned int) (s[2] ^ 0x80) << 18) - | ((unsigned int) (s[3] ^ 0x80) << 12) - | ((unsigned int) (s[4] ^ 0x80) << 6) - | (unsigned int) (s[5] ^ 0x80); - return 6; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 6; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } -#endif - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 1; -} - -#endif diff --git a/lib/unistr/u8-mbtouc-unsafe-aux.c b/lib/unistr/u8-mbtouc-unsafe-aux.c deleted file mode 100644 index 61783e4ba..000000000 --- a/lib/unistr/u8-mbtouc-unsafe-aux.c +++ /dev/null @@ -1,260 +0,0 @@ -/* Conversion UTF-8 to UCS-4. - Copyright (C) 2001-2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2001. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -/* Specification. */ -#include "unistr.h" - -#if defined IN_LIBUNISTRING || HAVE_INLINE - -int -u8_mbtouc_unsafe_aux (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c >= 0xc2) - { - if (c < 0xe0) - { - if (n >= 2) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) -#endif - { - *puc = ((unsigned int) (c & 0x1f) << 6) - | (unsigned int) (s[1] ^ 0x80); - return 2; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return 1; - } - } - else if (c < 0xf0) - { - if (n >= 3) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((c >= 0xe1 || s[1] >= 0xa0) - && (c != 0xed || s[1] < 0xa0)) -#endif - { - *puc = ((unsigned int) (c & 0x0f) << 12) - | ((unsigned int) (s[1] ^ 0x80) << 6) - | (unsigned int) (s[2] ^ 0x80); - return 3; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else - return 2; - } - } - else if (c < 0xf8) - { - if (n >= 4) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((c >= 0xf1 || s[1] >= 0x90) -#if 1 - && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90)) -#endif - ) -#endif - { - *puc = ((unsigned int) (c & 0x07) << 18) - | ((unsigned int) (s[1] ^ 0x80) << 12) - | ((unsigned int) (s[2] ^ 0x80) << 6) - | (unsigned int) (s[3] ^ 0x80); - return 4; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else if (n == 2 || (s[2] ^ 0x80) >= 0x40) - return 2; - else - return 3; - } - } -#if 0 - else if (c < 0xfc) - { - if (n >= 5) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if (c >= 0xf9 || s[1] >= 0x88) -#endif - { - *puc = ((unsigned int) (c & 0x03) << 24) - | ((unsigned int) (s[1] ^ 0x80) << 18) - | ((unsigned int) (s[2] ^ 0x80) << 12) - | ((unsigned int) (s[3] ^ 0x80) << 6) - | (unsigned int) (s[4] ^ 0x80); - return 5; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } - else if (c < 0xfe) - { - if (n >= 6) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if ((s[5] ^ 0x80) < 0x40) - { - if (c >= 0xfd || s[1] >= 0x84) -#endif - { - *puc = ((unsigned int) (c & 0x01) << 30) - | ((unsigned int) (s[1] ^ 0x80) << 24) - | ((unsigned int) (s[2] ^ 0x80) << 18) - | ((unsigned int) (s[3] ^ 0x80) << 12) - | ((unsigned int) (s[4] ^ 0x80) << 6) - | (unsigned int) (s[5] ^ 0x80); - return 6; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 6; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } -#endif - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 1; -} - -#endif diff --git a/lib/unistr/u8-mbtouc-unsafe.c b/lib/unistr/u8-mbtouc-unsafe.c deleted file mode 100644 index b73e99a1b..000000000 --- a/lib/unistr/u8-mbtouc-unsafe.c +++ /dev/null @@ -1,271 +0,0 @@ -/* Look at first character in UTF-8 string. - Copyright (C) 1999-2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2001. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -#if defined IN_LIBUNISTRING -/* Tell unistr.h to declare u8_mbtouc_unsafe as 'extern', not - 'static inline'. */ -# include "unistring-notinline.h" -#endif - -/* Specification. */ -#include "unistr.h" - -#if !HAVE_INLINE - -int -u8_mbtouc_unsafe (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c < 0x80) - { - *puc = c; - return 1; - } - else if (c >= 0xc2) - { - if (c < 0xe0) - { - if (n >= 2) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) -#endif - { - *puc = ((unsigned int) (c & 0x1f) << 6) - | (unsigned int) (s[1] ^ 0x80); - return 2; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return 1; - } - } - else if (c < 0xf0) - { - if (n >= 3) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((c >= 0xe1 || s[1] >= 0xa0) - && (c != 0xed || s[1] < 0xa0)) -#endif - { - *puc = ((unsigned int) (c & 0x0f) << 12) - | ((unsigned int) (s[1] ^ 0x80) << 6) - | (unsigned int) (s[2] ^ 0x80); - return 3; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else - return 2; - } - } - else if (c < 0xf8) - { - if (n >= 4) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((c >= 0xf1 || s[1] >= 0x90) -#if 1 - && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90)) -#endif - ) -#endif - { - *puc = ((unsigned int) (c & 0x07) << 18) - | ((unsigned int) (s[1] ^ 0x80) << 12) - | ((unsigned int) (s[2] ^ 0x80) << 6) - | (unsigned int) (s[3] ^ 0x80); - return 4; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else if (n == 2 || (s[2] ^ 0x80) >= 0x40) - return 2; - else - return 3; - } - } -#if 0 - else if (c < 0xfc) - { - if (n >= 5) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if (c >= 0xf9 || s[1] >= 0x88) -#endif - { - *puc = ((unsigned int) (c & 0x03) << 24) - | ((unsigned int) (s[1] ^ 0x80) << 18) - | ((unsigned int) (s[2] ^ 0x80) << 12) - | ((unsigned int) (s[3] ^ 0x80) << 6) - | (unsigned int) (s[4] ^ 0x80); - return 5; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } - else if (c < 0xfe) - { - if (n >= 6) - { -#if CONFIG_UNICODE_SAFETY - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if ((s[5] ^ 0x80) < 0x40) - { - if (c >= 0xfd || s[1] >= 0x84) -#endif - { - *puc = ((unsigned int) (c & 0x01) << 30) - | ((unsigned int) (s[1] ^ 0x80) << 24) - | ((unsigned int) (s[2] ^ 0x80) << 18) - | ((unsigned int) (s[3] ^ 0x80) << 12) - | ((unsigned int) (s[4] ^ 0x80) << 6) - | (unsigned int) (s[5] ^ 0x80); - return 6; - } -#if CONFIG_UNICODE_SAFETY - /* invalid multibyte character */ - *puc = 0xfffd; - return 6; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ -#endif - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } -#endif - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 1; -} - -#endif diff --git a/lib/unistr/u8-mbtouc.c b/lib/unistr/u8-mbtouc.c deleted file mode 100644 index bfb0e4df8..000000000 --- a/lib/unistr/u8-mbtouc.c +++ /dev/null @@ -1,250 +0,0 @@ -/* Look at first character in UTF-8 string. - Copyright (C) 1999-2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2001. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -#if defined IN_LIBUNISTRING -/* Tell unistr.h to declare u8_mbtouc as 'extern', not 'static inline'. */ -# include "unistring-notinline.h" -#endif - -/* Specification. */ -#include "unistr.h" - -#if !HAVE_INLINE - -int -u8_mbtouc (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c < 0x80) - { - *puc = c; - return 1; - } - else if (c >= 0xc2) - { - if (c < 0xe0) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x1f) << 6) - | (unsigned int) (s[1] ^ 0x80); - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return 1; - } - } - else if (c < 0xf0) - { - if (n >= 3) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((c >= 0xe1 || s[1] >= 0xa0) - && (c != 0xed || s[1] < 0xa0)) - { - *puc = ((unsigned int) (c & 0x0f) << 12) - | ((unsigned int) (s[1] ^ 0x80) << 6) - | (unsigned int) (s[2] ^ 0x80); - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else - return 2; - } - } - else if (c < 0xf8) - { - if (n >= 4) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((c >= 0xf1 || s[1] >= 0x90) -#if 1 - && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90)) -#endif - ) - { - *puc = ((unsigned int) (c & 0x07) << 18) - | ((unsigned int) (s[1] ^ 0x80) << 12) - | ((unsigned int) (s[2] ^ 0x80) << 6) - | (unsigned int) (s[3] ^ 0x80); - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - if (n == 1 || (s[1] ^ 0x80) >= 0x40) - return 1; - else if (n == 2 || (s[2] ^ 0x80) >= 0x40) - return 2; - else - return 3; - } - } -#if 0 - else if (c < 0xfc) - { - if (n >= 5) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if (c >= 0xf9 || s[1] >= 0x88) - { - *puc = ((unsigned int) (c & 0x03) << 24) - | ((unsigned int) (s[1] ^ 0x80) << 18) - | ((unsigned int) (s[2] ^ 0x80) << 12) - | ((unsigned int) (s[3] ^ 0x80) << 6) - | (unsigned int) (s[4] ^ 0x80); - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } - else if (c < 0xfe) - { - if (n >= 6) - { - if ((s[1] ^ 0x80) < 0x40) - { - if ((s[2] ^ 0x80) < 0x40) - { - if ((s[3] ^ 0x80) < 0x40) - { - if ((s[4] ^ 0x80) < 0x40) - { - if ((s[5] ^ 0x80) < 0x40) - { - if (c >= 0xfd || s[1] >= 0x84) - { - *puc = ((unsigned int) (c & 0x01) << 30) - | ((unsigned int) (s[1] ^ 0x80) << 24) - | ((unsigned int) (s[2] ^ 0x80) << 18) - | ((unsigned int) (s[3] ^ 0x80) << 12) - | ((unsigned int) (s[4] ^ 0x80) << 6) - | (unsigned int) (s[5] ^ 0x80); - return 6; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 6; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 5; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 4; - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 3; - } - /* invalid multibyte character */ - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return n; - } - } -#endif - } - /* invalid multibyte character */ - *puc = 0xfffd; - return 1; -} - -#endif diff --git a/lib/unistr/u8-mbtoucr.c b/lib/unistr/u8-mbtoucr.c deleted file mode 100644 index 5fd45b57e..000000000 --- a/lib/unistr/u8-mbtoucr.c +++ /dev/null @@ -1,285 +0,0 @@ -/* Look at first character in UTF-8 string, returning an error code. - Copyright (C) 1999-2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2001. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -/* Specification. */ -#include "unistr.h" - -int -u8_mbtoucr (ucs4_t *puc, const uint8_t *s, size_t n) -{ - uint8_t c = *s; - - if (c < 0x80) - { - *puc = c; - return 1; - } - else if (c >= 0xc2) - { - if (c < 0xe0) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x1f) << 6) - | (unsigned int) (s[1] ^ 0x80); - return 2; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - else if (c < 0xf0) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40 - && (c >= 0xe1 || s[1] >= 0xa0) - && (c != 0xed || s[1] < 0xa0)) - { - if (n >= 3) - { - if ((s[2] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x0f) << 12) - | ((unsigned int) (s[1] ^ 0x80) << 6) - | (unsigned int) (s[2] ^ 0x80); - return 3; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - else if (c < 0xf8) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40 - && (c >= 0xf1 || s[1] >= 0x90) -#if 1 - && (c < 0xf4 || (c == 0xf4 && s[1] < 0x90)) -#endif - ) - { - if (n >= 3) - { - if ((s[2] ^ 0x80) < 0x40) - { - if (n >= 4) - { - if ((s[3] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x07) << 18) - | ((unsigned int) (s[1] ^ 0x80) << 12) - | ((unsigned int) (s[2] ^ 0x80) << 6) - | (unsigned int) (s[3] ^ 0x80); - return 4; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } -#if 0 - else if (c < 0xfc) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40 - && (c >= 0xf9 || s[1] >= 0x88)) - { - if (n >= 3) - { - if ((s[2] ^ 0x80) < 0x40) - { - if (n >= 4) - { - if ((s[3] ^ 0x80) < 0x40) - { - if (n >= 5) - { - if ((s[4] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x03) << 24) - | ((unsigned int) (s[1] ^ 0x80) << 18) - | ((unsigned int) (s[2] ^ 0x80) << 12) - | ((unsigned int) (s[3] ^ 0x80) << 6) - | (unsigned int) (s[4] ^ 0x80); - return 5; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - else if (c < 0xfe) - { - if (n >= 2) - { - if ((s[1] ^ 0x80) < 0x40 - && (c >= 0xfd || s[1] >= 0x84)) - { - if (n >= 3) - { - if ((s[2] ^ 0x80) < 0x40) - { - if (n >= 4) - { - if ((s[3] ^ 0x80) < 0x40) - { - if (n >= 5) - { - if ((s[4] ^ 0x80) < 0x40) - { - if (n >= 6) - { - if ((s[5] ^ 0x80) < 0x40) - { - *puc = ((unsigned int) (c & 0x01) << 30) - | ((unsigned int) (s[1] ^ 0x80) << 24) - | ((unsigned int) (s[2] ^ 0x80) << 18) - | ((unsigned int) (s[3] ^ 0x80) << 12) - | ((unsigned int) (s[4] ^ 0x80) << 6) - | (unsigned int) (s[5] ^ 0x80); - return 6; - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } - /* invalid multibyte character */ - } - else - { - /* incomplete multibyte character */ - *puc = 0xfffd; - return -2; - } - } -#endif - } - /* invalid multibyte character */ - *puc = 0xfffd; - return -1; -} diff --git a/lib/unistr/u8-prev.c b/lib/unistr/u8-prev.c deleted file mode 100644 index b609acf73..000000000 --- a/lib/unistr/u8-prev.c +++ /dev/null @@ -1,93 +0,0 @@ -/* Iterate over previous character in UTF-8 string. - Copyright (C) 2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2002. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -/* Specification. */ -#include "unistr.h" - -const uint8_t * -u8_prev (ucs4_t *puc, const uint8_t *s, const uint8_t *start) -{ - /* Keep in sync with unistr.h and u8-mbtouc-aux.c. */ - if (s != start) - { - uint8_t c_1 = s[-1]; - - if (c_1 < 0x80) - { - *puc = c_1; - return s - 1; - } -#if CONFIG_UNICODE_SAFETY - if ((c_1 ^ 0x80) < 0x40) -#endif - if (s - 1 != start) - { - uint8_t c_2 = s[-2]; - - if (c_2 >= 0xc2 && c_2 < 0xe0) - { - *puc = ((unsigned int) (c_2 & 0x1f) << 6) - | (unsigned int) (c_1 ^ 0x80); - return s - 2; - } -#if CONFIG_UNICODE_SAFETY - if ((c_2 ^ 0x80) < 0x40) -#endif - if (s - 2 != start) - { - uint8_t c_3 = s[-3]; - - if (c_3 >= 0xe0 && c_3 < 0xf0 -#if CONFIG_UNICODE_SAFETY - && (c_3 >= 0xe1 || c_2 >= 0xa0) - && (c_3 != 0xed || c_2 < 0xa0) -#endif - ) - { - *puc = ((unsigned int) (c_3 & 0x0f) << 12) - | ((unsigned int) (c_2 ^ 0x80) << 6) - | (unsigned int) (c_1 ^ 0x80); - return s - 3; - } -#if CONFIG_UNICODE_SAFETY - if ((c_3 ^ 0x80) < 0x40) -#endif - if (s - 3 != start) - { - uint8_t c_4 = s[-4]; - - if (c_4 >= 0xf0 && c_4 < 0xf8 -#if CONFIG_UNICODE_SAFETY - && (c_4 >= 0xf1 || c_3 >= 0x90) - && (c_4 < 0xf4 || (c_4 == 0xf4 && c_3 < 0x90)) -#endif - ) - { - *puc = ((unsigned int) (c_4 & 0x07) << 18) - | ((unsigned int) (c_3 ^ 0x80) << 12) - | ((unsigned int) (c_2 ^ 0x80) << 6) - | (unsigned int) (c_1 ^ 0x80); - return s - 4; - } - } - } - } - } - return NULL; -} diff --git a/lib/unistr/u8-uctomb-aux.c b/lib/unistr/u8-uctomb-aux.c deleted file mode 100644 index 48adae10e..000000000 --- a/lib/unistr/u8-uctomb-aux.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Conversion UCS-4 to UTF-8. - Copyright (C) 2002, 2006-2007, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2002. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -/* Specification. */ -#include "unistr.h" - -int -u8_uctomb_aux (uint8_t *s, ucs4_t uc, int n) -{ - int count; - - if (uc < 0x80) - /* The case n >= 1 is already handled by the caller. */ - return -2; - else if (uc < 0x800) - count = 2; - else if (uc < 0x10000) - { - if (uc < 0xd800 || uc >= 0xe000) - count = 3; - else - return -1; - } -#if 0 - else if (uc < 0x200000) - count = 4; - else if (uc < 0x4000000) - count = 5; - else if (uc <= 0x7fffffff) - count = 6; -#else - else if (uc < 0x110000) - count = 4; -#endif - else - return -1; - - if (n < count) - return -2; - - switch (count) /* note: code falls through cases! */ - { -#if 0 - case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000; - case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000; -#endif - case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; - case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; - case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; - /*case 1:*/ s[0] = uc; - } - return count; -} diff --git a/lib/unistr/u8-uctomb.c b/lib/unistr/u8-uctomb.c deleted file mode 100644 index d62ad0fa1..000000000 --- a/lib/unistr/u8-uctomb.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Store a character in UTF-8 string. - Copyright (C) 2002, 2005-2006, 2009-2016 Free Software Foundation, Inc. - Written by Bruno Haible <bruno@clisp.org>, 2002. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#include <config.h> - -#if defined IN_LIBUNISTRING -/* Tell unistr.h to declare u8_uctomb as 'extern', not 'static inline'. */ -# include "unistring-notinline.h" -#endif - -/* Specification. */ -#include "unistr.h" - -#if !HAVE_INLINE - -int -u8_uctomb (uint8_t *s, ucs4_t uc, int n) -{ - if (uc < 0x80) - { - if (n > 0) - { - s[0] = uc; - return 1; - } - /* else return -2, below. */ - } - else - { - int count; - - if (uc < 0x800) - count = 2; - else if (uc < 0x10000) - { - if (uc < 0xd800 || uc >= 0xe000) - count = 3; - else - return -1; - } -#if 0 - else if (uc < 0x200000) - count = 4; - else if (uc < 0x4000000) - count = 5; - else if (uc <= 0x7fffffff) - count = 6; -#else - else if (uc < 0x110000) - count = 4; -#endif - else - return -1; - - if (n >= count) - { - switch (count) /* note: code falls through cases! */ - { -#if 0 - case 6: s[5] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x4000000; - case 5: s[4] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x200000; -#endif - case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; - case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; - case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; - /*case 1:*/ s[0] = uc; - } - return count; - } - } - return -2; -} - -#endif diff --git a/lib/unitypes.in.h b/lib/unitypes.in.h deleted file mode 100644 index 4a1e65ede..000000000 --- a/lib/unitypes.in.h +++ /dev/null @@ -1,46 +0,0 @@ -/* Elementary types and macros for the GNU UniString library. - Copyright (C) 2002, 2005-2006, 2009-2016 Free Software Foundation, Inc. - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -#ifndef _UNITYPES_H -#define _UNITYPES_H - -/* Get uint8_t, uint16_t, uint32_t. */ -#include <stdint.h> - -/* Type representing a Unicode character. */ -typedef uint32_t ucs4_t; - -/* Attribute of a function whose result depends only on the arguments - (not pointers!) and which has no side effects. */ -#ifndef _UC_ATTRIBUTE_CONST -# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) -# define _UC_ATTRIBUTE_CONST __attribute__ ((__const__)) -# else -# define _UC_ATTRIBUTE_CONST -# endif -#endif - -/* Attribute of a function whose result depends only on the arguments - (possibly pointers) and global memory, and which has no side effects. */ -#ifndef _UC_ATTRIBUTE_PURE -# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -# define _UC_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define _UC_ATTRIBUTE_PURE -# endif -#endif - -#endif /* _UNITYPES_H */ |