1/* Check that basic freopen functionality works.  */
2
3#include <stdio.h>
4#include <stdlib.h>
5#include <string.h>
6
7int
8main (void)
9{
10  FILE *old_stderr;
11  FILE *f;
12  const char fname[] = "sk1test.dat";
13  const char tsttxt[]
14    = "A random line of text, used to test correct freopen etc.\n";
15  char buf[sizeof tsttxt] = "";
16
17  /* Like the freopen call in flex.  */
18  old_stderr = freopen (fname, "w+", stderr);
19  if (old_stderr == NULL
20      || fwrite (tsttxt, 1, strlen (tsttxt), stderr) != strlen (tsttxt)
21      || fclose (stderr) != 0)
22    {
23      printf ("fail\n");
24      exit (1);
25    }
26
27  /* Using "rb" to make this test similar to the use in genconf.c in
28     GhostScript.  */
29  f = fopen (fname, "rb");
30  if (f == NULL
31      || fseek (f, 0L, SEEK_END) != 0
32      || ftell (f) != strlen (tsttxt))
33    {
34      printf ("fail\n");
35      exit (1);
36    }
37
38  rewind (f);
39  if (fread (buf, 1, strlen (tsttxt), f) != strlen (tsttxt)
40      || strcmp (buf, tsttxt) != 0
41      || fclose (f) != 0)
42    {
43      printf ("fail\n");
44      exit (1);
45    }
46
47  printf ("pass\n");
48  exit (0);
49}
50