4215
|
1 #ifndef IO_H_
|
|
2 #define IO_H_
|
|
3
|
|
4 #include "config.h"
|
|
5 #include "Str.h"
|
|
6
|
|
7 #include <stdio.h>
|
|
8
|
|
9 typedef struct IO IO;
|
|
10
|
|
11 enum io_flags {
|
|
12 IO_BINARY = 1,
|
|
13 IO_READ = 2 * IO_BINARY,
|
|
14 IO_WRITE = 2 * IO_READ,
|
|
15 IO_APPEND = 2 * IO_WRITE,
|
|
16 IO_TRUNCATE = 2 * IO_APPEND,
|
|
17 IO_BUFFERED = 2 * IO_TRUNCATE,
|
|
18 IO_AUTOFLUSH = 2 * IO_BUFFERED
|
|
19 };
|
|
20
|
|
21 enum io_whence {
|
|
22 IOS_START = SEEK_SET,
|
|
23 IOS_CUR = SEEK_CUR,
|
|
24 IOS_END = SEEK_END
|
|
25 };
|
|
26
|
|
27 void io_init(void);
|
|
28 void io_end(void);
|
|
29 const char *io_name(const IO *, String *);
|
|
30 IO *io_enter(const char *, FILE *, enum io_flags);
|
|
31 IO *io_open(const char *, enum io_flags);
|
|
32 IO *io_incr(IO *);
|
|
33 void io_decr(IO *);
|
|
34 int io_close(IO *);
|
|
35
|
|
36 ATTR_PURE
|
|
37 int io_bufred(const IO *);
|
|
38 void io_unbuffer(IO *);
|
|
39 const char *io_bufptr(IO *);
|
|
40
|
|
41 ATTR_PURE
|
|
42 FILE *io_fp(const IO *);
|
|
43
|
|
44 int io_flush(IO *);
|
|
45 ATTR_PURE
|
|
46 int io_err(const IO *);
|
|
47 ATTR_PURE
|
|
48 int io_eof(const IO *);
|
|
49 int io_peek(IO *, size_t);
|
|
50 int io_cmppeek(IO *, size_t, const void *, size_t);
|
|
51 int io_xcmp(IO *, size_t, size_t, size_t);
|
|
52
|
|
53 size_t io_read(IO *, String *, size_t);
|
|
54 int io_getc(IO *);
|
|
55 size_t io_getline(IO *, String *);
|
|
56 size_t io_write(IO *, const String *);
|
|
57 size_t io_write_m(IO *, const void *, size_t);
|
|
58 size_t io_write_s(IO *, const char *);
|
|
59 int io_putc(IO *, int);
|
|
60
|
|
61 long io_tell(IO *);
|
|
62 int io_seek(IO *, long, enum io_whence);
|
|
63 void io_clearerr(IO *);
|
|
64
|
|
65 #endif /* IO_H_ */
|