diff options
Diffstat (limited to 'lib/libc/stdio/fread.c')
| -rw-r--r-- | lib/libc/stdio/fread.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/lib/libc/stdio/fread.c b/lib/libc/stdio/fread.c index fb4ca3f6..443b4874 100644 --- a/lib/libc/stdio/fread.c +++ b/lib/libc/stdio/fread.c @@ -1,7 +1,6 @@ -#include "__stdio.h" // for _IO_EOF, _IO_ERR +#include "__stdio.h" // for __FILE, _IO_EOF, _IO_ERR #include <atomic.h> // for LIBC_LOCK, LIBC_UNLOCK -#include <libc.h> // for __IMPL #include <stdio.h> // for fread, BUFSIZ, FILE #include <string.h> // for memcpy #include <unistd.h> // for size_t, read, ssize_t @@ -18,38 +17,38 @@ size_t fread(void *restrict ptr, size_t size, size_t nitems, size_t bytes_read = 0; char *p = ptr; - LIBC_LOCK(__IMPL(stream)->lock); + LIBC_LOCK(__FILE(stream)->lock); while (total > 0) { - if (__IMPL(stream)->buf_pos < __IMPL(stream)->buf_len) { - size_t available = __IMPL(stream)->buf_len - - __IMPL(stream)->buf_pos; + if (__FILE(stream)->buf_pos < __FILE(stream)->buf_len) { + size_t available = __FILE(stream)->buf_len - + __FILE(stream)->buf_pos; size_t to_copy = total < available ? total : available; - memcpy(p, __IMPL(stream)->buf + __IMPL(stream)->buf_pos, + memcpy(p, __FILE(stream)->buf + __FILE(stream)->buf_pos, to_copy); - __IMPL(stream)->buf_pos += to_copy; + __FILE(stream)->buf_pos += to_copy; p += to_copy; bytes_read += to_copy; total -= to_copy; continue; } - ssize_t ret = read(__IMPL(stream)->fd, __IMPL(stream)->buf, - __IMPL(stream)->buf_size); + ssize_t ret = read(__FILE(stream)->fd, __FILE(stream)->buf, + __FILE(stream)->buf_size); if (ret <= 0) { if (ret < 0) - __IMPL(stream)->flags |= _IO_ERR; + __FILE(stream)->flags |= _IO_ERR; else - __IMPL(stream)->flags |= _IO_EOF; + __FILE(stream)->flags |= _IO_EOF; break; } - __IMPL(stream)->buf_len = ret; - __IMPL(stream)->buf_pos = 0; + __FILE(stream)->buf_len = ret; + __FILE(stream)->buf_pos = 0; } - LIBC_UNLOCK(__IMPL(stream)->lock); + LIBC_UNLOCK(__FILE(stream)->lock); return bytes_read / size; } |
