| /* Tests that stdin can be redirected from a normal file. */ |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| |
| int |
| main (void) |
| { |
| const char* fname = "freopen.dat"; |
| const char tsttxt[] |
| = "A random line of text, used to test correct freopen etc.\n"; |
| FILE* instream; |
| FILE *old_stderr; |
| char c1; |
| |
| /* Like the freopen call in flex. */ |
| old_stderr = freopen (fname, "w+", stderr); |
| if (old_stderr == NULL |
| || fwrite (tsttxt, 1, strlen (tsttxt), stderr) != strlen (tsttxt) |
| || fclose (stderr) != 0) |
| { |
| printf ("fail\n"); |
| exit (1); |
| } |
| |
| instream = freopen(fname, "r", stdin); |
| if (instream == NULL) { |
| printf("fail\n"); |
| exit(1); |
| } |
| |
| c1 = getc(instream); |
| if (c1 != 'A') { |
| printf("fail\n"); |
| exit(1); |
| } |
| |
| printf ("pass\n"); |
| exit(0); |
| } |