/* 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); } |