/* Regression test for fseek and freopen bugs. */ #include int main () { int lose = 0; char filename[] = "/tmp/foo"; FILE *fp; fp = fopen (filename, "w+"); fprintf (fp, "Hello world!\n"); fflush (fp); fseek (fp, 5L, SEEK_SET); if (fseek (fp, -1L, SEEK_CUR) < 0) { printf ("seek failed\n"); lose = 1; } fclose (fp); remove (filename); { FILE *file1; FILE *file2; char filename1[] = "/tmp/foo"; char filename2[] = "/tmp/bar"; int ch; file1 = fopen (filename1, "w"); fclose (file1); file2 = fopen (filename2, "w"); fputc ('x', file2); fclose (file2); file1 = fopen (filename1, "r"); file2 = freopen (filename2, "r", file1); if ((ch = fgetc (file2)) != 'x') { printf ("wrong character in reopened file, value = %d\n", ch); lose = 1; } fclose (file1); fclose (file2); remove (filename1); remove (filename2); } puts (lose ? "Test FAILED!" : "Test succeeded."); return lose; }