File: posix.stdio.mod

package info (click to toggle)
libfiu 1.2-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 768 kB
  • sloc: ansic: 2,633; python: 973; makefile: 599; sh: 309
file content (233 lines) | stat: -rw-r--r-- 6,521 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233

# Posix stdio.h I/O

include: <stdio.h>
include: <errno.h>
include: <stdarg.h>

fiu name base: posix/stdio/oc/

FILE *fopen(const char *pathname, const char *mode);
	on error: NULL
	valid errnos: EACCES EINTR EISDIR ELOOP EMFILE ENAMETOOLONG ENFILE ENOENT ENOTDIR ENOSPC ENXIO EOVERFLOW EROFS EINVAL ENOMEM ETXTBSY
	variants: off64_t

FILE *freopen(const char *pathname, const char *mode, FILE *stream);
	on error: NULL
	valid errnos: EACCES EBADF EINTR EISDIR ELOOP EMFILE ENAMETOOLONG ENFILE ENOENT ENOTDIR ENOSPC ENXIO EOVERFLOW EROFS EBADF EINVAL ENOMEM ENXIO ETXTBSY
	variants: off64_t

# This one needs to be further instrumented.
# int fclose(FILE *stream);
# 	on error: EOF
# 	valid errnos: EAGAIN EBADF EFBIG EFBIG EINTR EIO ENOMEM ENOSPC EPIPE ENXIO

FILE *fdopen(int fd, const char *mode);
	on error: NULL
	valid errnos: EMFILE EBADF EINVAL EMFILE ENOMEM

FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode);
	on error: NULL
	valid errnos: EMFILE EINVAL ENOMEM

FILE *open_memstream(char **bufp, size_t *sizep);
	on error: NULL
	valid errnos: EMFILE EINVAL ENOMEM

FILE *popen(const char *command, const char *mode);
	on error: NULL
	valid errnos: EMFILE EINVAL ENOMEM EAGAIN ENFILE

int pclose(FILE *stream);
	on error: -1
	valid errnos: ECHILD


fiu name base: posix/stdio/tmp/

FILE *tmpfile(void);
	on error: NULL
	valid errnos: EINTR EMFILE ENFILE ENOSPC EOVERFLOW ENOMEM
	variants: off64_t

char *tmpnam(char *s);
	on error: NULL

char *tempnam(const char *dir, const char *pfx);
	on error: NULL
	valid errnos: ENOMEM

fiu name base: posix/stdio/rw/

size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
	on error: 0
	valid errnos: EAGAIN EBADF EINTR EIO EOVERFLOW ENOMEM ENXIO
	ferror: stream

size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
	on error: 0
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOSPC EPIPE ENOMEM ENXIO
	ferror: stream

fiu name base: posix/stdio/seek/

int fgetpos(FILE *restrict stream, fpos_t *restrict pos);
	on error: -1
	valid errnos: EBADF EOVERFLOW ESPIPE

long ftell(FILE *stream);
	on error: -1
	valid errnos: EBADF EOVERFLOW ESPIPE

off_t ftello(FILE *stream);
	on error: -1
	valid errnos: EBADF EOVERFLOW ESPIPE
	variants: off64_t

int fseek(FILE *stream, long int offset, int whence);
	on error: -1
	valid errnos: EAGAIN EBADF EFBIG EINTR EINVAL EIO ENOSPC EOVERFLOW EPIPE ENXIO
	ferror: stream

int fseeko(FILE *stream, off_t offset, int whence);
	on error: -1
	valid errnos: EAGAIN EBADF EFBIG EINTR EINVAL EIO ENOSPC EOVERFLOW EPIPE ENXIO
	ferror: stream
	variants: off64_t

int fsetpos(FILE *stream, const fpos_t *pos);
	on error: -1
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOSPC EOVERFLOW EPIPE ENXIO
	ferror: stream
	variants: off64_t

# void rewind(FILE *stream);
#	valid errnos: EAGAIN EBADF EFBIG EINTR EINVAL EIO ENOSPC EOVERFLOW EPIPE ENXIO
#	ferror: stream


fiu name base: posix/stdio/gp/

int fgetc(FILE *stream);
	on error: EOF
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW
	ferror: stream

char *fgets(char *restrict s, int n, FILE *restrict stream);
	on error: NULL
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW
	ferror: stream

int getc(FILE *stream);
	on error: EOF
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW
	ferror: stream

int getchar(void);
	on error: EOF
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW
	ferror: stdin

char *gets(char *s);
	on error: NULL
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW
	ferror: stdin

int fputc(int c, FILE *stream);
	on error: EOF
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE
	ferror: stream

int fputs(const char *restrict s, FILE *restrict stream);
	on error: EOF
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE
	ferror: stream

#ifndef putc
int putc(int c, FILE *stream);
	on error: EOF
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE
	ferror: stream
#endif

int putchar(int c);
	on error: EOF
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE
	ferror: stdout

int puts(const char *s);
	on error: EOF
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE
	ferror: stdout

int ungetc(int c, FILE *stream);
	on error: EOF
	ferror: stream

ssize_t getdelim(char **restrict lineptr, size_t *restrict n, int delimiter, FILE *restrict stream);
	on error: -1
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW INVAL
	ferror: stream

ssize_t getline(char **restrict lineptr, size_t *restrict n, FILE *restrict stream);
	on error: -1
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW INVAL
	ferror: stream


fiu name base: posix/stdio/sp/

# Variants with a variable number of arguments need a custom definition.

# int fprintf(FILE *restrict stream, const char *restrict format, ...);
# int printf(const char *restrict format, ...);
# int dprintf(int fildes, const char *restrict format, ...);

int vfprintf(FILE *restrict stream, const char *restrict format, va_list ap);
	on error: -1
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE EILSEQ EOVERFLOW
	ferror: stream

int vprintf(const char *restrict format, va_list ap);
	on error: -1
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE EILSEQ EOVERFLOW
	ferror: stdout

int vdprintf(int fildes, const char *restrict format, va_list ap);
	on error: -1
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC ENXIO EPIPE EILSEQ EOVERFLOW

# int fscanf(FILE *restrict stream, const char *restrict format, ...);
# int scanf(const char *restrict format, ...);

int vfscanf(FILE *restrict stream, const char *restrict format, va_list arg);
	on error: EOF
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW EILSEQ EINVAL
	ferror: stream

int vscanf(const char *restrict format, va_list arg);
	on error: EOF
	valid errnos: EAGAIN EBADF EINTR EIO ENOMEM ENXIO EOVERFLOW EILSEQ
	ferror: stdin

fiu name base: posix/stdio/

# Other functions not worth categorizing

int remove(const char *filename);
	on error: -1
	valid errnos: EACCES EBUSY EEXIST ENOTEMPTY EINVAL EIO ELOOP ENAMETOOLONG ENOENT ENOTDIR EPERM EROFS ETXTBSY

int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);
	on error: EOF
	valid errnos: EBADF

int ftrylockfile(FILE *file);
	on error: 1

int fflush(FILE *stream);
	on error: EOF
	valid errnos: EAGAIN EBADF EFBIG EINTR EIO ENOMEM ENOSPC EPIPE ENXIO
	ferror: stream