diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-06-23 06:22:36 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-06-23 06:22:36 +0000 |
commit | e8595e842f199619bc8fb5f97d45e20f580aa987 (patch) | |
tree | bffeb32ab9dba1c464d59b3325fb4852455454aa /libio/tst_putwc.c | |
parent | e7d3a52aa5c98420b545cf0438f760be95219f49 (diff) | |
download | glibc-e8595e842f199619bc8fb5f97d45e20f580aa987.tar.gz glibc-e8595e842f199619bc8fb5f97d45e20f580aa987.tar.xz glibc-e8595e842f199619bc8fb5f97d45e20f580aa987.zip |
Update.
* libio/Makefile (tests): Add tst-getwc and tst_putwc. (CFLAGS-tst_putwc.c): New definition. * libio/tst_getwc.c: New file. * libio/tst_getwc.input: New file. * libio/tst_putwc.c: New file.
Diffstat (limited to 'libio/tst_putwc.c')
-rw-r--r-- | libio/tst_putwc.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/libio/tst_putwc.c b/libio/tst_putwc.c new file mode 100644 index 0000000000..142b3bcafa --- /dev/null +++ b/libio/tst_putwc.c @@ -0,0 +1,108 @@ +/* Simple test of putwc in the C locale. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <errno.h> +#include <error.h> +#include <stdio.h> +#include <stdlib.h> +#include <wchar.h> + +static const char outname[] = OBJPFX "tst_putwc.temp"; + + +#define TEST_FUNCTION do_test () +int +do_test (void) +{ + const wchar_t str[] = L"This is a test of putwc\n"; + wchar_t buf[100]; + size_t n = 0; + FILE *fp; + int res = 0; + + fp = fopen (outname, "w+"); + if (fp == NULL) + error (EXIT_FAILURE, errno, "cannot open temporary file"); + + for (n = 0; str[n] != L'\0'; ++n) + putwc (str[n], fp); + + /* First try reading after rewinding. */ + rewind (fp); + + wmemset (buf, L'\0', sizeof (buf) / sizeof (buf[0])); + n = 0; + while (! feof (fp) && n < sizeof (buf) - 1) + { + buf[n] = getwc (fp); + if (buf[n] == WEOF) + break; + ++n; + } + buf[n] = L'\0'; + + if (wcscmp (buf, L"This is a test of putwc\n") != 0) + { + puts ("first comparison failed"); + res = 1; + } + + /* Now close the file, open it again, and read again. */ + if (fclose (fp) != 0) + { + printf ("failure during fclose(): %m"); + res = 1; + } + + fp = fopen (outname, "r"); + if (fp == NULL) + error (EXIT_FAILURE, errno, "cannot reopen file"); + + /* We can remove the file now. */ + remove (outname); + + wmemset (buf, L'\0', sizeof (buf) / sizeof (buf[0])); + n = 0; + while (! feof (fp) && n < sizeof (buf) - 1) + { + buf[n] = getwc (fp); + if (buf[n] == WEOF) + break; + ++n; + } + buf[n] = L'\0'; + + if (wcscmp (buf, L"This is a test of putwc\n") != 0) + { + puts ("second comparison failed"); + res = 1; + } + + if (fclose (fp) != 0) + { + puts ("failure during fclose()"); + res = 1; + } + + return res; +} + + +#include "../test-skeleton.c" |