diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | libio/Makefile | 4 | ||||
-rw-r--r-- | libio/tst_getwc.c | 42 | ||||
-rw-r--r-- | libio/tst_getwc.input | 1 | ||||
-rw-r--r-- | libio/tst_putwc.c | 108 |
5 files changed, 160 insertions, 1 deletions
@@ -1,5 +1,11 @@ 2000-06-22 Ulrich Drepper <drepper@redhat.com> + * 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. + * include/string.h: Add prototype for __strdup. 2000-06-22 Greg McGary <greg@mcgary.org> diff --git a/libio/Makefile b/libio/Makefile index a37445213e..e636c19c82 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -43,7 +43,7 @@ routines := \ \ libc_fatal -tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf +tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc all: # Make this the default target; it will be defined in Rules. @@ -63,6 +63,8 @@ routines += clearerr_u feof_u ferror_u fputc_u getc_u getchar_u \ CPPFLAGS += -D_IO_MTSAFE_IO endif +CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\" + aux := fileops genops stdfiles stdio strops ifeq ($(versioning),yes) diff --git a/libio/tst_getwc.c b/libio/tst_getwc.c new file mode 100644 index 0000000000..d944afd2b9 --- /dev/null +++ b/libio/tst_getwc.c @@ -0,0 +1,42 @@ +/* Simple test of getwc 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 <stdio.h> +#include <wchar.h> + + +int +main (void) +{ + wchar_t buf[100]; + size_t n = 0; + + wmemset (buf, L'\0', sizeof (buf) / sizeof (buf[0])); + while (! feof (stdin) && n < sizeof (buf) - 1) + { + buf[n] = getwc (stdin); + if (buf[n] == WEOF) + break; + ++n; + } + buf[n] = L'\0'; + + return wcscmp (buf, L"This is a test of getwc\n") != 0; +} diff --git a/libio/tst_getwc.input b/libio/tst_getwc.input new file mode 100644 index 0000000000..9238d6bb97 --- /dev/null +++ b/libio/tst_getwc.input @@ -0,0 +1 @@ +This is a test of getwc 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" |