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 "fwritable.h"
25
26 #include <stdio.h>
27
28 #include "macros.h"
29
30 #define TESTFILE "t-fwritable.tmp"
31
32 int
33 main ()
34 {
35 FILE *fp;
36
37
38 fp = fopen (TESTFILE, "w");
39 if (fp == NULL)
40 goto skip;
41 ASSERT (fwritable (fp));
42 if (fwrite ("foobarsh", 1, 8, fp) < 8)
43 goto skip;
44 ASSERT (fwritable (fp));
45 if (fclose (fp))
46 goto skip;
47
48
49 fp = fopen (TESTFILE, "r");
50 if (fp == NULL)
51 goto skip;
52 ASSERT (!fwritable (fp));
53 if (fgetc (fp) != 'f')
54 goto skip;
55 ASSERT (!fwritable (fp));
56 if (fseek (fp, 2, SEEK_CUR))
57 goto skip;
58 ASSERT (!fwritable (fp));
59 if (fgetc (fp) != 'b')
60 goto skip;
61 ASSERT (!fwritable (fp));
62 fflush (fp);
63 ASSERT (!fwritable (fp));
64 if (fgetc (fp) != 'a')
65 goto skip;
66 ASSERT (!fwritable (fp));
67 if (fseek (fp, 0, SEEK_END))
68 goto skip;
69 ASSERT (!fwritable (fp));
70 if (fclose (fp))
71 goto skip;
72
73
74 fp = fopen (TESTFILE, "r+");
75 if (fp == NULL)
76 goto skip;
77 ASSERT (fwritable (fp));
78 if (fgetc (fp) != 'f')
79 goto skip;
80 ASSERT (fwritable (fp));
81 if (fseek (fp, 2, SEEK_CUR))
82 goto skip;
83 ASSERT (fwritable (fp));
84 if (fgetc (fp) != 'b')
85 goto skip;
86 ASSERT (fwritable (fp));
87 fflush (fp);
88 ASSERT (fwritable (fp));
89 if (fgetc (fp) != 'a')
90 goto skip;
91 ASSERT (fwritable (fp));
92 if (fputc ('z', fp) != 'z')
93 goto skip;
94 ASSERT (fwritable (fp));
95 if (fseek (fp, 0, SEEK_END))
96 goto skip;
97 ASSERT (fwritable (fp));
98 if (fclose (fp))
99 goto skip;
100
101
102 fp = fopen (TESTFILE, "a");
103 if (fp == NULL)
104 goto skip;
105 ASSERT (fwritable (fp));
106 if (fwrite ("bla", 1, 3, fp) < 3)
107 goto skip;
108 ASSERT (fwritable (fp));
109 if (fclose (fp))
110 goto skip;
111
112 return 0;
113
114 skip:
115 fprintf (stderr, "Skipping test: file operations failed.\n");
116 return 77;
117 }