59 lines
1.4 KiB
C
59 lines
1.4 KiB
C
|
#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"
|