diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | libio/Makefile | 7 | ||||
-rw-r--r-- | libio/test-freopen.c | 57 | ||||
-rwxr-xr-x | libio/test-freopen.sh | 31 |
4 files changed, 99 insertions, 0 deletions
@@ -5,6 +5,10 @@ * libio/freopen64.c (freopen64): Likewise. Patch by Shinya Hanataka <hanataka@abyss.rim.or.jp>. + * libio/Makefile: Add rules to build and run test-freopen. + * libio/test-freopen.c: New file. + * libio/test-freopen.sh: New file. + 2000-11-15 H.J. Lu <hjl@gnu.org> * sysdeps/generic/ldsodefs.h (DL_DT_INIT_ADDRESS): Defined if diff --git a/libio/Makefile b/libio/Makefile index 4bbdc31..c8e0476 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -49,6 +49,8 @@ routines := \ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \ tst_wprintf2 tst-widetext test-fmemopen +test-srcs = test-freopen +distribute = test-freopen.sh all: # Make this the default target; it will be defined in Rules. @@ -95,3 +97,8 @@ shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \ distribute := iolibio.h libioP.h strfile.h Banner include ../Rules + +tests: $(objpfx)test-freopen.out + +$(objpfx)test-freopen.out: test-freopen.sh $(objpfx)test-freopen + $(SHELL) -e $< $(common-objpfx) $(common-objpfx)libio/ diff --git a/libio/test-freopen.c b/libio/test-freopen.c new file mode 100644 index 0000000..45da1bd --- /dev/null +++ b/libio/test-freopen.c @@ -0,0 +1,57 @@ +/* Test for freopen implementation. + Copyright (C) 2000 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + 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 <mcheck.h> +#include <stdio.h> +#include <stdlib.h> +#include <wchar.h> + + +int +main (int argc, char *argv[]) +{ + FILE *fp; + + mtrace (); + + if (argc < 2) + exit (1); + + fp = fopen (argv[1], "w"); + if (fp == NULL) + { + puts ("fopen failed: %m"); + exit (1); + } + + fputs ("Hello world (mb)\n", fp); + + fp = freopen (argv[1], "a+", fp); + if (fp == NULL) + { + puts ("freopen failed: %m"); + exit (1); + } + + fputws (L"Hello world (wc)\n", fp); + + fclose (fp); + + return 0; +} diff --git a/libio/test-freopen.sh b/libio/test-freopen.sh new file mode 100755 index 0000000..86ce0c5 --- /dev/null +++ b/libio/test-freopen.sh @@ -0,0 +1,31 @@ +#! /bin/sh +# Test of freopen. +# Copyright (C) 2000 Free Software Foundation, Inc. +# This file is part of the GNU C Library. +# +# 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. + +common_objpfx=$1 +objpfx=$2 + +${common_objpfx}elf/ld.so --library-path $common_objpfx \ +${objpfx}test-freopen ${objpfx}test-freopen.out && +cmp ${objpfx}test-freopen.out - <<"EOF" +Hello world (mb) +Hello world (wc) +EOF + +exit $? |