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