]>
Commit | Line | Data |
---|---|---|
28f540f4 RM |
1 | /* If stdio is working correctly, after this is run infile and outfile |
2 | will have the same contents. If the bug (found in GNU C library 0.3) | |
3 | exhibits itself, outfile will be missing the 2nd through 1023rd | |
4 | characters. */ | |
5 | ||
28f540f4 RM |
6 | #include <stdio.h> |
7 | #include <stdlib.h> | |
8 | #include <unistd.h> | |
9 | ||
10 | static char buf[8192]; | |
11 | ||
12 | int | |
ba1ffaa1 | 13 | main (void) |
28f540f4 RM |
14 | { |
15 | FILE *in; | |
16 | FILE *out; | |
e66f63fb RM |
17 | static char inname[] = "/tmp/bug5.in"; |
18 | static char outname[] = "/tmp/bug5.out"; | |
ec4b0518 | 19 | char *printbuf; |
ba1ffaa1 UD |
20 | size_t i; |
21 | int result; | |
28f540f4 RM |
22 | |
23 | /* Create a test file. */ | |
24 | in = fopen (inname, "w+"); | |
25 | if (in == NULL) | |
26 | { | |
27 | perror (inname); | |
28 | return 1; | |
29 | } | |
30 | for (i = 0; i < 1000; ++i) | |
ba9234d9 | 31 | fprintf (in, "%Zu\n", i); |
28f540f4 RM |
32 | |
33 | out = fopen (outname, "w"); | |
34 | if (out == NULL) | |
35 | { | |
36 | perror (outname); | |
37 | return 1; | |
38 | } | |
39 | if (fseek (in, 0L, SEEK_SET) != 0) | |
40 | abort (); | |
41 | putc (getc (in), out); | |
42 | i = fread (buf, 1, sizeof (buf), in); | |
43 | if (i == 0) | |
44 | { | |
45 | perror ("fread"); | |
46 | return 1; | |
47 | } | |
48 | if (fwrite (buf, 1, i, out) != i) | |
49 | { | |
50 | perror ("fwrite"); | |
51 | return 1; | |
52 | } | |
53 | fclose (in); | |
54 | fclose (out); | |
55 | ||
56 | puts ("There should be no further output from this test."); | |
57 | fflush (stdout); | |
ec4b0518 | 58 | |
993b3242 UD |
59 | /* We must remove this entry to assure the `cmp' binary does not use |
60 | the perhaps incompatible new shared libraries. */ | |
61 | unsetenv ("LD_LIBRARY_PATH"); | |
62 | ||
ec4b0518 UD |
63 | asprintf (&printbuf, "cmp %s %s", inname, outname); |
64 | result = system (printbuf); | |
65 | remove (inname); | |
66 | remove (outname); | |
67 | ||
68 | exit ((result != 0)); | |
28f540f4 | 69 | } |