Test for results of __freading and __fwriting immediately after fopen.
[kopensolaris-gnu/glibc.git] / libio / tst-ext2.c
1 #include <stdio.h>
2 #include <stdio_ext.h>
3
4
5 static char *fname;
6
7 #define PREPARE(argc, argv) \
8   do {                                                                  \
9     int fd = create_temp_file ("tst-ext2", &fname);                     \
10     if (fd == -1)                                                       \
11       {                                                                 \
12         puts ("cannot create temporary file");                          \
13         exit (1);                                                       \
14       }                                                                 \
15     close (fd);                                                         \
16   } while (0)
17
18
19 static int
20 do_test (void)
21 {
22   int res = 0;
23
24   FILE *fp;
25
26   fp = fopen (fname, "w");
27   printf ("Initial state for write-only stream: %d %d\n",
28           __freading (fp) != 0, __fwriting (fp) != 0);
29   res |= ((__freading (fp) != 0) != 0
30           || (__fwriting (fp) != 0) != 1);
31   fclose (fp);
32
33   fp = fopen (fname, "r");
34   printf ("Initial state for read-only stream:  %d %d\n",
35           __freading (fp) != 0, __fwriting (fp) != 0);
36   res |= ((__freading (fp) != 0) != 1
37           || (__fwriting (fp) != 0) != 0);
38   fclose (fp);
39
40   fp = fopen (fname, "r+");
41   printf ("Initial state for read-write stream: %d %d\n",
42           __freading (fp) != 0, __fwriting (fp) != 0);
43   res |= ((__freading (fp) != 0) != 0
44           || (__fwriting (fp) != 0) != 0);
45   fclose (fp);
46
47   fp = fopen (fname, "w+");
48   printf ("Initial state for read-write stream: %d %d\n",
49           __freading (fp) != 0, __fwriting (fp) != 0);
50   res |= ((__freading (fp) != 0) != 0
51           || (__fwriting (fp) != 0) != 0);
52   fclose (fp);
53
54   return res;
55 }
56
57 #define TEST_FUNCTION do_test ()
58 #include "../test-skeleton.c"