Files

27 lines
453 B
C
Raw Permalink Normal View History

#include "file.h"
#include <unistd.h>
size_t fread(void *buf, size_t size, size_t count, struct __opaque_file *stream)
{
__libc_file_lock(stream);
size_t total = size * count;
if (total == 0) {
__libc_file_unlock(stream);
return 0;
}
long ret = __libc_file_read(stream, buf, total);
if (ret == 0) {
stream->f_flags |= FILE_EOF;
}
if (ret < 0) {
stream->f_flags |= FILE_ERR;
ret = 0;
}
__libc_file_unlock(stream);
return ret;
}