From db2d05f93ce7a790a1f50ed5b082539b566801e2 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 3 Aug 2001 22:09:42 +0000 Subject: Update. * iconvdata/8bit-gap.c: Correctly use __builtin_expect. * iconvdata/ansi_x3.110.c: Likewise. * iconvdata/big5.c: Likewise. * iconvdata/euc-cn.c: Likewise. * iconvdata/euc-jp.c: Likewise. * iconvdata/euc-kr.c: Likewise. * iconvdata/gb18030.c: Likewise. * iconvdata/gbbig5.c: Likewise. * iconvdata/gbgbk.c: Likewise. * iconvdata/gbk.c: Likewise. * iconvdata/ibm930.c: Likewise. * iconvdata/ibm932.c: Likewise. * iconvdata/ibm933.c: Likewise. * iconvdata/ibm935.c: Likewise. * iconvdata/ibm939.c: Likewise. * iconvdata/ibm943.c: Likewise. * iconvdata/iso-2022-cn.c: Likewise. * iconvdata/iso-2022-kr.c: Likewise. * iconvdata/iso646.c: Likewise. * iconvdata/iso8859-1.c: Likewise. * iconvdata/iso_6937-2.c: Likewise. * iconvdata/iso_6937.c: Likewise. * iconvdata/johab.c: Likewise. * iconvdata/sjis.c: Likewise. * iconvdata/t.61.c: Likewise. * iconvdata/uhc.c: Likewise. * iconvdata/unicode.c: Likewise. * iconvdata/utf-16.c: Likewise. * iconv/gconv_simple.c: Likewise. Convert assert() in real error handling. --- localedata/Makefile | 4 ++- localedata/tst-mbswcs6.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 localedata/tst-mbswcs6.c (limited to 'localedata') diff --git a/localedata/Makefile b/localedata/Makefile index d49a8280e0..8866b693e4 100644 --- a/localedata/Makefile +++ b/localedata/Makefile @@ -91,7 +91,7 @@ locale_test_suite := tst_iswalnum tst_iswalpha tst_iswcntrl \ tst_wctype tst_wcwidth tests = $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \ - tst-leaks + tst-leaks tst-mbswcs6 ifeq (yes,$(build-shared)) ifneq (no,$(PERL)) tests: $(objpfx)mtrace-tst-leaks @@ -189,6 +189,7 @@ $(objpfx)tst-langinfo.out: tst-langinfo.sh $(objpfx)tst-langinfo \ $(addprefix $(objpfx),$(CTYPE_FILES)) $(SHELL) -e $< $(common-objpfx) '$(built-program-cmd)' $(objpfx)tst-digits.out: $(objpfx)tst-locale.out +$(objpfx)tst-mbswcs6.out: $(addprefix $(objpfx),$(CTYPE_FILES)) endif include SUPPORTED @@ -269,6 +270,7 @@ tst_wctrans-ENV = $(TEST_MBWC_ENV) tst_wctype-ENV = $(TEST_MBWC_ENV) tst_wcwidth-ENV = $(TEST_MBWC_ENV) tst-digits-ENV = $(TEST_MBWC_ENV) +tst-mbswcs6-ENV = $(TEST_MBWC_ENV) tst-setlocale-ENV = LOCPATH=$(common-objpfx)localedata LC_ALL=ja_JP.EUC-JP diff --git a/localedata/tst-mbswcs6.c b/localedata/tst-mbswcs6.c new file mode 100644 index 0000000000..a4ba7fe45e --- /dev/null +++ b/localedata/tst-mbswcs6.c @@ -0,0 +1,74 @@ +/* Test for invalid input to wcrtomb. + Copyright (C) 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2001. + + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include +#include +#include + + +static int +do_test (const char *loc) +{ + char buf[100]; + size_t n; + mbstate_t state; + const char *nloc; + int res; + + nloc = setlocale (LC_ALL, loc); + if (nloc == NULL) + { + printf ("could not set locale \"%s\"\n", loc); + return 1; + } + printf ("new locale: %s\n", nloc); + + memset (&state, '\0', sizeof (state)); + errno = 0; + n = wcrtomb (buf, (wchar_t) -15l, &state); + + printf ("n = %zd, errno = %d (%s)\n", n, errno, strerror (errno)); + + res = n != (size_t) -1 || errno != EILSEQ; + if (res) + puts ("*** FAIL"); + putchar ('\n'); + + return res; +} + + +int +main (void) +{ + int res; + + res = do_test ("C"); + res |= do_test ("de_DE.ISO-8859-1"); + res |= do_test ("de_DE.UTF-8"); + res |= do_test ("en_US.ANSI_X3.4-1968"); + res |= do_test ("ja_JP.EUC-JP"); + res |= do_test ("hr_HR.ISO-8859-2"); + //res |= do_test ("ru_RU.KOI8-R"); + + return res; +} -- cgit 1.4.1