diff options
Diffstat (limited to 'wcsmbs')
118 files changed, 0 insertions, 7197 deletions
diff --git a/wcsmbs/Depend b/wcsmbs/Depend deleted file mode 100644 index f3e1156a4e..0000000000 --- a/wcsmbs/Depend +++ /dev/null @@ -1 +0,0 @@ -localedata diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile deleted file mode 100644 index 08b1de11a8..0000000000 --- a/wcsmbs/Makefile +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (C) 1995-2017 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library 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 C Library 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 the GNU C Library; if not, see -# <http://www.gnu.org/licenses/>. - -# -# Sub-makefile for wcsmbs portion of the library. -# -subdir := wcsmbs - -include ../Makeconfig - -headers := wchar.h bits/wchar.h bits/wchar2.h bits/wchar-ldbl.h uchar.h \ - bits/types/__mbstate_t.h bits/types/mbstate_t.h bits/types/wint_t.h - -routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \ - wcsncmp wcsncpy wcspbrk wcsrchr wcsspn wcstok wcsstr wmemchr \ - wmemcmp wmemcpy wmemmove wmemset wcpcpy wcpncpy wmempcpy \ - btowc wctob mbsinit \ - mbrlen mbrtowc wcrtomb mbsrtowcs wcsrtombs \ - mbsnrtowcs wcsnrtombs wcsnlen wcschrnul \ - wcstol wcstoul wcstoll wcstoull wcstod wcstold wcstof \ - wcstol_l wcstoul_l wcstoll_l wcstoull_l \ - wcstod_l wcstold_l wcstof_l \ - wcstod_nan wcstold_nan wcstof_nan \ - wcscoll wcsxfrm \ - wcwidth wcswidth \ - wcscoll_l wcsxfrm_l \ - wcscasecmp wcsncase wcscasecmp_l wcsncase_l \ - wcsmbsload mbsrtowcs_l \ - isoc99_wscanf isoc99_vwscanf isoc99_fwscanf isoc99_vfwscanf \ - isoc99_swscanf isoc99_vswscanf \ - mbrtoc16 c16rtomb - -strop-tests := wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \ - wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \ - wcscspn wmemchr wmemset -tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \ - tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \ - tst-c16c32-1 wcsatcliff tst-wcstol-locale tst-wcstod-nan-locale \ - tst-wcstod-round \ - $(addprefix test-,$(strop-tests)) - -include ../Rules - -ifeq ($(run-built-tests),yes) -LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 hr_HR.ISO-8859-2 \ - ja_JP.EUC-JP zh_TW.EUC-TW tr_TR.UTF-8 tr_TR.ISO-8859-9 -include ../gen-locales.mk - -$(objpfx)tst-btowc.out: $(gen-locales) -$(objpfx)tst-c16c32-1.out: $(gen-locales) -$(objpfx)tst-mbrtowc.out: $(gen-locales) -$(objpfx)tst-mbrtowc2.out: $(gen-locales) -$(objpfx)tst-wcrtomb.out: $(gen-locales) -$(objpfx)wcsmbs-tst1.out: $(gen-locales) -$(objpfx)tst-wcstol-locale.out: $(gen-locales) -$(objpfx)tst-wcstod-nan-locale.out: $(gen-locales) -endif - -$(objpfx)tst-wcstod-round: $(libm) - -CFLAGS-wcwidth.c = -I../wctype -CFLAGS-wcswidth.c = -I../wctype - -strtox-CFLAGS = -I../include -CFLAGS-wcstol.c = $(strtox-CFLAGS) -CFLAGS-wcstoul.c = $(strtox-CFLAGS) -CFLAGS-wcstoll.c = $(strtox-CFLAGS) -CFLAGS-wcstoull.c = $(strtox-CFLAGS) -CFLAGS-wcstod.c = $(strtox-CFLAGS) -CFLAGS-wcstold.c = $(strtox-CFLAGS) -CFLAGS-wcstof.c = $(strtox-CFLAGS) -CFLAGS-wcstol_l.c = $(strtox-CFLAGS) -CFLAGS-wcstoul_l.c = $(strtox-CFLAGS) -CFLAGS-wcstoll_l.c = $(strtox-CFLAGS) -CFLAGS-wcstoull_l.c = $(strtox-CFLAGS) -CFLAGS-wcstod_l.c = $(strtox-CFLAGS) -CFLAGS-wcstold_l.c = $(strtox-CFLAGS) -CFLAGS-wcstof_l.c = $(strtox-CFLAGS) -CPPFLAGS-tst-wchar-h.c = -D_FORTIFY_SOURCE=2 - -CFLAGS-isoc99_wscanf.c += -fexceptions -CFLAGS-isoc99_fwscanf.c += -fexceptions -CFLAGS-isoc99_vwscanf.c += -fexceptions -CFLAGS-isoc99_vfwscanf.c += -fexceptions - -CPPFLAGS += $(libio-mtsafe) - -# We need to find the default version of strtold_l in stdlib. -CPPFLAGS-wcstold_l.c = -I../stdlib - -$(objpfx)tst-wcstod-nan-locale: $(libm) diff --git a/wcsmbs/Versions b/wcsmbs/Versions deleted file mode 100644 index b8f7bd73eb..0000000000 --- a/wcsmbs/Versions +++ /dev/null @@ -1,37 +0,0 @@ -libc { - GLIBC_2.0 { - # functions used in inline functions or macros - __mbrlen; __mbrtowc; - __wcstod_internal; __wcstof_internal; __wcstold_internal; - __wcstol_internal; __wcstoll_internal; - __wcstoul_internal; __wcstoull_internal; - - # b* - btowc; - - # w* - wcpcpy; wcpncpy; wcrtomb; wcscat; wcschr; wcscmp; wcscoll; - wcscpy; wcscspn; wcsdup; wcslen; wcsncat; wcsncmp; - wcsncpy; wcsnrtombs; wcspbrk; wcsrchr; wcsrtombs; wcsspn; wcsstr; - wcstod; wcstof; wcstok; wcstol; wcstold; wcstoq; wcstoul; - wcstouq; wcswidth; wcsxfrm; wctob; - - wmemchr; wmemcmp; wmemcpy; wmemmove; wmemset; - } - GLIBC_2.1 { - # w* - wcscasecmp; wcsncasecmp; wcsnlen; wcstoll; - wcstoimax; wcstoumax; wcstoull; wcswcs; wmemrtombs; wmemrtowcs; - } - GLIBC_2.2 { - # w* - wcschrnul; wmempcpy; - } - GLIBC_2.7 { - __isoc99_fwscanf; __isoc99_swscanf; __isoc99_vfwscanf; __isoc99_vswscanf; - __isoc99_vwscanf; __isoc99_wscanf; - } - GLIBC_2.16 { - c16rtomb; c32rtomb; mbrtoc16; mbrtoc32; - } -} diff --git a/wcsmbs/bits/types/__mbstate_t.h b/wcsmbs/bits/types/__mbstate_t.h deleted file mode 100644 index 1d8a4e28d1..0000000000 --- a/wcsmbs/bits/types/__mbstate_t.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef ____mbstate_t_defined -#define ____mbstate_t_defined 1 - -/* Integral type unchanged by default argument promotions that can - hold any value corresponding to members of the extended character - set, as well as at least one value that does not correspond to any - member of the extended character set. */ -#ifndef __WINT_TYPE__ -# define __WINT_TYPE__ unsigned int -#endif - -/* Conversion state information. */ -typedef struct -{ - int __count; - union - { - __WINT_TYPE__ __wch; - char __wchb[4]; - } __value; /* Value so far. */ -} __mbstate_t; - -#endif diff --git a/wcsmbs/bits/types/mbstate_t.h b/wcsmbs/bits/types/mbstate_t.h deleted file mode 100644 index 8d1baa5c3b..0000000000 --- a/wcsmbs/bits/types/mbstate_t.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef __mbstate_t_defined -#define __mbstate_t_defined 1 - -#include <bits/types/__mbstate_t.h> - -typedef __mbstate_t mbstate_t; - -#endif diff --git a/wcsmbs/bits/types/wint_t.h b/wcsmbs/bits/types/wint_t.h deleted file mode 100644 index fbd63dbc84..0000000000 --- a/wcsmbs/bits/types/wint_t.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __wint_t_defined -#define __wint_t_defined 1 - -/* Some versions of stddef.h provide wint_t, even though neither the - C nor C++ standards, nor POSIX, specifies this. We assume that - stddef.h will define the macro _WINT_T if and only if it provides - wint_t, and conversely, that it will avoid providing wint_t if - _WINT_T is already defined. */ -#ifndef _WINT_T -#define _WINT_T 1 - -/* Integral type unchanged by default argument promotions that can - hold any value corresponding to members of the extended character - set, as well as at least one value that does not correspond to any - member of the extended character set. */ -#ifndef __WINT_TYPE__ -# define __WINT_TYPE__ unsigned int -#endif - -typedef __WINT_TYPE__ wint_t; - -#endif /* _WINT_T */ -#endif /* bits/types/wint_t.h */ diff --git a/wcsmbs/bits/wchar-ldbl.h b/wcsmbs/bits/wchar-ldbl.h deleted file mode 100644 index a4d1d4d1e9..0000000000 --- a/wcsmbs/bits/wchar-ldbl.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -mlong-double-64 compatibility mode for <wchar.h> functions. - Copyright (C) 2006-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _WCHAR_H -# error "Never include <bits/wchar-ldbl.h> directly; use <wchar.h> instead." -#endif - -#if defined __USE_ISOC95 || defined __USE_UNIX98 -__LDBL_REDIR_DECL (fwprintf); -__LDBL_REDIR_DECL (wprintf); -__LDBL_REDIR_DECL (swprintf); -__LDBL_REDIR_DECL (vfwprintf); -__LDBL_REDIR_DECL (vwprintf); -__LDBL_REDIR_DECL (vswprintf); -# if defined __USE_ISOC99 && !defined __USE_GNU \ - && !defined __REDIRECT \ - && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) -__LDBL_REDIR1_DECL (fwscanf, __nldbl___isoc99_fwscanf) -__LDBL_REDIR1_DECL (wscanf, __nldbl___isoc99_wscanf) -__LDBL_REDIR1_DECL (swscanf, __nldbl___isoc99_swscanf) -# else -__LDBL_REDIR_DECL (fwscanf); -__LDBL_REDIR_DECL (wscanf); -__LDBL_REDIR_DECL (swscanf); -# endif -#endif - -#ifdef __USE_ISOC99 -__LDBL_REDIR1_DECL (wcstold, wcstod); -# if !defined __USE_GNU && !defined __REDIRECT \ - && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) -__LDBL_REDIR1_DECL (vfwscanf, __nldbl___isoc99_vfwscanf) -__LDBL_REDIR1_DECL (vwscanf, __nldbl___isoc99_vwscanf) -__LDBL_REDIR1_DECL (vswscanf, __nldbl___isoc99_vswscanf) -# else -__LDBL_REDIR_DECL (vfwscanf); -__LDBL_REDIR_DECL (vwscanf); -__LDBL_REDIR_DECL (vswscanf); -# endif -#endif - -#ifdef __USE_GNU -__LDBL_REDIR1_DECL (wcstold_l, wcstod_l); -#endif - -#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function -__LDBL_REDIR_DECL (__swprintf_chk) -__LDBL_REDIR_DECL (__vswprintf_chk) -# if __USE_FORTIFY_LEVEL > 1 -__LDBL_REDIR_DECL (__fwprintf_chk) -__LDBL_REDIR_DECL (__wprintf_chk) -__LDBL_REDIR_DECL (__vfwprintf_chk) -__LDBL_REDIR_DECL (__vwprintf_chk) -# endif -#endif diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h deleted file mode 100644 index 4a461e6e29..0000000000 --- a/wcsmbs/bits/wchar2.h +++ /dev/null @@ -1,593 +0,0 @@ -/* Checking macros for wchar functions. - Copyright (C) 2005-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _WCHAR_H -# error "Never include <bits/wchar2.h> directly; use <wchar.h> instead." -#endif - - -extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n, - size_t __ns1) __THROW; -extern wchar_t *__REDIRECT_NTH (__wmemcpy_alias, - (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n), - wmemcpy); -extern wchar_t *__REDIRECT_NTH (__wmemcpy_chk_warn, - (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n, - size_t __ns1), __wmemcpy_chk) - __warnattr ("wmemcpy called with length bigger than size of destination " - "buffer"); - -__fortify_function wchar_t * -__NTH (wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, - size_t __n)) -{ - if (__bos0 (__s1) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __wmemcpy_chk (__s1, __s2, __n, - __bos0 (__s1) / sizeof (wchar_t)); - - if (__n > __bos0 (__s1) / sizeof (wchar_t)) - return __wmemcpy_chk_warn (__s1, __s2, __n, - __bos0 (__s1) / sizeof (wchar_t)); - } - return __wmemcpy_alias (__s1, __s2, __n); -} - - -extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2, - size_t __n, size_t __ns1) __THROW; -extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1, - const wchar_t *__s2, - size_t __n), wmemmove); -extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn, - (wchar_t *__s1, const wchar_t *__s2, - size_t __n, size_t __ns1), __wmemmove_chk) - __warnattr ("wmemmove called with length bigger than size of destination " - "buffer"); - -__fortify_function wchar_t * -__NTH (wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)) -{ - if (__bos0 (__s1) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __wmemmove_chk (__s1, __s2, __n, - __bos0 (__s1) / sizeof (wchar_t)); - - if (__n > __bos0 (__s1) / sizeof (wchar_t)) - return __wmemmove_chk_warn (__s1, __s2, __n, - __bos0 (__s1) / sizeof (wchar_t)); - } - return __wmemmove_alias (__s1, __s2, __n); -} - - -#ifdef __USE_GNU -extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n, - size_t __ns1) __THROW; -extern wchar_t *__REDIRECT_NTH (__wmempcpy_alias, - (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, - size_t __n), wmempcpy); -extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn, - (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n, - size_t __ns1), __wmempcpy_chk) - __warnattr ("wmempcpy called with length bigger than size of destination " - "buffer"); - -__fortify_function wchar_t * -__NTH (wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2, - size_t __n)) -{ - if (__bos0 (__s1) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __wmempcpy_chk (__s1, __s2, __n, - __bos0 (__s1) / sizeof (wchar_t)); - - if (__n > __bos0 (__s1) / sizeof (wchar_t)) - return __wmempcpy_chk_warn (__s1, __s2, __n, - __bos0 (__s1) / sizeof (wchar_t)); - } - return __wmempcpy_alias (__s1, __s2, __n); -} -#endif - - -extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n, - size_t __ns) __THROW; -extern wchar_t *__REDIRECT_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c, - size_t __n), wmemset); -extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn, - (wchar_t *__s, wchar_t __c, size_t __n, - size_t __ns), __wmemset_chk) - __warnattr ("wmemset called with length bigger than size of destination " - "buffer"); - -__fortify_function wchar_t * -__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n)) -{ - if (__bos0 (__s) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __wmemset_chk (__s, __c, __n, __bos0 (__s) / sizeof (wchar_t)); - - if (__n > __bos0 (__s) / sizeof (wchar_t)) - return __wmemset_chk_warn (__s, __c, __n, - __bos0 (__s) / sizeof (wchar_t)); - } - return __wmemset_alias (__s, __c, __n); -} - - -extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcscpy_alias, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src), wcscpy); - -__fortify_function wchar_t * -__NTH (wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src)) -{ - if (__bos (__dest) != (size_t) -1) - return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); - return __wcscpy_alias (__dest, __src); -} - - -extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __destlen) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src), wcpcpy); - -__fortify_function wchar_t * -__NTH (wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src)) -{ - if (__bos (__dest) != (size_t) -1) - return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); - return __wcpcpy_alias (__dest, __src); -} - - -extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, size_t __n, - size_t __destlen) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcsncpy_alias, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n), wcsncpy); -extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n, size_t __destlen), __wcsncpy_chk) - __warnattr ("wcsncpy called with length bigger than size of destination " - "buffer"); - -__fortify_function wchar_t * -__NTH (wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, - size_t __n)) -{ - if (__bos (__dest) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __wcsncpy_chk (__dest, __src, __n, - __bos (__dest) / sizeof (wchar_t)); - if (__n > __bos (__dest) / sizeof (wchar_t)) - return __wcsncpy_chk_warn (__dest, __src, __n, - __bos (__dest) / sizeof (wchar_t)); - } - return __wcsncpy_alias (__dest, __src, __n); -} - - -extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, size_t __n, - size_t __destlen) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcpncpy_alias, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n), wcpncpy); -extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n, size_t __destlen), __wcpncpy_chk) - __warnattr ("wcpncpy called with length bigger than size of destination " - "buffer"); - -__fortify_function wchar_t * -__NTH (wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src, - size_t __n)) -{ - if (__bos (__dest) != (size_t) -1) - { - if (!__builtin_constant_p (__n)) - return __wcpncpy_chk (__dest, __src, __n, - __bos (__dest) / sizeof (wchar_t)); - if (__n > __bos (__dest) / sizeof (wchar_t)) - return __wcpncpy_chk_warn (__dest, __src, __n, - __bos (__dest) / sizeof (wchar_t)); - } - return __wcpncpy_alias (__dest, __src, __n); -} - - -extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __destlen) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcscat_alias, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src), wcscat); - -__fortify_function wchar_t * -__NTH (wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src)) -{ - if (__bos (__dest) != (size_t) -1) - return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); - return __wcscat_alias (__dest, __src); -} - - -extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n, size_t __destlen) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcsncat_alias, - (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, - size_t __n), wcsncat); - -__fortify_function wchar_t * -__NTH (wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src, - size_t __n)) -{ - if (__bos (__dest) != (size_t) -1) - return __wcsncat_chk (__dest, __src, __n, - __bos (__dest) / sizeof (wchar_t)); - return __wcsncat_alias (__dest, __src, __n); -} - - -extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n, - int __flag, size_t __s_len, - const wchar_t *__restrict __format, ...) - __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 6))) */; - -extern int __REDIRECT_NTH_LDBL (__swprintf_alias, - (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __fmt, ...), - swprintf); - -#ifdef __va_arg_pack -__fortify_function int -__NTH (swprintf (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __fmt, ...)) -{ - if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) - return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, - __bos (__s) / sizeof (wchar_t), - __fmt, __va_arg_pack ()); - return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ()); -} -#elif !defined __cplusplus -/* XXX We might want to have support in gcc for swprintf. */ -# define swprintf(s, n, ...) \ - (__bos (s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1 \ - ? __swprintf_chk (s, n, __USE_FORTIFY_LEVEL - 1, \ - __bos (s) / sizeof (wchar_t), __VA_ARGS__) \ - : swprintf (s, n, __VA_ARGS__)) -#endif - -extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n, - int __flag, size_t __s_len, - const wchar_t *__restrict __format, - __gnuc_va_list __arg) - __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */; - -extern int __REDIRECT_NTH_LDBL (__vswprintf_alias, - (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __fmt, - __gnuc_va_list __ap), vswprintf); - -__fortify_function int -__NTH (vswprintf (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __fmt, __gnuc_va_list __ap)) -{ - if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) - return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, - __bos (__s) / sizeof (wchar_t), __fmt, __ap); - return __vswprintf_alias (__s, __n, __fmt, __ap); -} - - -#if __USE_FORTIFY_LEVEL > 1 - -extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag, - const wchar_t *__restrict __format, ...); -extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format, - ...); -extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag, - const wchar_t *__restrict __format, - __gnuc_va_list __ap); -extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format, - __gnuc_va_list __ap); - -# ifdef __va_arg_pack -__fortify_function int -wprintf (const wchar_t *__restrict __fmt, ...) -{ - return __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ()); -} - -__fortify_function int -fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...) -{ - return __fwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, - __va_arg_pack ()); -} -# elif !defined __cplusplus -# define wprintf(...) \ - __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__) -# define fwprintf(stream, ...) \ - __fwprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__) -# endif - -__fortify_function int -vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap) -{ - return __vwprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap); -} - -__fortify_function int -vfwprintf (__FILE *__restrict __stream, - const wchar_t *__restrict __fmt, __gnuc_va_list __ap) -{ - return __vfwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap); -} - -#endif - -extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n, - __FILE *__restrict __stream) __wur; -extern wchar_t *__REDIRECT (__fgetws_alias, - (wchar_t *__restrict __s, int __n, - __FILE *__restrict __stream), fgetws) __wur; -extern wchar_t *__REDIRECT (__fgetws_chk_warn, - (wchar_t *__restrict __s, size_t __size, int __n, - __FILE *__restrict __stream), __fgetws_chk) - __wur __warnattr ("fgetws called with bigger size than length " - "of destination buffer"); - -__fortify_function __wur wchar_t * -fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) -{ - if (__bos (__s) != (size_t) -1) - { - if (!__builtin_constant_p (__n) || __n <= 0) - return __fgetws_chk (__s, __bos (__s) / sizeof (wchar_t), - __n, __stream); - - if ((size_t) __n > __bos (__s) / sizeof (wchar_t)) - return __fgetws_chk_warn (__s, __bos (__s) / sizeof (wchar_t), - __n, __stream); - } - return __fgetws_alias (__s, __n, __stream); -} - -#ifdef __USE_GNU -extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size, - int __n, __FILE *__restrict __stream) - __wur; -extern wchar_t *__REDIRECT (__fgetws_unlocked_alias, - (wchar_t *__restrict __s, int __n, - __FILE *__restrict __stream), fgetws_unlocked) - __wur; -extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn, - (wchar_t *__restrict __s, size_t __size, int __n, - __FILE *__restrict __stream), - __fgetws_unlocked_chk) - __wur __warnattr ("fgetws_unlocked called with bigger size than length " - "of destination buffer"); - -__fortify_function __wur wchar_t * -fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) -{ - if (__bos (__s) != (size_t) -1) - { - if (!__builtin_constant_p (__n) || __n <= 0) - return __fgetws_unlocked_chk (__s, __bos (__s) / sizeof (wchar_t), - __n, __stream); - - if ((size_t) __n > __bos (__s) / sizeof (wchar_t)) - return __fgetws_unlocked_chk_warn (__s, __bos (__s) / sizeof (wchar_t), - __n, __stream); - } - return __fgetws_unlocked_alias (__s, __n, __stream); -} -#endif - - -extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, - mbstate_t *__restrict __p, - size_t __buflen) __THROW __wur; -extern size_t __REDIRECT_NTH (__wcrtomb_alias, - (char *__restrict __s, wchar_t __wchar, - mbstate_t *__restrict __ps), wcrtomb) __wur; - -__fortify_function __wur size_t -__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar, - mbstate_t *__restrict __ps)) -{ - /* We would have to include <limits.h> to get a definition of MB_LEN_MAX. - But this would only disturb the namespace. So we define our own - version here. */ -#define __WCHAR_MB_LEN_MAX 16 -#if defined MB_LEN_MAX && MB_LEN_MAX != __WCHAR_MB_LEN_MAX -# error "Assumed value of MB_LEN_MAX wrong" -#endif - if (__bos (__s) != (size_t) -1 && __WCHAR_MB_LEN_MAX > __bos (__s)) - return __wcrtomb_chk (__s, __wchar, __ps, __bos (__s)); - return __wcrtomb_alias (__s, __wchar, __ps); -} - - -extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst, - const char **__restrict __src, - size_t __len, mbstate_t *__restrict __ps, - size_t __dstlen) __THROW; -extern size_t __REDIRECT_NTH (__mbsrtowcs_alias, - (wchar_t *__restrict __dst, - const char **__restrict __src, - size_t __len, mbstate_t *__restrict __ps), - mbsrtowcs); -extern size_t __REDIRECT_NTH (__mbsrtowcs_chk_warn, - (wchar_t *__restrict __dst, - const char **__restrict __src, - size_t __len, mbstate_t *__restrict __ps, - size_t __dstlen), __mbsrtowcs_chk) - __warnattr ("mbsrtowcs called with dst buffer smaller than len " - "* sizeof (wchar_t)"); - -__fortify_function size_t -__NTH (mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, - size_t __len, mbstate_t *__restrict __ps)) -{ - if (__bos (__dst) != (size_t) -1) - { - if (!__builtin_constant_p (__len)) - return __mbsrtowcs_chk (__dst, __src, __len, __ps, - __bos (__dst) / sizeof (wchar_t)); - - if (__len > __bos (__dst) / sizeof (wchar_t)) - return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps, - __bos (__dst) / sizeof (wchar_t)); - } - return __mbsrtowcs_alias (__dst, __src, __len, __ps); -} - - -extern size_t __wcsrtombs_chk (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __len, mbstate_t *__restrict __ps, - size_t __dstlen) __THROW; -extern size_t __REDIRECT_NTH (__wcsrtombs_alias, - (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __len, mbstate_t *__restrict __ps), - wcsrtombs); -extern size_t __REDIRECT_NTH (__wcsrtombs_chk_warn, - (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __len, mbstate_t *__restrict __ps, - size_t __dstlen), __wcsrtombs_chk) - __warnattr ("wcsrtombs called with dst buffer smaller than len"); - -__fortify_function size_t -__NTH (wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src, - size_t __len, mbstate_t *__restrict __ps)) -{ - if (__bos (__dst) != (size_t) -1) - { - if (!__builtin_constant_p (__len)) - return __wcsrtombs_chk (__dst, __src, __len, __ps, __bos (__dst)); - - if (__len > __bos (__dst)) - return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __bos (__dst)); - } - return __wcsrtombs_alias (__dst, __src, __len, __ps); -} - - -#ifdef __USE_GNU -extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst, - const char **__restrict __src, size_t __nmc, - size_t __len, mbstate_t *__restrict __ps, - size_t __dstlen) __THROW; -extern size_t __REDIRECT_NTH (__mbsnrtowcs_alias, - (wchar_t *__restrict __dst, - const char **__restrict __src, size_t __nmc, - size_t __len, mbstate_t *__restrict __ps), - mbsnrtowcs); -extern size_t __REDIRECT_NTH (__mbsnrtowcs_chk_warn, - (wchar_t *__restrict __dst, - const char **__restrict __src, size_t __nmc, - size_t __len, mbstate_t *__restrict __ps, - size_t __dstlen), __mbsnrtowcs_chk) - __warnattr ("mbsnrtowcs called with dst buffer smaller than len " - "* sizeof (wchar_t)"); - -__fortify_function size_t -__NTH (mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src, - size_t __nmc, size_t __len, mbstate_t *__restrict __ps)) -{ - if (__bos (__dst) != (size_t) -1) - { - if (!__builtin_constant_p (__len)) - return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps, - __bos (__dst) / sizeof (wchar_t)); - - if (__len > __bos (__dst) / sizeof (wchar_t)) - return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps, - __bos (__dst) / sizeof (wchar_t)); - } - return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps); -} - - -extern size_t __wcsnrtombs_chk (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __nwc, size_t __len, - mbstate_t *__restrict __ps, size_t __dstlen) - __THROW; -extern size_t __REDIRECT_NTH (__wcsnrtombs_alias, - (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __nwc, size_t __len, - mbstate_t *__restrict __ps), wcsnrtombs); -extern size_t __REDIRECT_NTH (__wcsnrtombs_chk_warn, - (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __nwc, size_t __len, - mbstate_t *__restrict __ps, - size_t __dstlen), __wcsnrtombs_chk) - __warnattr ("wcsnrtombs called with dst buffer smaller than len"); - -__fortify_function size_t -__NTH (wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src, - size_t __nwc, size_t __len, mbstate_t *__restrict __ps)) -{ - if (__bos (__dst) != (size_t) -1) - { - if (!__builtin_constant_p (__len)) - return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, - __bos (__dst)); - - if (__len > __bos (__dst)) - return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps, - __bos (__dst)); - } - return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps); -} -#endif diff --git a/wcsmbs/btowc.c b/wcsmbs/btowc.c deleted file mode 100644 index 22464dc5e2..0000000000 --- a/wcsmbs/btowc.c +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <ctype.h> -#include <dlfcn.h> -#include <gconv.h> -#include <stdio.h> -#include <string.h> -#include <wchar.h> -#include <wcsmbsload.h> -#include <limits.h> - -#include <sysdep.h> - - -wint_t -__btowc (int c) -{ - const struct gconv_fcts *fcts; - - /* If the parameter does not fit into one byte or it is the EOF value - we can give the answer now. */ - if (c < SCHAR_MIN || c > UCHAR_MAX || c == EOF) - return WEOF; - - /* We know that only ASCII compatible encodings are used for the - locale and that the wide character encoding is ISO 10646. */ - if (isascii (c)) - return (wint_t) c; - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - __gconv_btowc_fct btowc_fct = fcts->towc->__btowc_fct; - - if (__builtin_expect (fcts->towc_nsteps == 1, 1) - && __builtin_expect (btowc_fct != NULL, 1)) - { - /* Use the shortcut function. */ -#ifdef PTR_DEMANGLE - if (fcts->towc->__shlib_handle != NULL) - PTR_DEMANGLE (btowc_fct); -#endif - return DL_CALL_FCT (btowc_fct, (fcts->towc, (unsigned char) c)); - } - else - { - /* Fall back to the slow but generic method. */ - wchar_t result; - struct __gconv_step_data data; - unsigned char inbuf[1]; - const unsigned char *inptr = inbuf; - size_t dummy; - int status; - - /* Tell where we want the result. */ - data.__outbuf = (unsigned char *) &result; - data.__outbufend = data.__outbuf + sizeof (wchar_t); - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = &data.__state; - - /* Make sure we start in the initial state. */ - memset (&data.__state, '\0', sizeof (mbstate_t)); - - /* Create the input string. */ - inbuf[0] = c; - - __gconv_fct fct = fcts->towc->__fct; -#ifdef PTR_DEMANGLE - if (fcts->towc->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - status = DL_CALL_FCT (fct, (fcts->towc, &data, &inptr, inptr + 1, - NULL, &dummy, 0, 1)); - - if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT - && status != __GCONV_EMPTY_INPUT) - /* The conversion failed. */ - result = WEOF; - - return result; - } -} -weak_alias (__btowc, btowc) diff --git a/wcsmbs/c16rtomb.c b/wcsmbs/c16rtomb.c deleted file mode 100644 index 9e6b6a218f..0000000000 --- a/wcsmbs/c16rtomb.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <uchar.h> -#include <wchar.h> - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -size_t -c16rtomb (char *s, char16_t c16, mbstate_t *ps) -{ - // XXX The ISO C 11 spec I have does not say anything about handling - // XXX surrogates in this interface. - return wcrtomb (s, c16, ps ?: &state); -} diff --git a/wcsmbs/isoc99_fwscanf.c b/wcsmbs/isoc99_fwscanf.c deleted file mode 100644 index 8079edcd1d..0000000000 --- a/wcsmbs/isoc99_fwscanf.c +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <libioP.h> -#include <stdarg.h> -#include <stdio.h> -#include <wchar.h> - -/* Read formatted input from STREAM according to the format string FORMAT. */ -/* VARARGS2 */ -int -__isoc99_fwscanf (FILE *stream, const wchar_t *format, ...) -{ - va_list arg; - int done; - - _IO_acquire_lock_clear_flags2 (stream); - stream->_flags2 |= _IO_FLAGS2_SCANF_STD; - - va_start (arg, format); - done = _IO_vfwscanf (stream, format, arg, NULL); - va_end (arg); - - _IO_release_lock (stream); - return done; -} diff --git a/wcsmbs/isoc99_swscanf.c b/wcsmbs/isoc99_swscanf.c deleted file mode 100644 index 872df09806..0000000000 --- a/wcsmbs/isoc99_swscanf.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stdarg.h> -#include <stdio.h> -#include <libioP.h> -#include <wchar.h> - -/* Read formatted input from S, according to the format string FORMAT. */ -/* VARARGS2 */ -int -__isoc99_swscanf (const wchar_t *s, const wchar_t *format, ...) -{ - va_list arg; - int done; - - va_start (arg, format); - done = __isoc99_vswscanf (s, format, arg); - va_end (arg); - - return done; -} diff --git a/wcsmbs/isoc99_vfwscanf.c b/wcsmbs/isoc99_vfwscanf.c deleted file mode 100644 index e35c39d8f2..0000000000 --- a/wcsmbs/isoc99_vfwscanf.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <libioP.h> -#include <stdio.h> -#include <wchar.h> - -/* Read formatted input from STREAM according to the format string FORMAT. */ -/* VARARGS2 */ -int -__isoc99_vfwscanf (FILE *stream, const wchar_t *format, _IO_va_list args) -{ - int done; - - _IO_acquire_lock_clear_flags2 (stream); - stream->_flags2 |= _IO_FLAGS2_SCANF_STD; - done = _IO_vfwscanf (stream, format, args, NULL); - _IO_release_lock (stream); - return done; -} -libc_hidden_def (__isoc99_vfwscanf) diff --git a/wcsmbs/isoc99_vswscanf.c b/wcsmbs/isoc99_vswscanf.c deleted file mode 100644 index 22dc4227d2..0000000000 --- a/wcsmbs/isoc99_vswscanf.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 1993-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. - - As a special exception, if you link the code in this file with - files compiled with a GNU compiler to produce an executable, - that does not cause the resulting executable to be covered by - the GNU Lesser General Public License. This exception does not - however invalidate any other reasons why the executable file - might be covered by the GNU Lesser General Public License. - This exception applies to code released by its copyright holders - in files containing the exception. */ - -#include <libioP.h> -#include <wchar.h> -#include "../libio/strfile.h" - -int -__isoc99_vswscanf (const wchar_t *string, const wchar_t *format, - _IO_va_list args) -{ - int ret; - _IO_strfile sf; - struct _IO_wide_data wd; -#ifdef _IO_MTSAFE_IO - sf._sbf._f._lock = NULL; -#endif - _IO_no_init (&sf._sbf._f, _IO_USER_LOCK, 0, &wd, &_IO_wstr_jumps); - _IO_fwide (&sf._sbf._f, 1); - _IO_wstr_init_static (&sf._sbf._f, (wchar_t *)string, 0, NULL); - sf._sbf._f._flags2 |= _IO_FLAGS2_SCANF_STD; - ret = _IO_vfwscanf ((_IO_FILE *) &sf._sbf, format, args, NULL); - return ret; -} -libc_hidden_def (__isoc99_vswscanf) diff --git a/wcsmbs/isoc99_vwscanf.c b/wcsmbs/isoc99_vwscanf.c deleted file mode 100644 index f83ffb79b5..0000000000 --- a/wcsmbs/isoc99_vwscanf.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <libioP.h> -#include <stdio.h> -#include <wchar.h> - -/* Read formatted input from STDIN according to the format string FORMAT. */ -/* VARARGS2 */ -int -__isoc99_vwscanf (const wchar_t *format, _IO_va_list args) -{ - int done; - - _IO_acquire_lock_clear_flags2 (stdin); - stdin->_flags2 |= _IO_FLAGS2_SCANF_STD; - done = _IO_vfwscanf (stdin, format, args, NULL); - _IO_release_lock (stdin); - return done; -} diff --git a/wcsmbs/isoc99_wscanf.c b/wcsmbs/isoc99_wscanf.c deleted file mode 100644 index 7eb6a19082..0000000000 --- a/wcsmbs/isoc99_wscanf.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stdarg.h> -#include <stdio.h> -#include <libioP.h> -#include <wchar.h> - - -/* Read formatted input from stdin according to the format string FORMAT. */ -/* VARARGS1 */ -int -__isoc99_wscanf (const wchar_t *format, ...) -{ - va_list arg; - int done; - - _IO_acquire_lock_clear_flags2 (stdin); - stdin->_flags2 |= _IO_FLAGS2_SCANF_STD; - - va_start (arg, format); - done = _IO_vfwscanf (stdin, format, arg, NULL); - va_end (arg); - - _IO_release_lock (stdin); - return done; -} diff --git a/wcsmbs/mbrlen.c b/wcsmbs/mbrlen.c deleted file mode 100644 index 1e836381ee..0000000000 --- a/wcsmbs/mbrlen.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu> - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -/* The mbrlen function has an internal shift state which gets used if - the PS parameter is NULL. */ -static mbstate_t internal; - - -size_t -__mbrlen (const char *s, size_t n, mbstate_t *ps) -{ - return __mbrtowc (NULL, s, n, ps ?: &internal); -} -libc_hidden_def (__mbrlen) -weak_alias (__mbrlen, mbrlen) diff --git a/wcsmbs/mbrtoc16.c b/wcsmbs/mbrtoc16.c deleted file mode 100644 index 0fc5bc5d82..0000000000 --- a/wcsmbs/mbrtoc16.c +++ /dev/null @@ -1,154 +0,0 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gmail.com>, 2011. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <gconv.h> -#include <uchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -size_t -mbrtoc16 (char16_t *pc16, const char *s, size_t n, mbstate_t *ps) -{ - if (ps == NULL) - ps = &state; - - /* The standard text does not say that S being NULL means the state - is reset even if the second half of a surrogate still have to be - returned. In fact, the error code description indicates - otherwise. Therefore always first try to return a second - half. */ - if (ps->__count & 0x80000000) - { - /* We have to return the second word for a surrogate. */ - ps->__count &= 0x7fffffff; - *pc16 = ps->__value.__wch; - ps->__value.__wch = L'\0'; - return (size_t) -3; - } - - wchar_t wc; - struct __gconv_step_data data; - int status; - size_t result; - size_t dummy; - const unsigned char *inbuf, *endbuf; - unsigned char *outbuf = (unsigned char *) &wc; - const struct gconv_fcts *fcts; - - /* Set information for this step. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps; - - /* A first special case is if S is NULL. This means put PS in the - initial state. */ - if (s == NULL) - { - pc16 = NULL; - s = ""; - n = 1; - } - - if (n == 0) - return (size_t) -2; - - /* Tell where we want the result. */ - data.__outbuf = outbuf; - data.__outbufend = outbuf + sizeof (wchar_t); - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Do a normal conversion. */ - inbuf = (const unsigned char *) s; - endbuf = inbuf + n; - if (__glibc_unlikely (endbuf < inbuf)) - { - endbuf = (const unsigned char *) ~(uintptr_t) 0; - if (endbuf == inbuf) - goto ilseq; - } - __gconv_fct fct = fcts->towc->__fct; -#ifdef PTR_DEMANGLE - if (fcts->towc->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - - status = DL_CALL_FCT (fct, (fcts->towc, &data, &inbuf, endbuf, - NULL, &dummy, 0, 1)); - - /* There must not be any problems with the conversion but illegal input - characters. The output buffer must be large enough, otherwise the - definition of MB_CUR_MAX is not correct. All the other possible - errors also must not happen. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_FULL_OUTPUT) - { - result = inbuf - (const unsigned char *) s; - - if (wc < 0x10000) - { - if (pc16 != NULL) - *pc16 = wc; - - if (data.__outbuf != outbuf && wc == L'\0') - { - /* The converted character is the NUL character. */ - assert (__mbsinit (data.__statep)); - result = 0; - } - } - else - { - /* This is a surrogate. */ - if (pc16 != NULL) - *pc16 = 0xd7c0 + (wc >> 10); - - ps->__count |= 0x80000000; - ps->__value.__wch = 0xdc00 + (wc & 0x3ff); - } - } - else if (status == __GCONV_INCOMPLETE_INPUT) - result = (size_t) -2; - else - { - ilseq: - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} diff --git a/wcsmbs/mbrtowc.c b/wcsmbs/mbrtowc.c deleted file mode 100644 index ea207bd0c6..0000000000 --- a/wcsmbs/mbrtowc.c +++ /dev/null @@ -1,129 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <gconv.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -size_t -__mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) -{ - wchar_t buf[1]; - struct __gconv_step_data data; - int status; - size_t result; - size_t dummy; - const unsigned char *inbuf, *endbuf; - unsigned char *outbuf = (unsigned char *) (pwc ?: buf); - const struct gconv_fcts *fcts; - - /* Set information for this step. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps ?: &state; - - /* A first special case is if S is NULL. This means put PS in the - initial state. */ - if (s == NULL) - { - outbuf = (unsigned char *) buf; - s = ""; - n = 1; - } - - if (n == 0) - return (size_t) -2; - - /* Tell where we want the result. */ - data.__outbuf = outbuf; - data.__outbufend = outbuf + sizeof (wchar_t); - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Do a normal conversion. */ - inbuf = (const unsigned char *) s; - endbuf = inbuf + n; - if (__glibc_unlikely (endbuf < inbuf)) - { - endbuf = (const unsigned char *) ~(uintptr_t) 0; - if (endbuf == inbuf) - goto ilseq; - } - __gconv_fct fct = fcts->towc->__fct; -#ifdef PTR_DEMANGLE - if (fcts->towc->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - status = DL_CALL_FCT (fct, (fcts->towc, &data, &inbuf, endbuf, - NULL, &dummy, 0, 1)); - - /* There must not be any problems with the conversion but illegal input - characters. The output buffer must be large enough, otherwise the - definition of MB_CUR_MAX is not correct. All the other possible - errors also must not happen. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_FULL_OUTPUT) - { - if (data.__outbuf != (unsigned char *) outbuf - && *(wchar_t *) outbuf == L'\0') - { - /* The converted character is the NUL character. */ - assert (__mbsinit (data.__statep)); - result = 0; - } - else - result = inbuf - (const unsigned char *) s; - } - else if (status == __GCONV_INCOMPLETE_INPUT) - result = (size_t) -2; - else - { - ilseq: - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} -libc_hidden_def (__mbrtowc) -weak_alias (__mbrtowc, mbrtowc) -libc_hidden_weak (mbrtowc) - -/* There should be no difference between the UTF-32 handling required - by mbrtoc32 and the wchar_t handling which has long since been - implemented in mbrtowc. */ -weak_alias (__mbrtowc, mbrtoc32) diff --git a/wcsmbs/mbsinit.c b/wcsmbs/mbsinit.c deleted file mode 100644 index a34787d8ff..0000000000 --- a/wcsmbs/mbsinit.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <string.h> -#include <wchar.h> - -#undef mbsinit -#undef __mbsinit - -/* In GNU libc the conversion functions only can convert between the - fixed wide character representation and the multibyte - representation of the same character set. Since we use ISO 10646 - in UCS4 encoding for wide characters the best solution for - multibyte characters is the UTF8 encoding. I.e., the only state - information is a counter of the processed bytes so far and the - value collected so far. Especially, we don't have different shift - states. */ -int -__mbsinit (const mbstate_t *ps) -{ - return ps == NULL || ps->__count == 0; -} -weak_alias (__mbsinit, mbsinit) diff --git a/wcsmbs/mbsnrtowcs.c b/wcsmbs/mbsnrtowcs.c deleted file mode 100644 index ed51678e5b..0000000000 --- a/wcsmbs/mbsnrtowcs.c +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <gconv.h> -#include <string.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -/* This is a non-standard function but it is very useful in the - implementation of stdio because we have to deal with unterminated - buffers. At most NMC bytes will be converted. */ -size_t -__mbsnrtowcs (wchar_t *dst, const char **src, size_t nmc, size_t len, - mbstate_t *ps) -{ - const unsigned char *srcend; - struct __gconv_step_data data; - size_t result; - int status; - struct __gconv_step *towc; - size_t dummy; - const struct gconv_fcts *fcts; - - /* Tell where we want the result. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps ?: &state; - - if (nmc == 0) - return 0; - srcend = (const unsigned char *) *src + __strnlen (*src, nmc - 1) + 1; - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Get the structure with the function pointers. */ - towc = fcts->towc; - __gconv_fct fct = towc->__fct; -#ifdef PTR_DEMANGLE - if (towc->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - - /* We have to handle DST == NULL special. */ - if (dst == NULL) - { - mbstate_t temp_state; - wchar_t buf[64]; /* Just an arbitrary size. */ - const unsigned char *inbuf = (const unsigned char *) *src; - - temp_state = *data.__statep; - data.__statep = &temp_state; - - result = 0; - data.__outbufend = (unsigned char *) buf + sizeof (buf); - do - { - data.__outbuf = (unsigned char *) buf; - - status = DL_CALL_FCT (fct, (towc, &data, &inbuf, srcend, NULL, - &dummy, 0, 1)); - - result += (wchar_t *) data.__outbuf - buf; - } - while (status == __GCONV_FULL_OUTPUT); - - if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - && ((wchar_t *) data.__outbuf)[-1] == L'\0') - /* Don't count the NUL character in. */ - --result; - } - else - { - /* This code is based on the safe assumption that all internal - multi-byte encodings use the NUL byte only to mark the end - of the string. */ - data.__outbuf = (unsigned char *) dst; - data.__outbufend = data.__outbuf + len * sizeof (wchar_t); - - status = DL_CALL_FCT (fct, - (towc, &data, (const unsigned char **) src, srcend, - NULL, &dummy, 0, 1)); - - result = (wchar_t *) data.__outbuf - dst; - - /* We have to determine whether the last character converted - is the NUL character. */ - if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - && (assert (result > 0), - ((wchar_t *) dst)[result - 1] == L'\0')) - { - assert (__mbsinit (data.__statep)); - *src = NULL; - --result; - } - } - - /* There must not be any problems with the conversion but illegal input - characters. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT - && status != __GCONV_EMPTY_INPUT && status != __GCONV_INCOMPLETE_INPUT) - { - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} -weak_alias (__mbsnrtowcs, mbsnrtowcs) diff --git a/wcsmbs/mbsrtowcs.c b/wcsmbs/mbsrtowcs.c deleted file mode 100644 index 796f62f19e..0000000000 --- a/wcsmbs/mbsrtowcs.c +++ /dev/null @@ -1,31 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <locale/localeinfo.h> - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -size_t -__mbsrtowcs (wchar_t *dst, const char **src, size_t len, mbstate_t *ps) -{ - return __mbsrtowcs_l (dst, src, len, ps ?: &state, _NL_CURRENT_LOCALE); -} -weak_alias (__mbsrtowcs, mbsrtowcs) diff --git a/wcsmbs/mbsrtowcs_l.c b/wcsmbs/mbsrtowcs_l.c deleted file mode 100644 index 4ffb652b26..0000000000 --- a/wcsmbs/mbsrtowcs_l.c +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright (C) 2002-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 2002. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <ctype.h> -#include <string.h> -#include "wcsmbsload.h" -#include <dlfcn.h> -#include <errno.h> -#include <gconv.h> -#include <stdlib.h> -#include <string.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - - -size_t -attribute_hidden -__mbsrtowcs_l (wchar_t *dst, const char **src, size_t len, mbstate_t *ps, - __locale_t l) -{ - struct __gconv_step_data data; - size_t result; - int status; - struct __gconv_step *towc; - size_t non_reversible; - const struct gconv_fcts *fcts; - - /* Tell where we want the result. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps; - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (l->__locales[LC_CTYPE]); - - /* Get the structure with the function pointers. */ - towc = fcts->towc; - __gconv_fct fct = towc->__fct; -#ifdef PTR_DEMANGLE - if (towc->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - - /* We have to handle DST == NULL special. */ - if (dst == NULL) - { - mbstate_t temp_state; - wchar_t buf[64]; /* Just an arbitrary size. */ - const unsigned char *inbuf = (const unsigned char *) *src; - const unsigned char *srcend = inbuf + strlen (*src) + 1; - - temp_state = *data.__statep; - data.__statep = &temp_state; - - result = 0; - data.__outbufend = (unsigned char *) buf + sizeof (buf); - do - { - data.__outbuf = (unsigned char *) buf; - - status = DL_CALL_FCT (fct, (towc, &data, &inbuf, srcend, NULL, - &non_reversible, 0, 1)); - - result += (wchar_t *) data.__outbuf - buf; - } - while (status == __GCONV_FULL_OUTPUT); - - if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - { - /* There better should be a NUL wide char at the end. */ - assert (((wchar_t *) data.__outbuf)[-1] == L'\0'); - /* Don't count the NUL character in. */ - --result; - } - } - else - { - /* This code is based on the safe assumption that all internal - multi-byte encodings use the NUL byte only to mark the end - of the string. */ - const unsigned char *srcp = (const unsigned char *) *src; - const unsigned char *srcend; - - data.__outbuf = (unsigned char *) dst; - data.__outbufend = data.__outbuf + len * sizeof (wchar_t); - - status = __GCONV_FULL_OUTPUT; - - while (len > 0) - { - /* Pessimistic guess as to how much input we can use. In the - worst case we need one input byte for one output wchar_t. */ - srcend = srcp + __strnlen ((const char *) srcp, len) + 1; - - status = DL_CALL_FCT (fct, (towc, &data, &srcp, srcend, NULL, - &non_reversible, 0, 1)); - if ((status != __GCONV_EMPTY_INPUT - && status != __GCONV_INCOMPLETE_INPUT) - /* Not all input read. */ - || srcp != srcend - /* Reached the end of the input. */ - || srcend[-1] == '\0') - break; - - len = (wchar_t *) data.__outbufend - (wchar_t *) data.__outbuf; - } - - /* Make the end if the input known to the caller. */ - *src = (const char *) srcp; - - result = (wchar_t *) data.__outbuf - dst; - - /* We have to determine whether the last character converted - is the NUL character. */ - if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - && ((wchar_t *) dst)[result - 1] == L'\0') - { - assert (result > 0); - assert (__mbsinit (data.__statep)); - *src = NULL; - --result; - } - } - - /* There must not be any problems with the conversion but illegal input - characters. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT - && status != __GCONV_EMPTY_INPUT && status != __GCONV_INCOMPLETE_INPUT) - { - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} diff --git a/wcsmbs/test-wcpcpy.c b/wcsmbs/test-wcpcpy.c deleted file mode 100644 index c174d33bdc..0000000000 --- a/wcsmbs/test-wcpcpy.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcspcpy functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-stpcpy.c" diff --git a/wcsmbs/test-wcpncpy.c b/wcsmbs/test-wcpncpy.c deleted file mode 100644 index f037e415fd..0000000000 --- a/wcsmbs/test-wcpncpy.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcpncpy functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-stpncpy.c" diff --git a/wcsmbs/test-wcscat.c b/wcsmbs/test-wcscat.c deleted file mode 100644 index 1422219407..0000000000 --- a/wcsmbs/test-wcscat.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcscat functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strcat.c" diff --git a/wcsmbs/test-wcschr.c b/wcsmbs/test-wcschr.c deleted file mode 100644 index be0abf7aed..0000000000 --- a/wcsmbs/test-wcschr.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-strchr.c" diff --git a/wcsmbs/test-wcschrnul.c b/wcsmbs/test-wcschrnul.c deleted file mode 100644 index 624e687b14..0000000000 --- a/wcsmbs/test-wcschrnul.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcschrnul functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strchrnul.c" diff --git a/wcsmbs/test-wcscmp.c b/wcsmbs/test-wcscmp.c deleted file mode 100644 index aa18c30a61..0000000000 --- a/wcsmbs/test-wcscmp.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-strcmp.c" diff --git a/wcsmbs/test-wcscpy.c b/wcsmbs/test-wcscpy.c deleted file mode 100644 index b7cad535f3..0000000000 --- a/wcsmbs/test-wcscpy.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-strcpy.c" diff --git a/wcsmbs/test-wcscspn.c b/wcsmbs/test-wcscspn.c deleted file mode 100644 index 93d64f3914..0000000000 --- a/wcsmbs/test-wcscspn.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcscspn functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strcspn.c" diff --git a/wcsmbs/test-wcslen.c b/wcsmbs/test-wcslen.c deleted file mode 100644 index 496fa185e2..0000000000 --- a/wcsmbs/test-wcslen.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-strlen.c" diff --git a/wcsmbs/test-wcsncat.c b/wcsmbs/test-wcsncat.c deleted file mode 100644 index 51073d981a..0000000000 --- a/wcsmbs/test-wcsncat.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcsncat functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strncat.c" diff --git a/wcsmbs/test-wcsncmp.c b/wcsmbs/test-wcsncmp.c deleted file mode 100644 index 07757d8e45..0000000000 --- a/wcsmbs/test-wcsncmp.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-strncmp.c" diff --git a/wcsmbs/test-wcsncpy.c b/wcsmbs/test-wcsncpy.c deleted file mode 100644 index 78a810a93f..0000000000 --- a/wcsmbs/test-wcsncpy.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcsncpy functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strncpy.c" diff --git a/wcsmbs/test-wcsnlen.c b/wcsmbs/test-wcsnlen.c deleted file mode 100644 index d216bcb163..0000000000 --- a/wcsmbs/test-wcsnlen.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcsnlen function. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strnlen.c" diff --git a/wcsmbs/test-wcspbrk.c b/wcsmbs/test-wcspbrk.c deleted file mode 100644 index 087b72be17..0000000000 --- a/wcsmbs/test-wcspbrk.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcspbrk functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strpbrk.c" diff --git a/wcsmbs/test-wcsrchr.c b/wcsmbs/test-wcsrchr.c deleted file mode 100644 index 95a5568742..0000000000 --- a/wcsmbs/test-wcsrchr.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-strrchr.c" diff --git a/wcsmbs/test-wcsspn.c b/wcsmbs/test-wcsspn.c deleted file mode 100644 index 3cd3871ab6..0000000000 --- a/wcsmbs/test-wcsspn.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wcsspn functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-strspn.c" diff --git a/wcsmbs/test-wmemchr.c b/wcsmbs/test-wmemchr.c deleted file mode 100644 index 69f0c260d4..0000000000 --- a/wcsmbs/test-wmemchr.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wmemchr functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-memchr.c" diff --git a/wcsmbs/test-wmemcmp.c b/wcsmbs/test-wmemcmp.c deleted file mode 100644 index 73bc4b72c8..0000000000 --- a/wcsmbs/test-wmemcmp.c +++ /dev/null @@ -1,2 +0,0 @@ -#define WIDE 1 -#include "../string/test-memcmp.c" diff --git a/wcsmbs/test-wmemset.c b/wcsmbs/test-wmemset.c deleted file mode 100644 index cea3eea0c2..0000000000 --- a/wcsmbs/test-wmemset.c +++ /dev/null @@ -1,20 +0,0 @@ -/* Test wmemset functions. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define WIDE 1 -#include "../string/test-memset.c" diff --git a/wcsmbs/tst-btowc.c b/wcsmbs/tst-btowc.c deleted file mode 100644 index 670ee2226f..0000000000 --- a/wcsmbs/tst-btowc.c +++ /dev/null @@ -1,176 +0,0 @@ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2000. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <locale.h> -#include <stdio.h> -#include <wchar.h> - - -/* Currently selected locale. */ -static const char *current_locale; - - -/* Test which should succeed. */ -static int -ok_test (int c, wint_t expwc) -{ - wint_t wc = btowc (c); - - if (wc != expwc) - { - printf ("%s: btowc('%c') failed, returned L'\\x%x' instead of L'\\x%x'\n", - current_locale, c, wc, expwc); - return 1; - } - - return 0; -} - -/* Test which should fail. */ -static int -fail_test (int c) -{ - wint_t wc = btowc (c); - - if (wc != WEOF) - { - printf ("%s: btowc('%c') succeded, returned L'\\x%x' instead of WEOF\n", - current_locale, c, wc); - return 1; - } - - return 0; -} - - -/* Test EOF handling. */ -static int -eof_test (void) -{ - wint_t wc = btowc (EOF); - if (wc != WEOF) - { - printf ("%s: btowc(EOF) returned L'\\x%x', not WEOF\n", - current_locale, wc); - } - - return 0; -} - - -/* Test the btowc() function for a few locales with known character sets. */ -static int -do_test (void) -{ - int result = 0; - - current_locale = setlocale (LC_ALL, "en_US.ANSI_X3.4-1968"); - if (current_locale == NULL) - { - puts ("cannot set locale \"en_US.ANSI_X3.4-1968\""); - result = 1; - } - else - { - int c; - - for (c = 0; c < 128; ++c) - result |= ok_test (c, c); - - for (c = 128; c < 256; ++c) - result |= fail_test (c); - - result |= eof_test (); - } - - current_locale = setlocale (LC_ALL, "de_DE.ISO-8859-1"); - if (current_locale == NULL) - { - puts ("cannot set locale \"de_DE.ISO-8859-1\""); - result = 1; - } - else - { - int c; - - for (c = 0; c < 256; ++c) - result |= ok_test (c, c); - - result |= eof_test (); - } - - current_locale = setlocale (LC_ALL, "de_DE.UTF-8"); - if (current_locale == NULL) - { - puts ("cannot set locale \"de_DE.UTF-8\""); - result = 1; - } - else - { - int c; - - for (c = 0; c < 128; ++c) - result |= ok_test (c, c); - - for (c = 128; c < 256; ++c) - result |= fail_test (c); - - result |= eof_test (); - } - - current_locale = setlocale (LC_ALL, "hr_HR.ISO-8859-2"); - if (current_locale == NULL) - { - puts ("cannot set locale \"hr_HR.ISO-8859-2\""); - result = 1; - } - else - { - static const wint_t upper_half[] = - { - 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, 0x00A8, - 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B, 0x00B0, - 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7, 0x00B8, - 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, 0x0154, - 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, 0x010C, - 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, 0x0110, - 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, - 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, - 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, - 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F, 0x0111, - 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, 0x0159, - 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9 - }; - int c; - - for (c = 0; c < 161; ++c) - result |= ok_test (c, c); - - for (c = 161; c < 256; ++c) - result |= ok_test (c, upper_half[c - 161]); - - result |= eof_test (); - } - - if (result == 0) - puts ("all OK"); - - return result; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-c16c32-1.c b/wcsmbs/tst-c16c32-1.c deleted file mode 100644 index 3b1c1d674c..0000000000 --- a/wcsmbs/tst-c16c32-1.c +++ /dev/null @@ -1,131 +0,0 @@ -#include <inttypes.h> -#include <locale.h> -#include <stdio.h> -#include <uchar.h> -#include <stdint.h> - -static int -do_test (void) -{ - if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) - { - puts ("cannot set locale"); - return 1; - } - - int result = 0; - - char32_t c32 = 48; - do - { - if (c32 >= 0xd800 && c32 <= 0xe000) - continue; - - char buf[20]; - size_t n1 = c32rtomb (buf, c32, NULL); - if (n1 <= 0) - { - printf ("c32rtomb for U'\\x%" PRIx32 "' failed\n", (uint32_t) c32); - result = 1; - continue; - } - - char32_t c32out; - size_t n2 = mbrtoc32 (&c32out, buf, n1, NULL); - if ((ssize_t) n2 < 0) - { - printf ("mbrtoc32 for U'\\x%" PRIx32 "' failed\n", (uint32_t) c32); - result = 1; - continue; - } - if (n2 != n1) - { - printf ("mbrtoc32 for U'\\x%" PRIx32 "' consumed %zu bytes, not %zu\n", - (uint32_t) c32, n2, n1); - result = 1; - } - else if (c32out != c32) - { - printf ("mbrtoc32 for U'\\x%" PRIx32 "' produced U'\\x%" PRIx32 "\n", - (uint32_t) c32, (uint32_t) c32out); - result = 1; - } - - char16_t c16; - size_t n3 = mbrtoc16 (&c16, buf, n1, NULL); - if (n3 != n1) - { - printf ("mbrtoc16 for U'\\x%" PRIx32 "' did not consume all bytes\n", - (uint32_t) c32); - result = 1; - continue; - } - if (c32 < 0x10000) - { - if (c16 != c32) - { - printf ("mbrtoc16 for U'\\x%" PRIx32 "' produce u'\\x%" PRIx16 "'\n", - (uint32_t) c32, (uint16_t) c16); - result = 1; - continue; - } - } - else - { - buf[0] = '1'; - char16_t c16_2; - size_t n4 = mbrtoc16 (&c16_2, buf, 1, NULL); - if (n4 != (size_t) -3) - { - printf ("second mbrtoc16 for U'\\x%" PRIx32 "' did not return -3\n", - (uint32_t) c32); - result = 1; - continue; - } - - if (c32 != (((uint32_t) (c16 - 0xd7c0)) << 10) + (c16_2 - 0xdc00)) - { - printf ("mbrtoc16 for U'\\x%" PRIx32 "' returns U'\\x%" PRIx32 "\n", - (uint32_t) c32, - (((uint32_t) (c16 - 0xd7c0)) << 10) + (c16_2 - 0xdc00)); - result = 1; - continue; - } - } - - buf[0] = '\0'; - char16_t c16_nul; - n3 = mbrtoc16 (&c16_nul, buf, n1, NULL); - if (n3 != 0) - { - printf ("mbrtoc16 for '\\0' returns %zd\n", n3); - result = 1; - continue; - } - - if (c32 < 0x10000) - { - size_t n5 = c16rtomb (buf, c16, NULL); - if ((ssize_t) n5 < 0) - { - printf ("c16rtomb for U'\\x%" PRIx32 "' failed with %zd\n", - (uint32_t) c32, n5); - result = 1; - continue; - } - if (n5 != n1) - { - printf ("c16rtomb for U'\\x%" PRIx32 "' produced %zu bytes instead of %zu bytes\n", - (uint32_t) c32, n5, n1); - result = 1; - continue; - } - } - } - while ((c32 += 0x1111) <= U'\x12000'); - - return result; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/wcsmbs/tst-mbrtowc.c b/wcsmbs/tst-mbrtowc.c deleted file mode 100644 index 2bc1a0f8b2..0000000000 --- a/wcsmbs/tst-mbrtowc.c +++ /dev/null @@ -1,235 +0,0 @@ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2000. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* We always want assert to be fully defined. */ -#undef NDEBUG -#include <assert.h> -#include <locale.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <wchar.h> - - -static int check_ascii (const char *locname); - -/* UTF-8 single byte feeding test for mbrtowc(), - contributed by Markus Kuhn <mkuhn@acm.org>. */ -static int -utf8_test_1 (void) -{ - wchar_t wc; - mbstate_t s; - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (&wc, "\x89", 1, &s) == (size_t) -2); /* 2nd byte processed */ - assert (wc == 42); /* no value has not been stored into &wc yet */ - assert (mbrtowc (&wc, "\xA0", 1, &s) == 1); /* 3nd byte processed */ - assert (wc == 0x2260); /* E2 89 A0 = U+2260 (not equal) decoded correctly */ - assert (mbrtowc (&wc, "", 1, &s) == 0); /* test final byte processing */ - assert (wc == 0); /* test final byte decoding */ - - /* The following test is by Al Viro <aviro@redhat.com>. */ - const char str[] = "\xe0\xa0\x80"; - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, str, 1, &s) == -2); - assert (mbrtowc (&wc, str + 1, 2, &s) == 2); - assert (wc == 0x800); - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, str, 3, &s) == 3); - assert (wc == 0x800); - - return 0; -} - -/* Test for NUL byte processing via empty string. */ -static int -utf8_test_2 (void) -{ - wchar_t wc; - mbstate_t s; - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (NULL, "", 1, &s) == 0); /* valid terminator */ - assert (mbsinit (&s)); - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (NULL, "", 1, &s) == (size_t) -1); /* invalid terminator */ - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (&wc, "\x89", 1, &s) == (size_t) -2); /* 2nd byte processed */ - assert (mbrtowc (NULL, "", 1, &s) == (size_t) -1); /* invalid terminator */ - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (&wc, "\x89", 1, &s) == (size_t) -2); /* 2nd byte processed */ - assert (mbrtowc (&wc, "\xA0", 1, &s) == 1); /* 3nd byte processed */ - assert (mbrtowc (NULL, "", 1, &s) == 0); /* valid terminator */ - assert (mbsinit (&s)); - - return 0; -} - -/* Test for NUL byte processing via NULL string. */ -static int -utf8_test_3 (void) -{ - wchar_t wc; - mbstate_t s; - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (NULL, NULL, 0, &s) == 0); /* valid terminator */ - assert (mbsinit (&s)); - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (NULL, NULL, 0, &s) == (size_t) -1); /* invalid terminator */ - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (&wc, "\x89", 1, &s) == (size_t) -2); /* 2nd byte processed */ - assert (mbrtowc (NULL, NULL, 0, &s) == (size_t) -1); /* invalid terminator */ - - wc = 42; /* arbitrary number */ - memset (&s, 0, sizeof (s)); /* get s into initial state */ - assert (mbrtowc (&wc, "\xE2", 1, &s) == (size_t) -2); /* 1st byte processed */ - assert (mbrtowc (&wc, "\x89", 1, &s) == (size_t) -2); /* 2nd byte processed */ - assert (mbrtowc (&wc, "\xA0", 1, &s) == 1); /* 3nd byte processed */ - assert (mbrtowc (NULL, NULL, 0, &s) == 0); /* valid terminator */ - assert (mbsinit (&s)); - - return 0; -} - -static int -utf8_test (void) -{ - const char *locale = "de_DE.UTF-8"; - int error = 0; - - if (!setlocale (LC_CTYPE, locale)) - { - fprintf (stderr, "locale '%s' not available!\n", locale); - exit (1); - } - - error |= utf8_test_1 (); - error |= utf8_test_2 (); - error |= utf8_test_3 (); - - return error; -} - - -static int -do_test (void) -{ - int result = 0; - - /* Check mapping of ASCII range for some character sets which have - ASCII as a subset. For those the wide char generated must have - the same value. */ - setlocale (LC_ALL, "C"); - result |= check_ascii (setlocale (LC_ALL, NULL)); - - setlocale (LC_ALL, "de_DE.UTF-8"); - result |= check_ascii (setlocale (LC_ALL, NULL)); - result |= utf8_test (); - - setlocale (LC_ALL, "ja_JP.EUC-JP"); - result |= check_ascii (setlocale (LC_ALL, NULL)); - - return result; -} - - -static int -check_ascii (const char *locname) -{ - int c; - int res = 0; - - printf ("Testing locale \"%s\":\n", locname); - - for (c = 0; c <= 127; ++c) - { - char buf[MB_CUR_MAX]; - wchar_t wc = 0xffffffff; - mbstate_t s; - size_t n, i; - - for (i = 0; i < MB_CUR_MAX; ++i) - buf[i] = c + i; - - memset (&s, '\0', sizeof (s)); - - n = mbrtowc (&wc, buf, MB_CUR_MAX, &s); - if (n == (size_t) -1) - { - printf ("%s: '\\x%x': encoding error\n", locname, c); - ++res; - } - else if (n == (size_t) -2) - { - printf ("%s: '\\x%x': incomplete character\n", locname, c); - ++res; - } - else if (n == 0 && c != 0) - { - printf ("%s: '\\x%x': 0 returned\n", locname, c); - ++res; - } - else if (n != 0 && c == 0) - { - printf ("%s: '\\x%x': not 0 returned\n", locname, c); - ++res; - } - else if (c != 0 && n != 1) - { - printf ("%s: '\\x%x': not 1 returned\n", locname, c); - ++res; - } - else if (wc != (wchar_t) c) - { - printf ("%s: '\\x%x': wc != L'\\x%x'\n", locname, c, c); - ++res; - } - } - - printf (res == 1 ? "%d error\n" : "%d errors\n", res); - - return res != 0; -} - -#define TEST_FUNCTION do_test () -#include "../test-skeleton.c" diff --git a/wcsmbs/tst-mbrtowc2.c b/wcsmbs/tst-mbrtowc2.c deleted file mode 100644 index 975043accd..0000000000 --- a/wcsmbs/tst-mbrtowc2.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Derived from the test case in http://sourceware.org/bugzilla/show_bug.cgi?id=714 */ -#include <locale.h> -#include <stdio.h> -#include <string.h> -#include <wchar.h> - - -static struct -{ - const char *chp; - size_t nchp; - const char *loc; -} tests[] = -{ - { (const char[]) { 0x8F, 0xA2, 0xAF }, 3, "ja_JP.EUC-JP" }, - { (const char[]) { 0xD1, 0xA5 }, 2, "ja_JP.EUC-JP" }, - { (const char[]) { 0x8E, 0xA5 }, 2, "ja_JP.EUC-JP" }, - { (const char[]) { 0x8E, 0xA2, 0xA1, 0xA1 }, 4, "zh_TW.EUC-TW" }, - { (const char[]) { 0xA1, 0xA1 }, 2, "zh_TW.EUC-TW" }, - { (const char[]) { 0xE3, 0x80, 0x80 }, 3, "de_DE.UTF-8" }, - { (const char[]) { 0xC3, 0xA4 }, 2, "de_DE.UTF-8" } -}; -#define ntests (sizeof (tests) / sizeof (tests[0])) - - -static int t (const char *ch, size_t nch, const char *loc); - -static int -do_test (void) -{ - int r = 0; - for (int i = 0; i < ntests; ++i) - r |= t (tests[i].chp, tests[i].nchp, tests[i].loc); - return r; -} - -static int -t (const char *ch, size_t nch, const char *loc) -{ - int i; - wchar_t wch; - wchar_t wch2; - mbstate_t mbs; - int n = 0; - - setlocale (LC_ALL, loc); - - memset (&mbs, '\0', sizeof (mbstate_t)); - for (i = 0; i < nch; i++) - { - n = mbrtowc (&wch, ch + i, 1, &mbs); - if (n >= 0) - break; - } - printf ("n = %d, count = %d, wch = %08lX\n", n, i, (unsigned long int) wch); - - memset (&mbs, '\0', sizeof (mbstate_t)); - n = mbrtowc (&wch2, ch, nch, &mbs); - printf ("n = %d, wch = %08lX\n", n, (unsigned long int) wch2); - - int ret = n != nch || i + 1 != nch || n != nch || wch != wch2; - puts (ret ? "FAIL\n" : "OK\n"); - return ret; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-mbsrtowcs.c b/wcsmbs/tst-mbsrtowcs.c deleted file mode 100644 index 91ce1166bb..0000000000 --- a/wcsmbs/tst-mbsrtowcs.c +++ /dev/null @@ -1,66 +0,0 @@ -/* Test NUL handling of mbsrtowcs. - Copyright (C) 2004-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2004. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stdio.h> -#include <string.h> -#include <wchar.h> - -static int -do_test (void) -{ - const unsigned char buf[] = { 'a', 'b', '\0', 'c', 'd', '\0', 'e' }; - wchar_t out[sizeof (buf)]; - memset (out, '\xff', sizeof (out)); - - mbstate_t state; - memset (&state, '\0', sizeof (state)); - - const char *in = (const char *) buf; - size_t n = mbsrtowcs (out, &in, sizeof (out) / sizeof (wchar_t), &state); - - int result = 0; - if (n != 2) - { - printf ("n = %zu, expected 2\n", n); - result = 1; - } - if (in != NULL) - { - printf ("in = %p, expected NULL\n", in); - result = 1; - } - if (out[0] != L'a') - { - printf ("out[0] = L'%lc', expected L'a'\n", (wint_t) out[0]); - result = 1; - } - if (out[1] != L'b') - { - printf ("out[1] = L'%lc', expected L'b'\n", (wint_t) out[1]); - result = 1; - } - if (out[2] != L'\0') - { - printf ("out[2] = L'%lc', expected L'\\0'\n", (wint_t) out[2]); - result = 1; - } - return result; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-wchar-h.c b/wcsmbs/tst-wchar-h.c deleted file mode 100644 index 047ba6c377..0000000000 --- a/wcsmbs/tst-wchar-h.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <stdlib.h> -#include <wchar.h> - -static int -do_test (void) -{ - mbstate_t x; - return sizeof (x) - sizeof (mbstate_t); -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-wcpncpy.c b/wcsmbs/tst-wcpncpy.c deleted file mode 100644 index 99b00a5cf6..0000000000 --- a/wcsmbs/tst-wcpncpy.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright (C) 2003-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 2003. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stdio.h> -#include <wchar.h> - - -static int -do_test (void) -{ - int result = 0; - - const wchar_t src[] = L"0"; - wchar_t dest[21]; - wmemset (dest, L'\0', 10); - wchar_t *endp = wcpncpy (dest, src, 2); - if (wcscmp (dest, src) != 0) - { - result = 1; - puts ("L\"0\" string test failed"); - } - if (endp != dest + 1) - { - result = 1; - puts ("return value of L\"0\" string call incorrect"); - } - - const wchar_t src2[] = L"abc"; - endp = wcpncpy (dest, src2, 2); - if (endp != dest + 2) - { - result = 1; - puts ("return value of limited call incorrect"); - } - - const wchar_t src3[] = L""; - endp = wcpncpy (dest, src3, 2); - if (endp != dest) - { - result = 1; - puts ("return value of empty string call incorrect"); - } - - const wchar_t src4[] = L"abcdefghijklmnopqrstuvwxyz"; - endp = wcpncpy (dest, src4, 2); - if (endp != dest + 2) - { - result = 1; - puts ("return value of long string call incorrect"); - } - - const wchar_t src5[] = L"ab"; - endp = wcpncpy (dest, src5, 20); - if (endp != dest + 2) - { - result = 1; - puts ("return value of large limit call incorrect"); - } - - return result; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-wcrtomb.c b/wcsmbs/tst-wcrtomb.c deleted file mode 100644 index a506fe7e75..0000000000 --- a/wcsmbs/tst-wcrtomb.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright (C) 2000-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2000. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <locale.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <wchar.h> - - -static int check_ascii (const char *locname); - - -static int -do_test (void) -{ - int result = 0; - - /* Check mapping of ASCII range for some character sets which have - ASCII as a subset. For those the wide char generated must have - the same value. */ - setlocale (LC_ALL, "C"); - result |= check_ascii (setlocale (LC_ALL, NULL)); - - setlocale (LC_ALL, "de_DE.UTF-8"); - result |= check_ascii (setlocale (LC_ALL, NULL)); - - setlocale (LC_ALL, "ja_JP.EUC-JP"); - result |= check_ascii (setlocale (LC_ALL, NULL)); - - return result; -} - - -static int -check_ascii (const char *locname) -{ - wchar_t wc; - int res = 0; - - printf ("Testing locale \"%s\":\n", locname); - - for (wc = 0; wc <= 127; ++wc) - { - char buf[2 * MB_CUR_MAX]; - mbstate_t s; - size_t n; - - memset (buf, '\xff', sizeof (buf)); - memset (&s, '\0', sizeof (s)); - - n = wcrtomb (buf, wc, &s); - if (n == (size_t) -1) - { - printf ("%s: '\\x%x': encoding error\n", locname, (int) wc); - ++res; - } - else if (n == 0) - { - printf ("%s: '\\x%x': 0 returned\n", locname, (int) wc); - ++res; - } - else if (n != 1) - { - printf ("%s: '\\x%x': not 1 returned\n", locname, (int) wc); - ++res; - } - else if (wc != (wchar_t) buf[0]) - { - printf ("%s: L'\\x%x': buf[0] != '\\x%x'\n", locname, (int) wc, - (int) wc); - ++res; - } - } - - printf (res == 1 ? "%d error\n" : "%d errors\n", res); - - return res != 0; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-wcsnlen.c b/wcsmbs/tst-wcsnlen.c deleted file mode 100644 index 89b5212006..0000000000 --- a/wcsmbs/tst-wcsnlen.c +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright (C) 1999-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1999. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stdio.h> -#include <wchar.h> - -#define TEST(Str, Max, Exp) \ - n = wcsnlen (L##Str, Max); \ - if (n != Exp) \ - { \ - result = 1; \ - printf ("wcsnlen (L\"%s\", %d) = %d, not %d\n", Str, Max, n, Exp); \ - } - -static int -do_test (void) -{ - int result = 0; - int n; - - TEST ("0123456789", 0, 0); - TEST ("0123456789", 1, 1); - TEST ("0123456789", 2, 2); - TEST ("0123456789", 3, 3); - TEST ("0123456789", 4, 4); - TEST ("0123456789", 5, 5); - TEST ("0123456789", 6, 6); - TEST ("0123456789", 7, 7); - TEST ("0123456789", 8, 8); - TEST ("0123456789", 9, 9); - - TEST ("01234", 9, 5); - - return result; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-wcstod-nan-locale.c b/wcsmbs/tst-wcstod-nan-locale.c deleted file mode 100644 index 5e623f3046..0000000000 --- a/wcsmbs/tst-wcstod-nan-locale.c +++ /dev/null @@ -1,25 +0,0 @@ -/* Test strtod functions work with all ASCII letters in NAN(...) in - Turkish locales (bug 19266). Wide string version. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define CHAR wchar_t -#define SFMT "L\"%ls\"" -#define FNPFX wcsto -#define L_(C) L ## C - -#include "../stdlib/tst-strtod-nan-locale-main.c" diff --git a/wcsmbs/tst-wcstod-round.c b/wcsmbs/tst-wcstod-round.c deleted file mode 100644 index 04499721f6..0000000000 --- a/wcsmbs/tst-wcstod-round.c +++ /dev/null @@ -1,31 +0,0 @@ -/* wide character shim for tst-strtod-round-skeleton.c. - Copyright (C) 2016-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -/* Include stdio.h early to avoid issues with the snprintf - redefinition below. */ -#include <stdio.h> - -#define L_(str) L ## str -#define FNPFX wcs -#define CHAR wchar_t -#define STRM "%ls" -#define snprintf swprintf - -#include <stdlib/tst-strtod-round-skeleton.c> diff --git a/wcsmbs/tst-wcstof.c b/wcsmbs/tst-wcstof.c deleted file mode 100644 index 5b7cdeacd8..0000000000 --- a/wcsmbs/tst-wcstof.c +++ /dev/null @@ -1,33 +0,0 @@ -#define _GNU_SOURCE 1 -#include <wchar.h> -#include <stdio.h> -#include <string.h> -#include <wctype.h> -#include <libc-diag.h> - -static int -do_test (void) -{ - int result = 0; - char buf[100]; - wchar_t tmp[3]; - tmp[0] = '8'; - tmp[1] = '1'; - tmp[2] = 0; - - /* GCC does not know the result of wcstof so cannot see that the - snprintf output is not truncated. */ - DIAG_PUSH_NEEDS_COMMENT; -#if __GNUC_PREREQ (7, 0) - DIAG_IGNORE_NEEDS_COMMENT (7.0, "-Wformat-truncation"); -#endif - snprintf (buf, 100, "%S = %f", tmp, wcstof (tmp, NULL)); - DIAG_POP_NEEDS_COMMENT; - printf ("\"%s\" -> %s\n", buf, - strcmp (buf, "81 = 81.000000") == 0 ? "okay" : "buggy"); - result |= strcmp (buf, "81 = 81.000000") != 0; - - return result; -} - -#include <support/test-driver.c> diff --git a/wcsmbs/tst-wcstol-locale.c b/wcsmbs/tst-wcstol-locale.c deleted file mode 100644 index 946c1d036f..0000000000 --- a/wcsmbs/tst-wcstol-locale.c +++ /dev/null @@ -1,25 +0,0 @@ -/* Test strtol functions work with all ASCII letters in Turkish - locales (bug 19242). Wide string version. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define CHAR wchar_t -#define SFMT "L\"%ls\"" -#define FNPFX wcsto -#define L_(C) L ## C - -#include "../stdlib/tst-strtol-locale-main.c" diff --git a/wcsmbs/uchar.h b/wcsmbs/uchar.h deleted file mode 100644 index f937519cf4..0000000000 --- a/wcsmbs/uchar.h +++ /dev/null @@ -1,74 +0,0 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* - * ISO C11 Standard: 7.28 - * Unicode utilities <uchar.h> - */ - -#ifndef _UCHAR_H -#define _UCHAR_H 1 - -#include <features.h> - -#define __need_size_t -#include <stddef.h> - -#include <bits/types/mbstate_t.h> - -#if defined __GNUC__ && !defined __USE_ISOCXX11 -/* Define the 16-bit and 32-bit character types. Use the information - provided by the compiler. */ -# if !defined __CHAR16_TYPE__ || !defined __CHAR32_TYPE__ -# if defined __STDC_VERSION__ && __STDC_VERSION__ < 201000L -# error "<uchar.h> requires ISO C11 mode" -# else -# error "definitions of __CHAR16_TYPE__ and/or __CHAR32_TYPE__ missing" -# endif -# endif -typedef __CHAR16_TYPE__ char16_t; -typedef __CHAR32_TYPE__ char32_t; -#endif - - -__BEGIN_DECLS - -/* Write char16_t representation of multibyte character pointed - to by S to PC16. */ -extern size_t mbrtoc16 (char16_t *__restrict __pc16, - const char *__restrict __s, size_t __n, - mbstate_t *__restrict __p) __THROW; - -/* Write multibyte representation of char16_t C16 to S. */ -extern size_t c16rtomb (char *__restrict __s, char16_t __c16, - mbstate_t *__restrict __ps) __THROW; - - - -/* Write char32_t representation of multibyte character pointed - to by S to PC32. */ -extern size_t mbrtoc32 (char32_t *__restrict __pc32, - const char *__restrict __s, size_t __n, - mbstate_t *__restrict __p) __THROW; - -/* Write multibyte representation of char32_t C32 to S. */ -extern size_t c32rtomb (char *__restrict __s, char32_t __c32, - mbstate_t *__restrict __ps) __THROW; - -__END_DECLS - -#endif /* uchar.h */ diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h deleted file mode 100644 index d389428daa..0000000000 --- a/wcsmbs/wchar.h +++ /dev/null @@ -1,792 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* - * ISO C99 Standard: 7.24 - * Extended multibyte and wide character utilities <wchar.h> - */ - -#ifndef _WCHAR_H -#define _WCHAR_H 1 - -#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION -#include <bits/libc-header-start.h> - -#define __need_size_t -#define __need_wchar_t -#define __need_NULL -#include <stddef.h> - -#define __need___va_list -#include <stdarg.h> - -#include <bits/wchar.h> -#include <bits/types/wint_t.h> -#include <bits/types/mbstate_t.h> -#include <bits/types/__FILE.h> - -#if defined __USE_UNIX98 || defined __USE_XOPEN2K -# include <bits/types/FILE.h> -#endif - -/* Tell the caller that we provide correct C++ prototypes. */ -#if defined __cplusplus && __GNUC_PREREQ (4, 4) -# define __CORRECT_ISO_CPP_WCHAR_H_PROTO -#endif - -#ifndef WCHAR_MIN -/* These constants might also be defined in <inttypes.h>. */ -# define WCHAR_MIN __WCHAR_MIN -# define WCHAR_MAX __WCHAR_MAX -#endif - -#ifndef WEOF -# define WEOF (0xffffffffu) -#endif - -/* All versions of XPG prior to the publication of ISO C99 required - the bulk of <wctype.h>'s declarations to appear in this header - (because <wctype.h> did not exist prior to C99). In POSIX.1-2001 - those declarations were marked as XSI extensions; in -2008 they - were additionally marked as obsolescent. _GNU_SOURCE mode - anticipates the removal of these declarations in the next revision - of POSIX. */ -#if (defined __USE_XOPEN && !defined __USE_GNU \ - && !(defined __USE_XOPEN2K && !defined __USE_XOPEN2KXSI)) -# include <bits/wctype-wchar.h> -#endif - -__BEGIN_DECLS - -/* This incomplete type is defined in <time.h> but needed here because - of `wcsftime'. */ -struct tm; - - -/* Copy SRC to DEST. */ -extern wchar_t *wcscpy (wchar_t *__restrict __dest, - const wchar_t *__restrict __src) - __THROW __nonnull ((1, 2)); - -/* Copy no more than N wide-characters of SRC to DEST. */ -extern wchar_t *wcsncpy (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, size_t __n) - __THROW __nonnull ((1, 2)); - -/* Append SRC onto DEST. */ -extern wchar_t *wcscat (wchar_t *__restrict __dest, - const wchar_t *__restrict __src) - __THROW __nonnull ((1, 2)); -/* Append no more than N wide-characters of SRC onto DEST. */ -extern wchar_t *wcsncat (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, size_t __n) - __THROW __nonnull ((1, 2)); - -/* Compare S1 and S2. */ -extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) - __THROW __attribute_pure__ __nonnull ((1, 2)); -/* Compare N wide-characters of S1 and S2. */ -extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) - __THROW __attribute_pure__ __nonnull ((1, 2)); - -#ifdef __USE_XOPEN2K8 -/* Compare S1 and S2, ignoring case. */ -extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) __THROW; - -/* Compare no more than N chars of S1 and S2, ignoring case. */ -extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, - size_t __n) __THROW; - -/* Similar to the two functions above but take the information from - the provided locale and not the global locale. */ -# include <xlocale.h> - -extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, - __locale_t __loc) __THROW; - -extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, - size_t __n, __locale_t __loc) __THROW; -#endif - -/* Compare S1 and S2, both interpreted as appropriate to the - LC_COLLATE category of the current locale. */ -extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW; -/* Transform S2 into array pointed to by S1 such that if wcscmp is - applied to two transformed strings the result is the as applying - `wcscoll' to the original strings. */ -extern size_t wcsxfrm (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n) __THROW; - -#ifdef __USE_XOPEN2K8 -/* Similar to the two functions above but take the information from - the provided locale and not the global locale. */ - -/* Compare S1 and S2, both interpreted as appropriate to the - LC_COLLATE category of the given locale. */ -extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, - __locale_t __loc) __THROW; - -/* Transform S2 into array pointed to by S1 such that if wcscmp is - applied to two transformed strings the result is the as applying - `wcscoll' to the original strings. */ -extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, - size_t __n, __locale_t __loc) __THROW; - -/* Duplicate S, returning an identical malloc'd string. */ -extern wchar_t *wcsdup (const wchar_t *__s) __THROW __attribute_malloc__; -#endif - -/* Find the first occurrence of WC in WCS. */ -#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO -extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) - __THROW __asm ("wcschr") __attribute_pure__; -extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) - __THROW __asm ("wcschr") __attribute_pure__; -#else -extern wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) - __THROW __attribute_pure__; -#endif -/* Find the last occurrence of WC in WCS. */ -#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO -extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) - __THROW __asm ("wcsrchr") __attribute_pure__; -extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) - __THROW __asm ("wcsrchr") __attribute_pure__; -#else -extern wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) - __THROW __attribute_pure__; -#endif - -#ifdef __USE_GNU -/* This function is similar to `wcschr'. But it returns a pointer to - the closing NUL wide character in case C is not found in S. */ -extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) - __THROW __attribute_pure__; -#endif - -/* Return the length of the initial segmet of WCS which - consists entirely of wide characters not in REJECT. */ -extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) - __THROW __attribute_pure__; -/* Return the length of the initial segmet of WCS which - consists entirely of wide characters in ACCEPT. */ -extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) - __THROW __attribute_pure__; -/* Find the first occurrence in WCS of any character in ACCEPT. */ -#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO -extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) - __THROW __asm ("wcspbrk") __attribute_pure__; -extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, - const wchar_t *__accept) - __THROW __asm ("wcspbrk") __attribute_pure__; -#else -extern wchar_t *wcspbrk (const wchar_t *__wcs, const wchar_t *__accept) - __THROW __attribute_pure__; -#endif -/* Find the first occurrence of NEEDLE in HAYSTACK. */ -#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO -extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) - __THROW __asm ("wcsstr") __attribute_pure__; -extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, - const wchar_t *__needle) - __THROW __asm ("wcsstr") __attribute_pure__; -#else -extern wchar_t *wcsstr (const wchar_t *__haystack, const wchar_t *__needle) - __THROW __attribute_pure__; -#endif - -/* Divide WCS into tokens separated by characters in DELIM. */ -extern wchar_t *wcstok (wchar_t *__restrict __s, - const wchar_t *__restrict __delim, - wchar_t **__restrict __ptr) __THROW; - -/* Return the number of wide characters in S. */ -extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__; - -#ifdef __USE_XOPEN -/* Another name for `wcsstr' from XPG4. */ -# ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO -extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) - __THROW __asm ("wcswcs") __attribute_pure__; -extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, - const wchar_t *__needle) - __THROW __asm ("wcswcs") __attribute_pure__; -# else -extern wchar_t *wcswcs (const wchar_t *__haystack, const wchar_t *__needle) - __THROW __attribute_pure__; -# endif -#endif - -#ifdef __USE_XOPEN2K8 -/* Return the number of wide characters in S, but at most MAXLEN. */ -extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) - __THROW __attribute_pure__; -#endif - - -/* Search N wide characters of S for C. */ -#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO -extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) - __THROW __asm ("wmemchr") __attribute_pure__; -extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, - size_t __n) - __THROW __asm ("wmemchr") __attribute_pure__; -#else -extern wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, size_t __n) - __THROW __attribute_pure__; -#endif - -/* Compare N wide characters of S1 and S2. */ -extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) - __THROW __attribute_pure__; - -/* Copy N wide characters of SRC to DEST. */ -extern wchar_t *wmemcpy (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n) __THROW; - -/* Copy N wide characters of SRC to DEST, guaranteeing - correct behavior for overlapping strings. */ -extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) - __THROW; - -/* Set N wide characters of S to C. */ -extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW; - -#ifdef __USE_GNU -/* Copy N wide characters of SRC to DEST and return pointer to following - wide character. */ -extern wchar_t *wmempcpy (wchar_t *__restrict __s1, - const wchar_t *__restrict __s2, size_t __n) - __THROW; -#endif - - -/* Determine whether C constitutes a valid (one-byte) multibyte - character. */ -extern wint_t btowc (int __c) __THROW; - -/* Determine whether C corresponds to a member of the extended - character set whose multibyte representation is a single byte. */ -extern int wctob (wint_t __c) __THROW; - -/* Determine whether PS points to an object representing the initial - state. */ -extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__; - -/* Write wide character representation of multibyte character pointed - to by S to PWC. */ -extern size_t mbrtowc (wchar_t *__restrict __pwc, - const char *__restrict __s, size_t __n, - mbstate_t *__restrict __p) __THROW; - -/* Write multibyte representation of wide character WC to S. */ -extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, - mbstate_t *__restrict __ps) __THROW; - -/* Return number of bytes in multibyte character pointed to by S. */ -extern size_t __mbrlen (const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps) __THROW; -extern size_t mbrlen (const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps) __THROW; - -#ifdef __USE_EXTERN_INLINES -/* Define inline function as optimization. */ - -/* We can use the BTOWC and WCTOB optimizations since we know that all - locales must use ASCII encoding for the values in the ASCII range - and because the wchar_t encoding is always ISO 10646. */ -extern wint_t __btowc_alias (int __c) __asm ("btowc"); -__extern_inline wint_t -__NTH (btowc (int __c)) -{ return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' - ? (wint_t) __c : __btowc_alias (__c)); } - -extern int __wctob_alias (wint_t __c) __asm ("wctob"); -__extern_inline int -__NTH (wctob (wint_t __wc)) -{ return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' - ? (int) __wc : __wctob_alias (__wc)); } - -__extern_inline size_t -__NTH (mbrlen (const char *__restrict __s, size_t __n, - mbstate_t *__restrict __ps)) -{ return (__ps != NULL - ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); } -#endif - -/* Write wide character representation of multibyte character string - SRC to DST. */ -extern size_t mbsrtowcs (wchar_t *__restrict __dst, - const char **__restrict __src, size_t __len, - mbstate_t *__restrict __ps) __THROW; - -/* Write multibyte character representation of wide character string - SRC to DST. */ -extern size_t wcsrtombs (char *__restrict __dst, - const wchar_t **__restrict __src, size_t __len, - mbstate_t *__restrict __ps) __THROW; - - -#ifdef __USE_XOPEN2K8 -/* Write wide character representation of at most NMC bytes of the - multibyte character string SRC to DST. */ -extern size_t mbsnrtowcs (wchar_t *__restrict __dst, - const char **__restrict __src, size_t __nmc, - size_t __len, mbstate_t *__restrict __ps) __THROW; - -/* Write multibyte character representation of at most NWC characters - from the wide character string SRC to DST. */ -extern size_t wcsnrtombs (char *__restrict __dst, - const wchar_t **__restrict __src, - size_t __nwc, size_t __len, - mbstate_t *__restrict __ps) __THROW; -#endif /* use POSIX 2008 */ - - -/* The following functions are extensions found in X/Open CAE. */ -#ifdef __USE_XOPEN -/* Determine number of column positions required for C. */ -extern int wcwidth (wchar_t __c) __THROW; - -/* Determine number of column positions required for first N wide - characters (or fewer if S ends before this) in S. */ -extern int wcswidth (const wchar_t *__s, size_t __n) __THROW; -#endif /* Use X/Open. */ - - -/* Convert initial portion of the wide string NPTR to `double' - representation. */ -extern double wcstod (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr) __THROW; - -#ifdef __USE_ISOC99 -/* Likewise for `float' and `long double' sizes of floating-point numbers. */ -extern float wcstof (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr) __THROW; -extern long double wcstold (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr) __THROW; -#endif /* C99 */ - - -/* Convert initial portion of wide string NPTR to `long int' - representation. */ -extern long int wcstol (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, int __base) __THROW; - -/* Convert initial portion of wide string NPTR to `unsigned long int' - representation. */ -extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, int __base) - __THROW; - -#ifdef __USE_ISOC99 -/* Convert initial portion of wide string NPTR to `long long int' - representation. */ -__extension__ -extern long long int wcstoll (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, int __base) - __THROW; - -/* Convert initial portion of wide string NPTR to `unsigned long long int' - representation. */ -__extension__ -extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base) __THROW; -#endif /* ISO C99. */ - -#ifdef __USE_GNU -/* Convert initial portion of wide string NPTR to `long long int' - representation. */ -__extension__ -extern long long int wcstoq (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, int __base) - __THROW; - -/* Convert initial portion of wide string NPTR to `unsigned long long int' - representation. */ -__extension__ -extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base) __THROW; -#endif /* Use GNU. */ - -#ifdef __USE_GNU -/* The concept of one static locale per category is not very well - thought out. Many applications will need to process its data using - information from several different locales. Another application is - the implementation of the internationalization handling in the - upcoming ISO C++ standard library. To support this another set of - the functions using locale data exist which have an additional - argument. - - Attention: all these functions are *not* standardized in any form. - This is a proof-of-concept implementation. */ - -/* Structure for reentrant locale using functions. This is an - (almost) opaque type for the user level programs. */ -# include <xlocale.h> - -/* Special versions of the functions above which take the locale to - use as an additional parameter. */ -extern long int wcstol_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, int __base, - __locale_t __loc) __THROW; - -extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base, __locale_t __loc) __THROW; - -__extension__ -extern long long int wcstoll_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base, __locale_t __loc) __THROW; - -__extension__ -extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - int __base, __locale_t __loc) - __THROW; - -extern double wcstod_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, __locale_t __loc) - __THROW; - -extern float wcstof_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, __locale_t __loc) - __THROW; - -extern long double wcstold_l (const wchar_t *__restrict __nptr, - wchar_t **__restrict __endptr, - __locale_t __loc) __THROW; -#endif /* use GNU */ - - -#ifdef __USE_XOPEN2K8 -/* Copy SRC to DEST, returning the address of the terminating L'\0' in - DEST. */ -extern wchar_t *wcpcpy (wchar_t *__restrict __dest, - const wchar_t *__restrict __src) __THROW; - -/* Copy no more than N characters of SRC to DEST, returning the address of - the last character written into DEST. */ -extern wchar_t *wcpncpy (wchar_t *__restrict __dest, - const wchar_t *__restrict __src, size_t __n) - __THROW; -#endif - - -/* Wide character I/O functions. */ - -#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) -/* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces - a wide character string. */ -extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __THROW; -#endif - -#if defined __USE_ISOC95 || defined __USE_UNIX98 - -/* Select orientation for stream. */ -extern int fwide (__FILE *__fp, int __mode) __THROW; - - -/* Write formatted output to STREAM. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int fwprintf (__FILE *__restrict __stream, - const wchar_t *__restrict __format, ...) - /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */; -/* Write formatted output to stdout. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int wprintf (const wchar_t *__restrict __format, ...) - /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */; -/* Write formatted output of at most N characters to S. */ -extern int swprintf (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __format, ...) - __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */; - -/* Write formatted output to S from argument list ARG. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int vfwprintf (__FILE *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg) - /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */; -/* Write formatted output to stdout from argument list ARG. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int vwprintf (const wchar_t *__restrict __format, - __gnuc_va_list __arg) - /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */; -/* Write formatted output of at most N character to S from argument - list ARG. */ -extern int vswprintf (wchar_t *__restrict __s, size_t __n, - const wchar_t *__restrict __format, - __gnuc_va_list __arg) - __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */; - - -/* Read formatted input from STREAM. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int fwscanf (__FILE *__restrict __stream, - const wchar_t *__restrict __format, ...) - /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; -/* Read formatted input from stdin. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int wscanf (const wchar_t *__restrict __format, ...) - /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */; -/* Read formatted input from S. */ -extern int swscanf (const wchar_t *__restrict __s, - const wchar_t *__restrict __format, ...) - __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; - -# if defined __USE_ISOC99 && !defined __USE_GNU \ - && (!defined __LDBL_COMPAT || !defined __REDIRECT) \ - && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) -# ifdef __REDIRECT -/* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[ - GNU extension which conflicts with valid %a followed by letter - s, S or [. */ -extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream, - const wchar_t *__restrict __format, ...), - __isoc99_fwscanf) - /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; -extern int __REDIRECT (wscanf, (const wchar_t *__restrict __format, ...), - __isoc99_wscanf) - /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */; -extern int __REDIRECT_NTH (swscanf, (const wchar_t *__restrict __s, - const wchar_t *__restrict __format, - ...), __isoc99_swscanf) - /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; -# else -extern int __isoc99_fwscanf (__FILE *__restrict __stream, - const wchar_t *__restrict __format, ...); -extern int __isoc99_wscanf (const wchar_t *__restrict __format, ...); -extern int __isoc99_swscanf (const wchar_t *__restrict __s, - const wchar_t *__restrict __format, ...) - __THROW; -# define fwscanf __isoc99_fwscanf -# define wscanf __isoc99_wscanf -# define swscanf __isoc99_swscanf -# endif -# endif - -#endif /* Use ISO C95, C99 and Unix98. */ - -#ifdef __USE_ISOC99 -/* Read formatted input from S into argument list ARG. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int vfwscanf (__FILE *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg) - /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; -/* Read formatted input from stdin into argument list ARG. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int vwscanf (const wchar_t *__restrict __format, - __gnuc_va_list __arg) - /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */; -/* Read formatted input from S into argument list ARG. */ -extern int vswscanf (const wchar_t *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg) - __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; - -# if !defined __USE_GNU \ - && (!defined __LDBL_COMPAT || !defined __REDIRECT) \ - && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) -# ifdef __REDIRECT -extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg), __isoc99_vfwscanf) - /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; -extern int __REDIRECT (vwscanf, (const wchar_t *__restrict __format, - __gnuc_va_list __arg), __isoc99_vwscanf) - /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */; -extern int __REDIRECT_NTH (vswscanf, (const wchar_t *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg), __isoc99_vswscanf) - /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; -# else -extern int __isoc99_vfwscanf (__FILE *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg); -extern int __isoc99_vwscanf (const wchar_t *__restrict __format, - __gnuc_va_list __arg); -extern int __isoc99_vswscanf (const wchar_t *__restrict __s, - const wchar_t *__restrict __format, - __gnuc_va_list __arg) __THROW; -# define vfwscanf __isoc99_vfwscanf -# define vwscanf __isoc99_vwscanf -# define vswscanf __isoc99_vswscanf -# endif -# endif - -#endif /* Use ISO C99. */ - - -/* Read a character from STREAM. - - These functions are possible cancellation points and therefore not - marked with __THROW. */ -extern wint_t fgetwc (__FILE *__stream); -extern wint_t getwc (__FILE *__stream); - -/* Read a character from stdin. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern wint_t getwchar (void); - - -/* Write a character to STREAM. - - These functions are possible cancellation points and therefore not - marked with __THROW. */ -extern wint_t fputwc (wchar_t __wc, __FILE *__stream); -extern wint_t putwc (wchar_t __wc, __FILE *__stream); - -/* Write a character to stdout. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern wint_t putwchar (wchar_t __wc); - - -/* Get a newline-terminated wide character string of finite length - from STREAM. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, - __FILE *__restrict __stream); - -/* Write a string to STREAM. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern int fputws (const wchar_t *__restrict __ws, - __FILE *__restrict __stream); - - -/* Push a character back onto the input buffer of STREAM. - - This function is a possible cancellation point and therefore not - marked with __THROW. */ -extern wint_t ungetwc (wint_t __wc, __FILE *__stream); - - -#ifdef __USE_GNU -/* These are defined to be equivalent to the `char' functions defined - in POSIX.1:1996. - - These functions are not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation they are cancellation points and - therefore not marked with __THROW. */ -extern wint_t getwc_unlocked (__FILE *__stream); -extern wint_t getwchar_unlocked (void); - -/* This is the wide character version of a GNU extension. - - This function is not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation it is a cancellation point and - therefore not marked with __THROW. */ -extern wint_t fgetwc_unlocked (__FILE *__stream); - -/* Faster version when locking is not necessary. - - This function is not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation it is a cancellation point and - therefore not marked with __THROW. */ -extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); - -/* These are defined to be equivalent to the `char' functions defined - in POSIX.1:1996. - - These functions are not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation they are cancellation points and - therefore not marked with __THROW. */ -extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); -extern wint_t putwchar_unlocked (wchar_t __wc); - - -/* This function does the same as `fgetws' but does not lock the stream. - - This function is not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation it is a cancellation point and - therefore not marked with __THROW. */ -extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, - __FILE *__restrict __stream); - -/* This function does the same as `fputws' but does not lock the stream. - - This function is not part of POSIX and therefore no official - cancellation point. But due to similarity with an POSIX interface - or due to the implementation it is a cancellation point and - therefore not marked with __THROW. */ -extern int fputws_unlocked (const wchar_t *__restrict __ws, - __FILE *__restrict __stream); -#endif - - -/* Format TP into S according to FORMAT. - Write no more than MAXSIZE wide characters and return the number - of wide characters written, or 0 if it would exceed MAXSIZE. */ -extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, - const wchar_t *__restrict __format, - const struct tm *__restrict __tp) __THROW; - -# ifdef __USE_GNU -# include <xlocale.h> - -/* Similar to `wcsftime' but takes the information from - the provided locale and not the global locale. */ -extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, - const wchar_t *__restrict __format, - const struct tm *__restrict __tp, - __locale_t __loc) __THROW; -# endif - -/* Define some macros helping to catch buffer overflows. */ -#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function -# include <bits/wchar2.h> -#endif - -#ifdef __LDBL_COMPAT -# include <bits/wchar-ldbl.h> -#endif - -__END_DECLS - -#endif /* wchar.h */ diff --git a/wcsmbs/wcpcpy.c b/wcsmbs/wcpcpy.c deleted file mode 100644 index a370c57be2..0000000000 --- a/wcsmbs/wcpcpy.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#define __need_ptrdiff_t -#include <stddef.h> - -#ifdef WCPCPY -# define __wcpcpy WCPCPY -#endif -/* Copy SRC to DEST, returning the address of the terminating L'\0' in - DEST. */ -wchar_t * -__wcpcpy (wchar_t *dest, const wchar_t *src) -{ - wchar_t *wcp = (wchar_t *) dest - 1; - wint_t c; - const ptrdiff_t off = src - dest + 1; - - do - { - c = wcp[off]; - *++wcp = c; - } - while (c != L'\0'); - - return wcp; -} - -#ifndef WCPCPY -weak_alias (__wcpcpy, wcpcpy) -#endif diff --git a/wcsmbs/wcpncpy.c b/wcsmbs/wcpncpy.c deleted file mode 100644 index 42c17eadd0..0000000000 --- a/wcsmbs/wcpncpy.c +++ /dev/null @@ -1,87 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCPNCPY -# define __wcpncpy WCPNCPY -#endif - -/* Copy no more than N wide-characters of SRC to DEST, returning the - address of the last character written into DEST. */ -wchar_t * -__wcpncpy (wchar_t *dest, const wchar_t *src, size_t n) -{ - wint_t c; - wchar_t *const s = dest; - - if (n >= 4) - { - size_t n4 = n >> 2; - - for (;;) - { - c = *src++; - *dest++ = c; - if (c == L'\0') - break; - c = *src++; - *dest++ = c; - if (c == L'\0') - break; - c = *src++; - *dest++ = c; - if (c == L'\0') - break; - c = *src++; - *dest++ = c; - if (c == L'\0') - break; - if (--n4 == 0) - goto last_chars; - } - n -= dest - s; - goto zero_fill; - } - - last_chars: - n &= 3; - if (n == 0) - return dest; - - for (;;) - { - c = *src++; - --n; - *dest++ = c; - if (c == L'\0') - break; - if (n == 0) - return dest; - } - - zero_fill: - while (n-- > 0) - dest[n] = L'\0'; - - return dest - 1; -} - -#ifndef WCPNCPY -weak_alias (__wcpncpy, wcpncpy) -#endif diff --git a/wcsmbs/wcrtomb.c b/wcsmbs/wcrtomb.c deleted file mode 100644 index cc74503374..0000000000 --- a/wcsmbs/wcrtomb.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <gconv.h> -#include <stdlib.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -size_t -__wcrtomb (char *s, wchar_t wc, mbstate_t *ps) -{ - char buf[MB_LEN_MAX]; - struct __gconv_step_data data; - int status; - size_t result; - size_t dummy; - const struct gconv_fcts *fcts; - - /* Set information for this step. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps ?: &state; - - /* A first special case is if S is NULL. This means put PS in the - initial state. */ - if (s == NULL) - { - s = buf; - wc = L'\0'; - } - - /* Tell where we want to have the result. */ - data.__outbuf = (unsigned char *) s; - data.__outbufend = (unsigned char *) s + MB_CUR_MAX; - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - __gconv_fct fct = fcts->tomb->__fct; -#ifdef PTR_DEMANGLE - if (fcts->tomb->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - - /* If WC is the NUL character we write into the output buffer the byte - sequence necessary for PS to get into the initial state, followed - by a NUL byte. */ - if (wc == L'\0') - { - status = DL_CALL_FCT (fct, (fcts->tomb, &data, NULL, NULL, - NULL, &dummy, 1, 1)); - - if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - *data.__outbuf++ = '\0'; - } - else - { - /* Do a normal conversion. */ - const unsigned char *inbuf = (const unsigned char *) &wc; - - status = DL_CALL_FCT (fct, - (fcts->tomb, &data, &inbuf, - inbuf + sizeof (wchar_t), NULL, &dummy, 0, 1)); - } - - /* There must not be any problems with the conversion but illegal input - characters. The output buffer must be large enough, otherwise the - definition of MB_CUR_MAX is not correct. All the other possible - errors also must not happen. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_FULL_OUTPUT) - result = data.__outbuf - (unsigned char *) s; - else - { - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} -weak_alias (__wcrtomb, wcrtomb) -libc_hidden_weak (wcrtomb) - -/* There should be no difference between the UTF-32 handling required - by c32rtomb and the wchar_t handling which has long since been - implemented in wcrtomb. */ -weak_alias (__wcrtomb, c32rtomb) diff --git a/wcsmbs/wcsatcliff.c b/wcsmbs/wcsatcliff.c deleted file mode 100644 index 95afff6098..0000000000 --- a/wcsmbs/wcsatcliff.c +++ /dev/null @@ -1,23 +0,0 @@ -#include <wchar.h> - -#define WCSTEST 1 -#define L(c) L##c -#define CHAR wchar_t -#define MEMSET wmemset -#define STRLEN wcslen -#define STRNLEN wcsnlen -#define STRCHR wcschr -#define STRRCHR wcsrchr -#define STRCPY wcscpy -#define STRNCPY wcsncpy -#define MEMCMP wmemcmp -#define STPCPY wcpcpy -#define STPNCPY wcpncpy -#define MEMCPY wmemcpy -#define MEMPCPY wmempcpy -#define MEMCHR wmemchr -#define STRCMP wcscmp -#define STRNCMP wcsncmp - - -#include "../string/stratcliff.c" diff --git a/wcsmbs/wcscasecmp.c b/wcsmbs/wcscasecmp.c deleted file mode 100644 index 0f02e505c0..0000000000 --- a/wcsmbs/wcscasecmp.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Copyright (C) 1991-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <wctype.h> -#include <wchar.h> - -#ifndef weak_alias -# define __wcscasecmp wcscasecmp -# define TOLOWER(Ch) towlower (Ch) -#else -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define __wcscasecmp __wcscasecmp_l -# define TOLOWER(Ch) __towlower_l ((Ch), loc) -# else -# define TOLOWER(Ch) towlower (Ch) -# endif -#endif - -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define LOCALE_PARAM , __locale_t loc -#else -# define LOCALE_PARAM -#endif - -/* Compare S1 and S2, ignoring case, returning less than, equal to or - greater than zero if S1 is lexicographically less than, - equal to or greater than S2. */ -int -__wcscasecmp (const wchar_t *s1, const wchar_t *s2 LOCALE_PARAM) -{ - wint_t c1, c2; - - if (s1 == s2) - return 0; - - do - { - c1 = TOLOWER (*s1++); - c2 = TOLOWER (*s2++); - if (c1 == L'\0') - break; - } - while (c1 == c2); - - return c1 - c2; -} -#ifndef __wcscasecmp -weak_alias (__wcscasecmp, wcscasecmp) -#endif diff --git a/wcsmbs/wcscasecmp_l.c b/wcsmbs/wcscasecmp_l.c deleted file mode 100644 index 9fa1cc621e..0000000000 --- a/wcsmbs/wcscasecmp_l.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define USE_IN_EXTENDED_LOCALE_MODEL 1 -#include <wcscasecmp.c> - -libc_hidden_def (__wcscasecmp_l) -weak_alias (__wcscasecmp_l, wcscasecmp_l) diff --git a/wcsmbs/wcscat.c b/wcsmbs/wcscat.c deleted file mode 100644 index d567b7309b..0000000000 --- a/wcsmbs/wcscat.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSCAT -# define __wcscat WCSCAT -#endif - -/* Append SRC on the end of DEST. */ -wchar_t * -__wcscat (wchar_t *dest, const wchar_t *src) -{ - wchar_t *s1 = dest; - const wchar_t *s2 = src; - wchar_t c; - - /* Find the end of the string. */ - do - c = *s1++; - while (c != L'\0'); - - /* Make S1 point before the next character, so we can increment - it while memory is read (wins on pipelined cpus). */ - s1 -= 2; - - do - { - c = *s2++; - *++s1 = c; - } - while (c != L'\0'); - - return dest; -} -#ifndef WCSCAT -weak_alias (__wcscat, wcscat) -#endif diff --git a/wcsmbs/wcschr.c b/wcsmbs/wcschr.c deleted file mode 100644 index 210ae07647..0000000000 --- a/wcsmbs/wcschr.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifndef WCSCHR -# define WCSCHR __wcschr -#endif - -/* Find the first occurrence of WC in WCS. */ -wchar_t * -WCSCHR (const wchar_t *wcs, const wchar_t wc) -{ - do - if (*wcs == wc) - return (wchar_t *) wcs; - while (*wcs++ != L'\0'); - - return NULL; -} -libc_hidden_def (__wcschr) -weak_alias (__wcschr, wcschr) -libc_hidden_weak (wcschr) diff --git a/wcsmbs/wcschrnul.c b/wcsmbs/wcschrnul.c deleted file mode 100644 index 67ddb1a884..0000000000 --- a/wcsmbs/wcschrnul.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSCHRNUL -# define __wcschrnul WCSCHRNUL -#endif - -/* Find the first occurrence of WC in WCS. */ -wchar_t * -__wcschrnul (const wchar_t *wcs, const wchar_t wc) -{ - while (*wcs != L'\0') - if (*wcs == wc) - break; - else - ++wcs; - - return (wchar_t *) wcs; -} -#ifndef WCSCHRNUL -weak_alias (__wcschrnul, wcschrnul) -#endif diff --git a/wcsmbs/wcscmp.c b/wcsmbs/wcscmp.c deleted file mode 100644 index 9c0d761311..0000000000 --- a/wcsmbs/wcscmp.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifndef WCSCMP -# define WCSCMP __wcscmp -#endif - -/* Compare S1 and S2, returning less than, equal to or - greater than zero if S1 is lexicographically less than, - equal to or greater than S2. */ -int -WCSCMP (const wchar_t *s1, const wchar_t *s2) -{ - wchar_t c1, c2; - - do - { - c1 = *s1++; - c2 = *s2++; - if (c2 == L'\0') - return c1 - c2; - } - while (c1 == c2); - - return c1 < c2 ? -1 : 1; -} -libc_hidden_def (WCSCMP) -weak_alias (WCSCMP, wcscmp) diff --git a/wcsmbs/wcscoll.c b/wcsmbs/wcscoll.c deleted file mode 100644 index 88c60fde17..0000000000 --- a/wcsmbs/wcscoll.c +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include "../locale/coll-lookup.h" - -#define STRING_TYPE wchar_t -#define USTRING_TYPE wint_t -#define STRCOLL __wcscoll -#define STRCOLL_L __wcscoll_l -#define USE_HIDDEN_DEF - -#include "../string/strcoll.c" - -#ifndef USE_IN_EXTENDED_LOCALE_MODEL -weak_alias (__wcscoll, wcscoll) -#endif diff --git a/wcsmbs/wcscoll_l.c b/wcsmbs/wcscoll_l.c deleted file mode 100644 index b5e760389a..0000000000 --- a/wcsmbs/wcscoll_l.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - - -#include <wchar.h> -#include "../locale/coll-lookup.h" - -#define STRING_TYPE wchar_t -#define USTRING_TYPE wint_t -#define STRCOLL __wcscoll_l -#define STRCMP __wcscmp -#define WEIGHT_H "../locale/weightwc.h" -#define SUFFIX WC -#define L(arg) L##arg -#define WIDE_CHAR_VERSION 1 - -#include "../string/strcoll_l.c" - -weak_alias (__wcscoll_l, wcscoll_l) diff --git a/wcsmbs/wcscpy.c b/wcsmbs/wcscpy.c deleted file mode 100644 index 21dd547961..0000000000 --- a/wcsmbs/wcscpy.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <wchar.h> - - -#ifndef WCSCPY -# define WCSCPY wcscpy -#endif - -/* Copy SRC to DEST. */ -wchar_t * -WCSCPY (wchar_t *dest, const wchar_t *src) -{ - wint_t c; - wchar_t *wcp; - - if (__alignof__ (wchar_t) >= sizeof (wchar_t)) - { - const ptrdiff_t off = dest - src - 1; - - wcp = (wchar_t *) src; - - do - { - c = *wcp++; - wcp[off] = c; - } - while (c != L'\0'); - } - else - { - wcp = dest; - - do - { - c = *src++; - *wcp++ = c; - } - while (c != L'\0'); - } - - return dest; -} diff --git a/wcsmbs/wcscspn.c b/wcsmbs/wcscspn.c deleted file mode 100644 index 5e74d464c5..0000000000 --- a/wcsmbs/wcscspn.c +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSCSPN -# define wcscspn WCSCSPN -#endif - -/* Return the length of the maximum initial segment - of WCS which contains only wide-characters not in REJECT. */ -size_t -wcscspn (const wchar_t *wcs, const wchar_t *reject) -{ - size_t count = 0; - - while (*wcs != L'\0') - if (wcschr (reject, *wcs++) == NULL) - ++count; - else - return count; - - return count; -} diff --git a/wcsmbs/wcsdup.c b/wcsmbs/wcsdup.c deleted file mode 100644 index 4215541476..0000000000 --- a/wcsmbs/wcsdup.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <string.h> -#include <stdlib.h> - - -/* Duplicate S, returning an identical malloc'd string. */ -wchar_t * -wcsdup (const wchar_t *s) -{ - size_t len = (__wcslen (s) + 1) * sizeof (wchar_t); - void *new = malloc (len); - - if (new == NULL) - return NULL; - - return (wchar_t *) memcpy (new, (void *) s, len); -} diff --git a/wcsmbs/wcslen.c b/wcsmbs/wcslen.c deleted file mode 100644 index 716b390b1d..0000000000 --- a/wcsmbs/wcslen.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -/* Return length of string S. */ -#ifdef WCSLEN -# define __wcslen WCSLEN -#endif - -size_t -__wcslen (const wchar_t *s) -{ - size_t len = 0; - - while (s[len] != L'\0') - { - if (s[++len] == L'\0') - return len; - if (s[++len] == L'\0') - return len; - if (s[++len] == L'\0') - return len; - ++len; - } - - return len; -} -#ifndef WCSLEN -weak_alias (__wcslen, wcslen) -#endif diff --git a/wcsmbs/wcsmbs-tst1.c b/wcsmbs/wcsmbs-tst1.c deleted file mode 100644 index 0d0e18f63a..0000000000 --- a/wcsmbs/wcsmbs-tst1.c +++ /dev/null @@ -1,59 +0,0 @@ -/* Based on a test program by Won Kyu Park <wkpark@chem.skku.ac.kr>. */ - -#include <wchar.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <wctype.h> -#include <locale.h> - -int -main (void) -{ - int test = 0; - int idx = 0; - char buf[100], *pchar; - wchar_t tmp[10]; - wchar_t tmp1[] = { L'W', L'o', L'r', L'l', L'd', L'\0' }; - char str[] = "Hello"; - int result = 0; - - pchar = setlocale (LC_ALL, "de_DE.UTF-8"); - printf ("locale : %s\n",pchar); - printf ("MB_CUR_MAX %Zd\n", MB_CUR_MAX); - - puts ("---- test 1 ------"); - test = mbstowcs (tmp, str, (strlen (str) + 1) * sizeof (char)); - printf ("size of string by mbstowcs %d\n", test); - if (test != strlen (str)) - result = 1; - idx += wctomb (&buf[0], tmp[0]); - idx += wctomb (&buf[idx], tmp[1]); - buf[idx] = 0; - printf ("orig string %s\n", str); - printf ("string by wctomb %s\n", buf); - printf ("string by %%C %C", (wint_t) tmp[0]); - if (tmp[0] != L'H') - result = 1; - printf ("%C\n", (wint_t) tmp[1]); - if (tmp[1] != L'e') - result = 1; - printf ("string by %%S %S\n", tmp); - if (wcscmp (tmp, L"Hello") != 0) - result = 1; - puts ("---- test 2 ------"); - printf ("wchar string %S\n", tmp1); - printf ("wchar %C\n", (wint_t) tmp1[0]); - test = wcstombs (buf, tmp1, (wcslen (tmp1) + 1) * sizeof (wchar_t)); - printf ("size of string by wcstombs %d\n", test); - if (test != wcslen (tmp1)) - result = 1; - test = wcslen (tmp1); - printf ("size of string by wcslen %d\n", test); - printf ("char %s\n", buf); - if (strcmp (buf, "World") != 0) - result = 1; - puts ("------------------"); - - return result; -} diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c deleted file mode 100644 index 656cc0a8e8..0000000000 --- a/wcsmbs/wcsmbsload.c +++ /dev/null @@ -1,270 +0,0 @@ -/* Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <ctype.h> -#include <langinfo.h> -#include <limits.h> -#include <stdlib.h> -#include <string.h> - -#include <locale/localeinfo.h> -#include <wcsmbsload.h> -#include <libc-lock.h> - - -/* These are the descriptions for the default conversion functions. */ -static const struct __gconv_step to_wc = -{ - .__shlib_handle = NULL, - .__modname = NULL, - .__counter = INT_MAX, - .__from_name = (char *) "ANSI_X3.4-1968//TRANSLIT", - .__to_name = (char *) "INTERNAL", - .__fct = __gconv_transform_ascii_internal, - .__btowc_fct = __gconv_btwoc_ascii, - .__init_fct = NULL, - .__end_fct = NULL, - .__min_needed_from = 1, - .__max_needed_from = 1, - .__min_needed_to = 4, - .__max_needed_to = 4, - .__stateful = 0, - .__data = NULL -}; - -static const struct __gconv_step to_mb = -{ - .__shlib_handle = NULL, - .__modname = NULL, - .__counter = INT_MAX, - .__from_name = (char *) "INTERNAL", - .__to_name = (char *) "ANSI_X3.4-1968//TRANSLIT", - .__fct = __gconv_transform_internal_ascii, - .__btowc_fct = NULL, - .__init_fct = NULL, - .__end_fct = NULL, - .__min_needed_from = 4, - .__max_needed_from = 4, - .__min_needed_to = 1, - .__max_needed_to = 1, - .__stateful = 0, - .__data = NULL -}; - - -/* For the default locale we only have to handle ANSI_X3.4-1968. */ -const struct gconv_fcts __wcsmbs_gconv_fcts_c = -{ - .towc = (struct __gconv_step *) &to_wc, - .towc_nsteps = 1, - .tomb = (struct __gconv_step *) &to_mb, - .tomb_nsteps = 1, -}; - - -attribute_hidden -struct __gconv_step * -__wcsmbs_getfct (const char *to, const char *from, size_t *nstepsp) -{ - size_t nsteps; - struct __gconv_step *result; -#if 0 - size_t nstateful; - size_t cnt; -#endif - - if (__gconv_find_transform (to, from, &result, &nsteps, 0) != __GCONV_OK) - /* Loading the conversion step is not possible. */ - return NULL; - - /* Maybe it is someday necessary to allow more than one step. - Currently this is not the case since the conversions handled here - are from and to INTERNAL and there always is a converted for - that. It the directly following code is enabled the libio - functions will have to allocate appropriate __gconv_step_data - elements instead of only one. */ -#if 0 - /* Count the number of stateful conversions. Since we will only - have one 'mbstate_t' object available we can only deal with one - stateful conversion. */ - nstateful = 0; - for (cnt = 0; cnt < nsteps; ++cnt) - if (result[cnt].__stateful) - ++nstateful; - if (nstateful > 1) -#else - if (nsteps > 1) -#endif - { - /* We cannot handle this case. */ - __gconv_close_transform (result, nsteps); - result = NULL; - } - else - *nstepsp = nsteps; - - return result; -} - - -/* Extract from the given locale name the character set portion. Since - only the XPG form of the name includes this information we don't have - to take care for the CEN form. */ -#define extract_charset_name(str) \ - ({ \ - const char *cp = str; \ - char *result = NULL; \ - \ - cp += strcspn (cp, "@.+,"); \ - if (*cp == '.') \ - { \ - const char *endp = ++cp; \ - while (*endp != '\0' && *endp != '@') \ - ++endp; \ - if (endp != cp) \ - result = strndupa (cp, endp - cp); \ - } \ - result; \ - }) - - -/* Some of the functions here must not be used while setlocale is called. */ -__libc_rwlock_define (extern, __libc_setlocale_lock attribute_hidden) - -/* Load conversion functions for the currently selected locale. */ -void -internal_function -__wcsmbs_load_conv (struct __locale_data *new_category) -{ - /* Acquire the lock. */ - __libc_rwlock_wrlock (__libc_setlocale_lock); - - /* We should repeat the test since while we waited some other thread - might have run this function. */ - if (__glibc_likely (new_category->private.ctype == NULL)) - { - /* We must find the real functions. */ - const char *charset_name; - const char *complete_name; - struct gconv_fcts *new_fcts; - int use_translit; - - /* Allocate the gconv_fcts structure. */ - new_fcts = calloc (1, sizeof *new_fcts); - if (new_fcts == NULL) - goto failed; - - /* Get name of charset of the locale. */ - charset_name = new_category->values[_NL_ITEM_INDEX(CODESET)].string; - - /* Does the user want transliteration? */ - use_translit = new_category->use_translit; - - /* Normalize the name and add the slashes necessary for a - complete lookup. */ - complete_name = norm_add_slashes (charset_name, - use_translit ? "TRANSLIT" : ""); - - /* It is not necessary to use transliteration in this direction - since the internal character set is supposed to be able to - represent all others. */ - new_fcts->towc = __wcsmbs_getfct ("INTERNAL", complete_name, - &new_fcts->towc_nsteps); - if (new_fcts->towc != NULL) - new_fcts->tomb = __wcsmbs_getfct (complete_name, "INTERNAL", - &new_fcts->tomb_nsteps); - - /* If any of the conversion functions is not available we don't - use any since this would mean we cannot convert back and - forth. NB: NEW_FCTS was allocated with calloc. */ - if (new_fcts->tomb == NULL) - { - if (new_fcts->towc != NULL) - __gconv_close_transform (new_fcts->towc, new_fcts->towc_nsteps); - - free (new_fcts); - - failed: - new_category->private.ctype = &__wcsmbs_gconv_fcts_c; - } - else - { - new_category->private.ctype = new_fcts; - new_category->private.cleanup = &_nl_cleanup_ctype; - } - } - - __libc_rwlock_unlock (__libc_setlocale_lock); -} - - -/* Clone the current conversion function set. */ -void -internal_function -__wcsmbs_clone_conv (struct gconv_fcts *copy) -{ - const struct gconv_fcts *orig; - - orig = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Copy the data. */ - *copy = *orig; - - /* Now increment the usage counters. - Note: This assumes copy->*_nsteps == 1. */ - if (copy->towc->__shlib_handle != NULL) - ++copy->towc->__counter; - if (copy->tomb->__shlib_handle != NULL) - ++copy->tomb->__counter; -} - - -/* Get converters for named charset. */ -int -internal_function -__wcsmbs_named_conv (struct gconv_fcts *copy, const char *name) -{ - copy->towc = __wcsmbs_getfct ("INTERNAL", name, ©->towc_nsteps); - if (copy->towc == NULL) - return 1; - - copy->tomb = __wcsmbs_getfct (name, "INTERNAL", ©->tomb_nsteps); - if (copy->tomb == NULL) - { - __gconv_close_transform (copy->towc, copy->towc_nsteps); - return 1; - } - - return 0; -} - -void internal_function -_nl_cleanup_ctype (struct __locale_data *locale) -{ - const struct gconv_fcts *const data = locale->private.ctype; - if (data != NULL) - { - locale->private.ctype = NULL; - locale->private.cleanup = NULL; - - /* Free the old conversions. */ - __gconv_close_transform (data->tomb, data->tomb_nsteps); - __gconv_close_transform (data->towc, data->towc_nsteps); - free ((char *) data); - } -} diff --git a/wcsmbs/wcsmbsload.h b/wcsmbs/wcsmbsload.h deleted file mode 100644 index 3e254a877e..0000000000 --- a/wcsmbs/wcsmbsload.h +++ /dev/null @@ -1,80 +0,0 @@ -/* Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifndef _WCSMBSLOAD_H -#define _WCSMBSLOAD_H 1 - -#include <locale.h> -#include <wchar.h> -#include <locale/localeinfo.h> - - -/* Contains pointers to the used functions in the `gconv' modules. */ -struct gconv_fcts - { - struct __gconv_step *towc; - size_t towc_nsteps; - struct __gconv_step *tomb; - size_t tomb_nsteps; - }; - -/* Set of currently active conversion functions. */ -extern const struct gconv_fcts __wcsmbs_gconv_fcts_c attribute_hidden; - -/* Load conversion functions for the currently selected locale. */ -extern void __wcsmbs_load_conv (struct __locale_data *new_category) - internal_function; - -/* Clone the current `__wcsmbs_load_conv' value. */ -extern void __wcsmbs_clone_conv (struct gconv_fcts *copy) - internal_function; - -/* Find the conversion functions for converting to and from NAME. */ -extern int __wcsmbs_named_conv (struct gconv_fcts *copy, const char *name) - internal_function; - -/* Function used for the `private.cleanup' hook. */ -extern void _nl_cleanup_ctype (struct __locale_data *) - internal_function attribute_hidden; - - -#include <iconv/gconv_int.h> - - -/* Load the function implementation if necessary. */ -extern struct __gconv_step *__wcsmbs_getfct (const char *to, const char *from, - size_t *nstepsp) - attribute_hidden; - -extern const struct __locale_data _nl_C_LC_CTYPE attribute_hidden; - -/* Check whether the LC_CTYPE locale changed since the last call. - Update the pointers appropriately. */ -static inline const struct gconv_fcts * -get_gconv_fcts (struct __locale_data *data) -{ - if (__glibc_unlikely (data->private.ctype == NULL)) - { - if (__glibc_unlikely (data == &_nl_C_LC_CTYPE)) - return &__wcsmbs_gconv_fcts_c; - __wcsmbs_load_conv (data); - } - return data->private.ctype; -} - -#endif /* wcsmbsload.h */ diff --git a/wcsmbs/wcsncase.c b/wcsmbs/wcsncase.c deleted file mode 100644 index 945434ce5a..0000000000 --- a/wcsmbs/wcsncase.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Compare at most N wide characters of two strings without taking care - for the case. - Copyright (C) 1992-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <wchar.h> -#include <wctype.h> - -#ifndef weak_alias -# define __wcsncasecmp wcsncasecmp -# define TOLOWER(Ch) towlower (Ch) -#else -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define __wcsncasecmp __wcsncasecmp_l -# define TOLOWER(Ch) __towlower_l ((Ch), loc) -# else -# define TOLOWER(Ch) towlower (Ch) -# endif -#endif - -#ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define LOCALE_PARAM , __locale_t loc -#else -# define LOCALE_PARAM -#endif - -/* Compare no more than N wide characters of S1 and S2, - ignoring case, returning less than, equal to or - greater than zero if S1 is lexicographically less - than, equal to or greater than S2. */ -int -__wcsncasecmp (const wchar_t *s1, const wchar_t *s2, size_t n LOCALE_PARAM) -{ - wint_t c1, c2; - - if (s1 == s2 || n == 0) - return 0; - - do - { - c1 = (wint_t) TOLOWER (*s1++); - c2 = (wint_t) TOLOWER (*s2++); - if (c1 == L'\0' || c1 != c2) - return c1 - c2; - } while (--n > 0); - - return c1 - c2; -} -#ifndef __wcsncasecmp -weak_alias (__wcsncasecmp, wcsncasecmp) -#endif diff --git a/wcsmbs/wcsncase_l.c b/wcsmbs/wcsncase_l.c deleted file mode 100644 index 70d9e6d51b..0000000000 --- a/wcsmbs/wcsncase_l.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define USE_IN_EXTENDED_LOCALE_MODEL 1 -#include <wcsncase.c> - -libc_hidden_def (__wcsncasecmp_l) -weak_alias (__wcsncasecmp_l, wcsncasecmp_l) diff --git a/wcsmbs/wcsncat.c b/wcsmbs/wcsncat.c deleted file mode 100644 index 225d826c50..0000000000 --- a/wcsmbs/wcsncat.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifndef WCSNCAT -# define WCSNCAT wcsncat -#endif - -/* Append no more than N wide-character of SRC onto DEST. */ -wchar_t * -WCSNCAT (wchar_t *dest, const wchar_t *src, size_t n) -{ - wchar_t c; - wchar_t * const s = dest; - - /* Find the end of DEST. */ - do - c = *dest++; - while (c != L'\0'); - - /* Make DEST point before next character, so we can increment - it while memory is read (wins on pipelined cpus). */ - dest -= 2; - - if (n >= 4) - { - size_t n4 = n >> 2; - do - { - c = *src++; - *++dest = c; - if (c == L'\0') - return s; - c = *src++; - *++dest = c; - if (c == L'\0') - return s; - c = *src++; - *++dest = c; - if (c == L'\0') - return s; - c = *src++; - *++dest = c; - if (c == L'\0') - return s; - } while (--n4 > 0); - n &= 3; - } - - while (n > 0) - { - c = *src++; - *++dest = c; - if (c == L'\0') - return s; - n--; - } - - if (c != L'\0') - *++dest = L'\0'; - - return s; -} diff --git a/wcsmbs/wcsncmp.c b/wcsmbs/wcsncmp.c deleted file mode 100644 index 9fe57c7893..0000000000 --- a/wcsmbs/wcsncmp.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifndef WCSNCMP -# define WCSNCMP wcsncmp -#endif - -/* Compare no more than N characters of S1 and S2, - returning less than, equal to or greater than zero - if S1 is lexicographically less than, equal to or - greater than S2. */ -int -WCSNCMP (const wchar_t *s1, const wchar_t *s2, size_t n) -{ - wchar_t c1 = L'\0'; - wchar_t c2 = L'\0'; - - if (n >= 4) - { - size_t n4 = n >> 2; - do - { - c1 = *s1++; - c2 = *s2++; - if (c1 == L'\0' || c1 != c2) - return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0); - c1 = *s1++; - c2 = *s2++; - if (c1 == L'\0' || c1 != c2) - return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0); - c1 = *s1++; - c2 = *s2++; - if (c1 == L'\0' || c1 != c2) - return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0); - c1 = *s1++; - c2 = *s2++; - if (c1 == L'\0' || c1 != c2) - return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0); - } while (--n4 > 0); - n &= 3; - } - - while (n > 0) - { - c1 = *s1++; - c2 = *s2++; - if (c1 == L'\0' || c1 != c2) - return c1 > c2 ? 1 : (c1 < c2 ? -1 : 0); - n--; - } - - return 0; -} diff --git a/wcsmbs/wcsncpy.c b/wcsmbs/wcsncpy.c deleted file mode 100644 index 27bfb0d0da..0000000000 --- a/wcsmbs/wcsncpy.c +++ /dev/null @@ -1,88 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSNCPY -# define __wcsncpy WCSNCPY -#endif - -/* Copy no more than N wide-characters of SRC to DEST. */ -wchar_t * -__wcsncpy (wchar_t *dest, const wchar_t *src, size_t n) -{ - wint_t c; - wchar_t *const s = dest; - - --dest; - - if (n >= 4) - { - size_t n4 = n >> 2; - - for (;;) - { - c = *src++; - *++dest = c; - if (c == L'\0') - break; - c = *src++; - *++dest = c; - if (c == L'\0') - break; - c = *src++; - *++dest = c; - if (c == L'\0') - break; - c = *src++; - *++dest = c; - if (c == L'\0') - break; - if (--n4 == 0) - goto last_chars; - } - n = n - (dest - s) - 1; - if (n == 0) - return s; - goto zero_fill; - } - - last_chars: - n &= 3; - if (n == 0) - return s; - - do - { - c = *src++; - *++dest = c; - if (--n == 0) - return s; - } - while (c != L'\0'); - - zero_fill: - do - *++dest = L'\0'; - while (--n > 0); - - return s; -} -#ifndef WCSNCPY -weak_alias (__wcsncpy, wcsncpy) -#endif diff --git a/wcsmbs/wcsnlen.c b/wcsmbs/wcsnlen.c deleted file mode 100644 index 21bb6db0c7..0000000000 --- a/wcsmbs/wcsnlen.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Copyright (C) 1998-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSNLEN -# define __wcsnlen WCSNLEN -#endif - -/* Return length of string S at most maxlen. */ -size_t -__wcsnlen (const wchar_t *s, size_t maxlen) -{ - size_t len = 0; - - while (maxlen > 0 && s[len] != L'\0') - { - ++len; - if (--maxlen == 0 || s[len] == L'\0') - return len; - ++len; - if (--maxlen == 0 || s[len] == L'\0') - return len; - ++len; - if (--maxlen == 0 || s[len] == L'\0') - return len; - ++len; - --maxlen; - } - - return len; -} -#ifndef WCSNLEN -weak_alias (__wcsnlen, wcsnlen) -#endif diff --git a/wcsmbs/wcsnrtombs.c b/wcsmbs/wcsnrtombs.c deleted file mode 100644 index 9c331dc0e6..0000000000 --- a/wcsmbs/wcsnrtombs.c +++ /dev/null @@ -1,148 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <gconv.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -/* This is a non-standard function but it is very useful in the - implementation of stdio because we have to deal with unterminated - buffers. At most NWC wide character will be converted. */ -size_t -__wcsnrtombs (char *dst, const wchar_t **src, size_t nwc, size_t len, - mbstate_t *ps) -{ - struct __gconv_step_data data; - const wchar_t *srcend; - int status; - size_t result; - struct __gconv_step *tomb; - const struct gconv_fcts *fcts; - - /* Tell where we want the result. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps ?: &state; - - if (nwc == 0) - return 0; - srcend = *src + __wcsnlen (*src, nwc - 1) + 1; - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Get the structure with the function pointers. */ - tomb = fcts->tomb; - __gconv_fct fct = tomb->__fct; -#ifdef PTR_DEMANGLE - if (tomb->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - - /* We have to handle DST == NULL special. */ - if (dst == NULL) - { - mbstate_t temp_state; - unsigned char buf[256]; /* Just an arbitrary value. */ - const unsigned char *inbuf = (const unsigned char *) *src; - size_t dummy; - - temp_state = *data.__statep; - data.__statep = &temp_state; - - result = 0; - data.__outbufend = buf + sizeof (buf); - - do - { - data.__outbuf = buf; - - status = DL_CALL_FCT (fct, (tomb, &data, &inbuf, - (const unsigned char *) srcend, NULL, - &dummy, 0, 1)); - - /* Count the number of bytes. */ - result += data.__outbuf - buf; - } - while (status == __GCONV_FULL_OUTPUT); - - if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - && data.__outbuf[-1] == '\0') - /* Don't count the NUL character in. */ - --result; - } - else - { - /* This code is based on the safe assumption that all internal - multi-byte encodings use the NUL byte only to mark the end - of the string. */ - size_t dummy; - - data.__outbuf = (unsigned char *) dst; - data.__outbufend = (unsigned char *) dst + len; - - status = DL_CALL_FCT (fct, (tomb, &data, (const unsigned char **) src, - (const unsigned char *) srcend, NULL, - &dummy, 0, 1)); - - /* Count the number of bytes. */ - result = data.__outbuf - (unsigned char *) dst; - - /* We have to determine whether the last character converted - is the NUL character. */ - if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - && data.__outbuf[-1] == '\0') - { - assert (data.__outbuf != (unsigned char *) dst); - assert (__mbsinit (data.__statep)); - *src = NULL; - --result; - } - } - - /* There must not be any problems with the conversion but illegal input - characters. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT - && status != __GCONV_EMPTY_INPUT) - { - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} -weak_alias (__wcsnrtombs, wcsnrtombs) diff --git a/wcsmbs/wcspbrk.c b/wcsmbs/wcspbrk.c deleted file mode 100644 index e510ab8b57..0000000000 --- a/wcsmbs/wcspbrk.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu> - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSPBRK -# define wcspbrk WCSPBRK -#endif - -/* Find the first occurrence in WCS of any wide-character in ACCEPT. */ -wchar_t * -wcspbrk (const wchar_t *wcs, const wchar_t *accept) -{ - while (*wcs != L'\0') - if (wcschr (accept, *wcs) == NULL) - ++wcs; - else - return (wchar_t *) wcs; - - return NULL; -} -libc_hidden_def (wcspbrk) diff --git a/wcsmbs/wcsrchr.c b/wcsmbs/wcsrchr.c deleted file mode 100644 index 03407d506e..0000000000 --- a/wcsmbs/wcsrchr.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu> - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifndef WCSRCHR -# define WCSRCHR wcsrchr -#endif - -/* Find the last occurrence of WC in WCS. */ -wchar_t * -WCSRCHR (const wchar_t *wcs, const wchar_t wc) -{ - const wchar_t *retval = NULL; - - do - if (*wcs == wc) - retval = wcs; - while (*wcs++ != L'\0'); - - return (wchar_t *) retval; -} diff --git a/wcsmbs/wcsrtombs.c b/wcsmbs/wcsrtombs.c deleted file mode 100644 index 9b6efa7751..0000000000 --- a/wcsmbs/wcsrtombs.c +++ /dev/null @@ -1,145 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <assert.h> -#include <dlfcn.h> -#include <errno.h> -#include <stdlib.h> -#include <gconv.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - -#ifndef EILSEQ -# define EILSEQ EINVAL -#endif - - -/* This is the private state used if PS is NULL. */ -static mbstate_t state; - -size_t -__wcsrtombs (char *dst, const wchar_t **src, size_t len, mbstate_t *ps) -{ - struct __gconv_step_data data; - int status; - size_t result; - struct __gconv_step *tomb; - const struct gconv_fcts *fcts; - - /* Tell where we want the result. */ - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = ps ?: &state; - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Get the structure with the function pointers. */ - tomb = fcts->tomb; - __gconv_fct fct = tomb->__fct; -#ifdef PTR_DEMANGLE - if (tomb->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - - /* We have to handle DST == NULL special. */ - if (dst == NULL) - { - mbstate_t temp_state; - unsigned char buf[256]; /* Just an arbitrary value. */ - const wchar_t *srcend = *src + __wcslen (*src) + 1; - const unsigned char *inbuf = (const unsigned char *) *src; - size_t dummy; - - temp_state = *data.__statep; - data.__statep = &temp_state; - - result = 0; - data.__outbufend = buf + sizeof (buf); - - do - { - data.__outbuf = buf; - - status = DL_CALL_FCT (fct, (tomb, &data, &inbuf, - (const unsigned char *) srcend, NULL, - &dummy, 0, 1)); - - /* Count the number of bytes. */ - result += data.__outbuf - buf; - } - while (status == __GCONV_FULL_OUTPUT); - - if (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - { - /* There better should be a NUL byte at the end. */ - assert (data.__outbuf[-1] == '\0'); - /* Don't count the NUL character in. */ - --result; - } - } - else - { - /* This code is based on the safe assumption that all internal - multi-byte encodings use the NUL byte only to mark the end - of the string. */ - const wchar_t *srcend = *src + __wcsnlen (*src, len) + 1; - size_t dummy; - - data.__outbuf = (unsigned char *) dst; - data.__outbufend = (unsigned char *) dst + len; - - status = DL_CALL_FCT (fct, (tomb, &data, (const unsigned char **) src, - (const unsigned char *) srcend, NULL, - &dummy, 0, 1)); - - /* Count the number of bytes. */ - result = data.__outbuf - (unsigned char *) dst; - - /* We have to determine whether the last character converted - is the NUL character. */ - if ((status == __GCONV_OK || status == __GCONV_EMPTY_INPUT) - && data.__outbuf[-1] == '\0') - { - assert (data.__outbuf != (unsigned char *) dst); - assert (__mbsinit (data.__statep)); - *src = NULL; - --result; - } - } - - /* There must not be any problems with the conversion but illegal input - characters. */ - assert (status == __GCONV_OK || status == __GCONV_EMPTY_INPUT - || status == __GCONV_ILLEGAL_INPUT - || status == __GCONV_INCOMPLETE_INPUT - || status == __GCONV_FULL_OUTPUT); - - if (status != __GCONV_OK && status != __GCONV_FULL_OUTPUT - && status != __GCONV_EMPTY_INPUT) - { - result = (size_t) -1; - __set_errno (EILSEQ); - } - - return result; -} -weak_alias (__wcsrtombs, wcsrtombs) diff --git a/wcsmbs/wcsspn.c b/wcsmbs/wcsspn.c deleted file mode 100644 index 8d911bb23a..0000000000 --- a/wcsmbs/wcsspn.c +++ /dev/null @@ -1,47 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WCSSPN -# define wcsspn WCSSPN -#endif - -/* Return the length of the maximum initial segment - of WCS which contains only wide-characters in ACCEPT. */ -size_t -wcsspn (const wchar_t *wcs, const wchar_t *accept) -{ - const wchar_t *p; - const wchar_t *a; - size_t count = 0; - - for (p = wcs; *p != L'\0'; ++p) - { - for (a = accept; *a != L'\0'; ++a) - if (*p == *a) - break; - if (*a == L'\0') - return count; - else - ++count; - } - - return count; -} -libc_hidden_def (wcsspn) diff --git a/wcsmbs/wcsstr.c b/wcsmbs/wcsstr.c deleted file mode 100644 index 0a9fc4cc67..0000000000 --- a/wcsmbs/wcsstr.c +++ /dev/null @@ -1,97 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -/* - * The original strstr() file contains the following comment: - * - * My personal strstr() implementation that beats most other algorithms. - * Until someone tells me otherwise, I assume that this is the - * fastest implementation of strstr() in C. - * I deliberately chose not to comment it. You should have at least - * as much fun trying to understand it, as I had to write it :-). - * - * Stephen R. van den Berg, berg@pool.informatik.rwth-aachen.de */ - -#include <wchar.h> - -wchar_t * -wcsstr (const wchar_t *haystack, const wchar_t *needle) -{ - wchar_t b, c; - - if ((b = *needle) != L'\0') - { - haystack--; /* possible ANSI violation */ - do - if ((c = *++haystack) == L'\0') - goto ret0; - while (c != b); - - if (!(c = *++needle)) - goto foundneedle; - ++needle; - goto jin; - - for (;;) - { - wchar_t a; - const wchar_t *rhaystack, *rneedle; - - do - { - if (!(a = *++haystack)) - goto ret0; - if (a == b) - break; - if ((a = *++haystack) == L'\0') - goto ret0; -shloop: ; - } - while (a != b); - -jin: if (!(a = *++haystack)) - goto ret0; - - if (a != c) - goto shloop; - - if (*(rhaystack = haystack-- + 1) == (a = *(rneedle = needle))) - do - { - if (a == L'\0') - goto foundneedle; - if (*++rhaystack != (a = *++needle)) - break; - if (a == L'\0') - goto foundneedle; - } - while (*++rhaystack == (a = *++needle)); - - needle = rneedle; /* took the register-poor approach */ - - if (a == L'\0') - break; - } - } -foundneedle: - return (wchar_t*) haystack; -ret0: - return NULL; -} -/* This alias is for backward compatibility with drafts of the ISO C - standard. Unfortunately the Unix(TM) standard requires this name. */ -weak_alias (wcsstr, wcswcs) diff --git a/wcsmbs/wcstod.c b/wcsmbs/wcstod.c deleted file mode 100644 index b7db11b935..0000000000 --- a/wcsmbs/wcstod.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <xlocale.h> - - -#define USE_WIDE_CHAR 1 - -extern double ____wcstod_l_internal (const wchar_t *, wchar_t **, int, - __locale_t); - -#include <stdlib/strtod.c> diff --git a/wcsmbs/wcstod_l.c b/wcsmbs/wcstod_l.c deleted file mode 100644 index 5f7498c4f8..0000000000 --- a/wcsmbs/wcstod_l.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <xlocale.h> - - -extern double ____wcstod_l_internal (const wchar_t *, wchar_t **, int, - __locale_t); - -#define USE_WIDE_CHAR 1 - -#include <stdlib/strtod_l.c> diff --git a/wcsmbs/wcstod_nan.c b/wcsmbs/wcstod_nan.c deleted file mode 100644 index 26c15f76de..0000000000 --- a/wcsmbs/wcstod_nan.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Convert string for NaN payload to corresponding NaN. Wide strings, double. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include "../stdlib/strtod_nan_wide.h" -#include "../stdlib/strtod_nan_double.h" - -#define STRTOD_NAN __wcstod_nan -#include "../stdlib/strtod_nan_main.c" diff --git a/wcsmbs/wcstof.c b/wcsmbs/wcstof.c deleted file mode 100644 index 29cdec3a98..0000000000 --- a/wcsmbs/wcstof.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <xlocale.h> - -#define USE_WIDE_CHAR 1 - -extern float ____wcstof_l_internal (const wchar_t *, wchar_t **, int, - __locale_t); - -#include <stdlib/strtof.c> diff --git a/wcsmbs/wcstof_l.c b/wcsmbs/wcstof_l.c deleted file mode 100644 index 23d402d7ea..0000000000 --- a/wcsmbs/wcstof_l.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <xlocale.h> - - -#define USE_WIDE_CHAR 1 - -extern float ____wcstof_l_internal (const wchar_t *, wchar_t **, int, - __locale_t); - -#include <stdlib/strtof_l.c> diff --git a/wcsmbs/wcstof_nan.c b/wcsmbs/wcstof_nan.c deleted file mode 100644 index 98b41d6bf0..0000000000 --- a/wcsmbs/wcstof_nan.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Convert string for NaN payload to corresponding NaN. Wide strings, float. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include "../stdlib/strtod_nan_wide.h" -#include "../stdlib/strtod_nan_float.h" - -#define STRTOD_NAN __wcstof_nan -#include "../stdlib/strtod_nan_main.c" diff --git a/wcsmbs/wcstok.c b/wcsmbs/wcstok.c deleted file mode 100644 index 39bacf1497..0000000000 --- a/wcsmbs/wcstok.c +++ /dev/null @@ -1,62 +0,0 @@ -/* Copyright (C) 1995-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <errno.h> - - -/* Parse WCS into tokens separated by characters in DELIM. If WCS is - NULL, the last string wcstok() was called with is used. */ -wchar_t * -wcstok (wchar_t *wcs, const wchar_t *delim, wchar_t **save_ptr) -{ - wchar_t *result; - - if (wcs == NULL) - { - if (*save_ptr == NULL) - { - __set_errno (EINVAL); - return NULL; - } - else - wcs = *save_ptr; - } - - /* Scan leading delimiters. */ - wcs += wcsspn (wcs, delim); - if (*wcs == L'\0') - { - *save_ptr = NULL; - return NULL; - } - - /* Find the end of the token. */ - result = wcs; - wcs = wcspbrk (result, delim); - if (wcs == NULL) - /* This token finishes the string. */ - *save_ptr = NULL; - else - { - /* Terminate the token and make *SAVE_PTR point past it. */ - *wcs = L'\0'; - *save_ptr = wcs + 1; - } - return result; -} diff --git a/wcsmbs/wcstol.c b/wcsmbs/wcstol.c deleted file mode 100644 index ffa8924207..0000000000 --- a/wcsmbs/wcstol.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Function to parse a `long int' from text. - Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define USE_WIDE_CHAR 1 - -#include <stdlib/strtol.c> diff --git a/wcsmbs/wcstol_l.c b/wcsmbs/wcstol_l.c deleted file mode 100644 index 744f8f85b7..0000000000 --- a/wcsmbs/wcstol_l.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define __need_wchar_t -#include <stddef.h> -#include <locale.h> - -#define USE_WIDE_CHAR 1 - -extern long int ____wcstol_l_internal (const wchar_t *, wchar_t **, int, int, - __locale_t); - -#include <stdlib/strtol_l.c> diff --git a/wcsmbs/wcstold.c b/wcsmbs/wcstold.c deleted file mode 100644 index e5c1cc3071..0000000000 --- a/wcsmbs/wcstold.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <xlocale.h> - -#define USE_WIDE_CHAR 1 - -extern long double ____wcstold_l_internal (const wchar_t *, wchar_t **, int, - __locale_t); - -#include <stdlib/strtold.c> diff --git a/wcsmbs/wcstold_l.c b/wcsmbs/wcstold_l.c deleted file mode 100644 index 3dd33a729a..0000000000 --- a/wcsmbs/wcstold_l.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <stddef.h> -#include <xlocale.h> - -#define USE_WIDE_CHAR 1 - -extern long double ____wcstold_l_internal (const wchar_t *, wchar_t **, int, - __locale_t); - -#include <strtold_l.c> diff --git a/wcsmbs/wcstold_nan.c b/wcsmbs/wcstold_nan.c deleted file mode 100644 index 726620b5f4..0000000000 --- a/wcsmbs/wcstold_nan.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Convert string for NaN payload to corresponding NaN. Wide strings, - long double. - Copyright (C) 2015-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <math.h> - -/* This function is unused if long double and double have the same - representation. */ -#ifndef __NO_LONG_DOUBLE_MATH -# include "../stdlib/strtod_nan_wide.h" -# include <strtod_nan_ldouble.h> - -# define STRTOD_NAN __wcstold_nan -# include "../stdlib/strtod_nan_main.c" -#endif diff --git a/wcsmbs/wcstoll.c b/wcsmbs/wcstoll.c deleted file mode 100644 index 493519b205..0000000000 --- a/wcsmbs/wcstoll.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Function to parse a `long long int' from text. - Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define QUAD 1 - -#include "wcstol.c" - -weak_alias (wcstoll, wcstoq) diff --git a/wcsmbs/wcstoll_l.c b/wcsmbs/wcstoll_l.c deleted file mode 100644 index 225153f547..0000000000 --- a/wcsmbs/wcstoll_l.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define __need_wchar_t -#include <stddef.h> -#include <locale.h> - -#define QUAD 1 - -extern long long int ____wcstoll_l_internal (const wchar_t *, wchar_t **, - int, int, __locale_t); - -#include <wcstol_l.c> diff --git a/wcsmbs/wcstoul.c b/wcsmbs/wcstoul.c deleted file mode 100644 index 708ea8f3c9..0000000000 --- a/wcsmbs/wcstoul.c +++ /dev/null @@ -1,22 +0,0 @@ -/* Function to parse an `unsigned long int' from text. - Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define UNSIGNED 1 - -#include "wcstol.c" diff --git a/wcsmbs/wcstoul_l.c b/wcsmbs/wcstoul_l.c deleted file mode 100644 index 0847284bc2..0000000000 --- a/wcsmbs/wcstoul_l.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define __need_wchar_t -#include <stddef.h> -#include <locale.h> - -#define UNSIGNED 1 - -extern unsigned long int ____wcstoul_l_internal (const wchar_t *, wchar_t **, - int, int, __locale_t); - -#include "wcstol_l.c" diff --git a/wcsmbs/wcstoull.c b/wcsmbs/wcstoull.c deleted file mode 100644 index 5d96389e7d..0000000000 --- a/wcsmbs/wcstoull.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Function to parse an `unsigned long long int' from text. - Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define QUAD 1 - -#include "wcstoul.c" - -weak_alias (wcstoull, wcstouq) diff --git a/wcsmbs/wcstoull_l.c b/wcsmbs/wcstoull_l.c deleted file mode 100644 index 532d01a250..0000000000 --- a/wcsmbs/wcstoull_l.c +++ /dev/null @@ -1,30 +0,0 @@ -/* Convert string representing a number to integer value, using given locale. - Copyright (C) 1997-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#define __need_wchar_t -#include <stddef.h> -#include <locale.h> - -#define UNSIGNED 1 - -extern unsigned long long int ____wcstoull_l_internal (const wchar_t *, - wchar_t **, int, int, - __locale_t); - -#include <wcstoll_l.c> diff --git a/wcsmbs/wcswidth.c b/wcsmbs/wcswidth.c deleted file mode 100644 index 6e4a1d9f95..0000000000 --- a/wcsmbs/wcswidth.c +++ /dev/null @@ -1,38 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include "wcwidth.h" - -/* Determine number of column positions required for first N wide - characters (or fewer if S ends before this) in S. */ -int -wcswidth (const wchar_t *s, size_t n) -{ - int result = 0; - - while (n-- > 0 && *s != L'\0') - { - int now = internal_wcwidth (*s); - if (now == -1) - return -1; - result += now; - ++s; - } - - return result; -} diff --git a/wcsmbs/wcsxfrm.c b/wcsmbs/wcsxfrm.c deleted file mode 100644 index fa14ddf706..0000000000 --- a/wcsmbs/wcsxfrm.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include "../locale/coll-lookup.h" - -#define STRING_TYPE wchar_t -#define STRXFRM wcsxfrm -#define STRXFRM_L __wcsxfrm_l - -#include "../string/strxfrm.c" diff --git a/wcsmbs/wcsxfrm_l.c b/wcsmbs/wcsxfrm_l.c deleted file mode 100644 index 5899cc64cc..0000000000 --- a/wcsmbs/wcsxfrm_l.c +++ /dev/null @@ -1,34 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include "../locale/coll-lookup.h" - -#define STRING_TYPE wchar_t -#define USTRING_TYPE wint_t -#define STRXFRM __wcsxfrm_l -#define STRLEN __wcslen -#define STPNCPY __wcpncpy -#define WEIGHT_H "../locale/weightwc.h" -#define SUFFIX WC -#define L(arg) L##arg -#define WIDE_CHAR_VERSION 1 - -#include "../string/strxfrm_l.c" - -weak_alias (__wcsxfrm_l, wcsxfrm_l) diff --git a/wcsmbs/wctob.c b/wcsmbs/wctob.c deleted file mode 100644 index 6a4fb86ac4..0000000000 --- a/wcsmbs/wctob.c +++ /dev/null @@ -1,82 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <dlfcn.h> -#include <gconv.h> -#include <stdio.h> -#include <string.h> -#include <wchar.h> -#include <wcsmbsload.h> - -#include <sysdep.h> - - -int -wctob (wint_t c) -{ - unsigned char buf[MB_LEN_MAX]; - struct __gconv_step_data data; - wchar_t inbuf[1]; - wchar_t *inptr = inbuf; - size_t dummy; - int status; - const struct gconv_fcts *fcts; - - if (c == WEOF) - return EOF; - - /* We know that only ASCII compatible encodings are used for the - locale and that the wide character encoding is ISO 10646. */ - if (c >= L'\0' && c <= L'\x7f') - return (int) c; - - /* Tell where we want the result. */ - data.__outbuf = buf; - data.__outbufend = buf + MB_LEN_MAX; - data.__invocation_counter = 0; - data.__internal_use = 1; - data.__flags = __GCONV_IS_LAST; - data.__statep = &data.__state; - - /* Make sure we start in the initial state. */ - memset (&data.__state, '\0', sizeof (mbstate_t)); - - /* Get the conversion functions. */ - fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); - - /* Create the input string. */ - inbuf[0] = c; - - const unsigned char *argptr = (const unsigned char *) inptr; - __gconv_fct fct = fcts->tomb->__fct; -#ifdef PTR_DEMANGLE - if (fcts->tomb->__shlib_handle != NULL) - PTR_DEMANGLE (fct); -#endif - status = DL_CALL_FCT (fct, - (fcts->tomb, &data, &argptr, - argptr + sizeof (inbuf[0]), NULL, &dummy, 0, 1)); - - /* The conversion failed or the output is too long. */ - if ((status != __GCONV_OK && status != __GCONV_FULL_OUTPUT - && status != __GCONV_EMPTY_INPUT) - || data.__outbuf != (unsigned char *) (buf + 1)) - return EOF; - - return buf[0]; -} diff --git a/wcsmbs/wcwidth.c b/wcsmbs/wcwidth.c deleted file mode 100644 index d695186437..0000000000 --- a/wcsmbs/wcwidth.c +++ /dev/null @@ -1,26 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include "wcwidth.h" - -/* Determine number of column positions required for CH. */ -int -wcwidth (wchar_t ch) -{ - return internal_wcwidth (ch); -} diff --git a/wcsmbs/wcwidth.h b/wcsmbs/wcwidth.h deleted file mode 100644 index 1d2c7b084c..0000000000 --- a/wcsmbs/wcwidth.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Internal header containing implementation of wcwidth() function. - Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <wctype.h> -#include "../wctype/wchar-lookup.h" -#include "../locale/localeinfo.h" - -/* Table containing width information. */ -extern const char *__ctype32_width attribute_hidden; - -static __inline int -internal_wcwidth (wchar_t wc) -{ - unsigned char res; - - /* The tables have been prepared in such a way that - 1. wc == L'\0' yields res = 0, - 2. !iswprint (wc) implies res = '\xff'. */ - res = wcwidth_table_lookup (_NL_CURRENT (LC_CTYPE, _NL_CTYPE_WIDTH), wc); - - return res == (unsigned char) '\xff' ? -1 : (int) res; -} diff --git a/wcsmbs/wmemchr.c b/wcsmbs/wmemchr.c deleted file mode 100644 index 2a80f91d52..0000000000 --- a/wcsmbs/wmemchr.c +++ /dev/null @@ -1,65 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WMEMCHR -# define __wmemchr WMEMCHR -#endif - -wchar_t * -__wmemchr (const wchar_t *s, wchar_t c, size_t n) -{ - /* For performance reasons unfold the loop four times. */ - while (n >= 4) - { - if (s[0] == c) - return (wchar_t *) s; - if (s[1] == c) - return (wchar_t *) &s[1]; - if (s[2] == c) - return (wchar_t *) &s[2]; - if (s[3] == c) - return (wchar_t *) &s[3]; - s += 4; - n -= 4; - } - - if (n > 0) - { - if (*s == c) - return (wchar_t *) s; - ++s; - --n; - } - if (n > 0) - { - if (*s == c) - return (wchar_t *) s; - ++s; - --n; - } - if (n > 0) - if (*s == c) - return (wchar_t *) s; - - return NULL; -} -libc_hidden_def (__wmemchr) -weak_alias (__wmemchr, wmemchr) -libc_hidden_weak (wmemchr) diff --git a/wcsmbs/wmemcmp.c b/wcsmbs/wmemcmp.c deleted file mode 100644 index ee0724cf2b..0000000000 --- a/wcsmbs/wmemcmp.c +++ /dev/null @@ -1,83 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifndef WMEMCMP -# define WMEMCMP wmemcmp -#endif - -int -WMEMCMP (const wchar_t *s1, const wchar_t *s2, size_t n) -{ - wchar_t c1; - wchar_t c2; - - while (n >= 4) - { - c1 = s1[0]; - c2 = s2[0]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - c1 = s1[1]; - c2 = s2[1]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - c1 = s1[2]; - c2 = s2[2]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - c1 = s1[3]; - c2 = s2[3]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - s1 += 4; - s2 += 4; - n -= 4; - } - - if (n > 0) - { - c1 = s1[0]; - c2 = s2[0]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - ++s1; - ++s2; - --n; - } - if (n > 0) - { - c1 = s1[0]; - c2 = s2[0]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - ++s1; - ++s2; - --n; - } - if (n > 0) - { - c1 = s1[0]; - c2 = s2[0]; - if (c1 - c2 != 0) - return c1 > c2 ? 1 : -1; - } - - return 0; -} diff --git a/wcsmbs/wmemcpy.c b/wcsmbs/wmemcpy.c deleted file mode 100644 index f44d0fdbef..0000000000 --- a/wcsmbs/wmemcpy.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <string.h> - - -wchar_t * -__wmemcpy (wchar_t *s1, const wchar_t *s2, size_t n) -{ - return (wchar_t *) memcpy ((char *) s1, (char *) s2, n * sizeof (wchar_t)); -} -weak_alias (__wmemcpy, wmemcpy) diff --git a/wcsmbs/wmemmove.c b/wcsmbs/wmemmove.c deleted file mode 100644 index 5d711ec14b..0000000000 --- a/wcsmbs/wmemmove.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu> - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <string.h> - - -wchar_t * -__wmemmove (wchar_t *s1, const wchar_t *s2, size_t n) -{ - return (wchar_t *) memmove ((char *) s1, (char *) s2, n * sizeof (wchar_t)); -} -weak_alias (__wmemmove, wmemmove) diff --git a/wcsmbs/wmempcpy.c b/wcsmbs/wmempcpy.c deleted file mode 100644 index c3b65de557..0000000000 --- a/wcsmbs/wmempcpy.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 1999-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1999. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> -#include <string.h> - - -wchar_t * -__wmempcpy (wchar_t *s1, const wchar_t *s2, size_t n) -{ - return (wchar_t *) __mempcpy ((char *) s1, (char *) s2, - n * sizeof (wchar_t)); -} -weak_alias (__wmempcpy, wmempcpy) diff --git a/wcsmbs/wmemset.c b/wcsmbs/wmemset.c deleted file mode 100644 index d79b95b47e..0000000000 --- a/wcsmbs/wmemset.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 1996-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@gnu.org>, 1996. - - The GNU C Library 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 C Library 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 the GNU C Library; if not, see - <http://www.gnu.org/licenses/>. */ - -#include <wchar.h> - -#ifdef WMEMSET -# define __wmemset WMEMSET -#endif - -wchar_t * -__wmemset (wchar_t *s, wchar_t c, size_t n) -{ - wchar_t *wp = s; - - while (n >= 4) - { - wp[0] = c; - wp[1] = c; - wp[2] = c; - wp[3] = c; - wp += 4; - n -= 4; - } - - if (n > 0) - { - wp[0] = c; - - if (n > 1) - { - wp[1] = c; - - if (n > 2) - wp[2] = c; - } - } - - return s; -} -libc_hidden_def (__wmemset) -weak_alias (__wmemset, wmemset) -libc_hidden_weak (wmemset) |