* libio/Makefile (tests): Add tst-ext2.

* libio/tst-ext2.c: New file.
This commit is contained in:
Ulrich Drepper 2007-10-13 07:33:09 +00:00
parent ed36f224c3
commit 7e39d8025d
3 changed files with 62 additions and 2 deletions

View File

@ -4,6 +4,8 @@
* libio/__freading.c (__freading): Don't return true for
write-only streams. For read/write streams, check whether we
performed a read operation already.
* libio/Makefile (tests): Add tst-ext2.
* libio/tst-ext2.c: New file.
2007-10-12 Ulrich Drepper <drepper@redhat.com>

View File

@ -1,4 +1,4 @@
# Copyright (C) 1995-2002,2003,2004,2006 Free Software Foundation, Inc.
# Copyright (C) 1995-2002,2003,2004,2006,2007 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
@ -48,7 +48,7 @@ routines := \
libc_fatal fmemopen
tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \
tst_wprintf2 tst-widetext test-fmemopen tst-ext tst-fopenloc \
tst_wprintf2 tst-widetext test-fmemopen tst-ext tst-ext2 tst-fopenloc \
tst-fgetws tst-ungetwc1 tst-ungetwc2 tst-swscanf tst-sscanf \
tst-mmap-setvbuf bug-ungetwc1 bug-ungetwc2 tst-atime tst-eof \
tst-freopen bug-rewind bug-rewind2 bug-ungetc bug-fseek \

58
libio/tst-ext2.c Normal file
View File

@ -0,0 +1,58 @@
#include <stdio.h>
#include <stdio_ext.h>
static char *fname;
#define PREPARE(argc, argv) \
do { \
int fd = create_temp_file ("tst-ext2", &fname); \
if (fd == -1) \
{ \
puts ("cannot create temporary file"); \
exit (1); \
} \
close (fd); \
} while (0)
static int
do_test (void)
{
int res = 0;
FILE *fp;
fp = fopen (fname, "w");
printf ("Initial state for write-only stream: %d %d\n",
__freading (fp) != 0, __fwriting (fp) != 0);
res |= ((__freading (fp) != 0) != 0
|| (__fwriting (fp) != 0) != 1);
fclose (fp);
fp = fopen (fname, "r");
printf ("Initial state for read-only stream: %d %d\n",
__freading (fp) != 0, __fwriting (fp) != 0);
res |= ((__freading (fp) != 0) != 1
|| (__fwriting (fp) != 0) != 0);
fclose (fp);
fp = fopen (fname, "r+");
printf ("Initial state for read-write stream: %d %d\n",
__freading (fp) != 0, __fwriting (fp) != 0);
res |= ((__freading (fp) != 0) != 0
|| (__fwriting (fp) != 0) != 0);
fclose (fp);
fp = fopen (fname, "w+");
printf ("Initial state for read-write stream: %d %d\n",
__freading (fp) != 0, __fwriting (fp) != 0);
res |= ((__freading (fp) != 0) != 0
|| (__fwriting (fp) != 0) != 0);
fclose (fp);
return res;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"