This source file includes following definitions.
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include <config.h>
20
21 #include "freadahead.h"
22
23 #include <stdlib.h>
24 #include <unistd.h>
25
26 #include "macros.h"
27
28 int
29 main (int argc, char **argv)
30 {
31 int nbytes = atoi (argv[1]);
32 if (nbytes > 0)
33 {
34 void *buf = malloc (nbytes);
35 ASSERT (fread (buf, 1, nbytes, stdin) == nbytes);
36 free (buf);
37 }
38
39 if (nbytes == 0)
40 ASSERT (freadahead (stdin) == 0);
41 else
42 {
43 if (lseek (0, 0, SEEK_CUR) == nbytes)
44
45
46 ASSERT (freadahead (stdin) == 0);
47 else
48 {
49
50 size_t buffered;
51 int c, c2;
52
53 ASSERT (freadahead (stdin) != 0);
54 buffered = freadahead (stdin);
55
56 c = fgetc (stdin);
57 ASSERT (freadahead (stdin) == buffered - 1);
58 ungetc (c, stdin);
59 ASSERT (freadahead (stdin) == buffered);
60 c2 = fgetc (stdin);
61 ASSERT (c2 == c);
62 ASSERT (freadahead (stdin) == buffered - 1);
63
64 c = '@';
65 ungetc (c, stdin);
66 ASSERT (freadahead (stdin) == buffered);
67 c2 = fgetc (stdin);
68 ASSERT (c2 == c);
69 ASSERT (freadahead (stdin) == buffered - 1);
70 }
71 }
72
73
74 fclose (stdin);
75
76 return 0;
77 }