| lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 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" |