preserve errno across free
[musl.git] / src / stdio / __toread.c
blobf142ff09c087ef5459a29acd004fd005ddfc8a0c
1 #include <stdio_impl.h>
3 int __toread(FILE *f)
5 f->mode |= f->mode-1;
6 if (f->wpos != f->wbase) f->write(f, 0, 0);
7 f->wpos = f->wbase = f->wend = 0;
8 if (f->flags & F_NORD) {
9 f->flags |= F_ERR;
10 return EOF;
12 f->rpos = f->rend = f->buf + f->buf_size;
13 return (f->flags & F_EOF) ? EOF : 0;
16 hidden void __toread_needs_stdio_exit()
18 __stdio_exit_needed();