From e8595e842f199619bc8fb5f97d45e20f580aa987 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 23 Jun 2000 06:22:36 +0000 Subject: [PATCH] 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. --- ChangeLog | 6 +++ libio/Makefile | 4 +- libio/tst_getwc.c | 42 ++++++++++++++++ libio/tst_getwc.input | 1 + libio/tst_putwc.c | 108 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 libio/tst_getwc.c create mode 100644 libio/tst_getwc.input create mode 100644 libio/tst_putwc.c diff --git a/ChangeLog b/ChangeLog index 5db5222ca0..29c5ee8ae2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2000-06-22 Ulrich Drepper + * 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 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 , 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 +#include + + +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 , 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 +#include +#include +#include +#include + +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"