diff options
Diffstat (limited to 'wcsmbs/tst-mbsrtowcs.c')
-rw-r--r-- | wcsmbs/tst-mbsrtowcs.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/wcsmbs/tst-mbsrtowcs.c b/wcsmbs/tst-mbsrtowcs.c new file mode 100644 index 0000000000..eb6c8e21b1 --- /dev/null +++ b/wcsmbs/tst-mbsrtowcs.c @@ -0,0 +1,65 @@ +/* Test NUL handling of mbsrtowcs. + Copyright (C) 2004 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include <stdio.h> +#include <string.h> +#include <wchar.h> + +int +main (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 = 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; +} |