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
22
23 #define _GL_NO_LARGE_FILES
24 #include <stdio.h>
25
26 #include "signature.h"
27 SIGNATURE_CHECK (fseeko, int, (FILE *, off_t, int));
28
29
30 #include "macros.h"
31
32 #ifndef FUNC_UNGETC_BROKEN
33 # define FUNC_UNGETC_BROKEN 0
34 #endif
35
36 int
37 main (int argc, _GL_UNUSED char **argv)
38 {
39
40
41 int expected = argc > 1 ? 0 : -1;
42
43 int r1 = fseeko (stdin, 0, SEEK_CUR);
44 int r2 = fseek (stdin, 0, SEEK_CUR);
45 ASSERT (r1 == r2 && r1 == expected);
46 if (argc > 1)
47 {
48
49 int ch = fgetc (stdin);
50 ASSERT (ch == '#');
51 ASSERT (ungetc (ch, stdin) == ch);
52 ASSERT (fseeko (stdin, 2, SEEK_SET) == 0);
53 ch = fgetc (stdin);
54 ASSERT (ch == '/');
55 if (2 < argc)
56 {
57 if (FUNC_UNGETC_BROKEN)
58 {
59 fputs ("Skipping test: ungetc cannot handle arbitrary bytes\n",
60 stderr);
61 return 77;
62 }
63
64 ASSERT (ungetc (ch ^ 0xff, stdin) == (ch ^ 0xff));
65 }
66 ASSERT (fseeko (stdin, 0, SEEK_END) == 0);
67 ASSERT (fgetc (stdin) == EOF);
68
69 ASSERT (feof (stdin));
70 ASSERT (fseeko (stdin, 0, SEEK_END) == 0);
71 ASSERT (!feof (stdin));
72 }
73 return 0;
74 }