]> git.ipfire.org Git - thirdparty/glibc.git/blob - stdio-common/bug7.c
vfprintf: Move jump table definition and the macros out of function
[thirdparty/glibc.git] / stdio-common / bug7.c
1 /* Regression test for fseek and freopen bugs. */
2
3 #include <stdio.h>
4
5 int
6 main (int argc, char *argv[])
7 {
8 int lose = 0;
9 char filename[L_tmpnam];
10 FILE *fp;
11
12 if (tmpnam (filename) == NULL)
13 {
14 printf ("tmpnam failed\n");
15 lose = 1;
16 }
17 else
18 {
19 fp = fopen (filename, "w+");
20 fprintf (fp, "Hello world!\n");
21 fflush (fp);
22 fseek (fp, 5L, SEEK_SET);
23 if (fseek (fp, -1L, SEEK_CUR) < 0)
24 {
25 printf ("seek failed\n");
26 lose = 1;
27 }
28 fclose (fp);
29 remove (filename);
30 }
31
32 {
33 FILE *file1;
34 FILE *file2;
35 char filename1[L_tmpnam];
36 char filename2[L_tmpnam];
37 int ch;
38
39 if (tmpnam (filename1) == NULL || tmpnam (filename2) == NULL)
40 {
41 printf ("tmpnam failed\n");
42 lose = 1;
43 }
44 else
45 {
46
47 file1 = fopen (filename1, "w");
48 fclose (file1);
49
50 file2 = fopen (filename2, "w");
51 fputc ('x', file2);
52 fclose (file2);
53
54 file1 = fopen (filename1, "r");
55 file2 = freopen (filename2, "r", file1);
56 if ((ch = fgetc (file2)) != 'x')
57 {
58 printf ("wrong character in reopened file, value = %d\n", ch);
59 lose = 1;
60 }
61 fclose (file2);
62 remove (filename1);
63 remove (filename2);
64 }
65 }
66
67 puts (lose ? "Test FAILED!" : "Test succeeded.");
68 return lose;
69 }