/* Check that basic freopen functionality works. */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main (void) { FILE *old_stderr; FILE *f; const char fname[] = "sk1test.dat"; const char tsttxt[] = "A random line of text, used to test correct freopen etc.\n"; char buf[sizeof tsttxt] = ""; /* 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); } /* Using "rb" to make this test similar to the use in genconf.c in GhostScript. */ f = fopen (fname, "rb"); if (f == NULL || fseek (f, 0L, SEEK_END) != 0 || ftell (f) != strlen (tsttxt)) { printf ("fail\n"); exit (1); } rewind (f); if (fread (buf, 1, strlen (tsttxt), f) != strlen (tsttxt) || strcmp (buf, tsttxt) != 0 || fclose (f) != 0) { printf ("fail\n"); exit (1); } printf ("pass\n"); exit (0); } |