libc: Make fread() and fwrite() less awkward

This commit is contained in:
apio 2022-11-06 14:53:05 +01:00
parent 88011fc162
commit 2980ee3973

View File

@ -127,15 +127,15 @@ extern "C"
size_t fread(void* buf, size_t size, size_t nmemb, FILE* stream)
{
ssize_t status =
read(stream->f_fd, buf,
size * nmemb); // FIXME: This function should use file_read_buf() to not conflict with fgets().
size_t rsize = size * nmemb;
ssize_t status = read(stream->f_fd, buf, rsize);
if (status < 0)
{
stream->f_err = 1;
return 0;
}
if (status == 0) stream->f_eof = 1;
if (status == 0 && rsize) stream->f_eof = 1;
if (status == 0) return (size_t)status;
return (size_t)status / size;
}
@ -281,13 +281,15 @@ extern "C"
size_t fwrite(const void* buf, size_t size, size_t nmemb, FILE* stream)
{
ssize_t status = write(stream->f_fd, buf, size * nmemb);
size_t rsize = size * nmemb;
ssize_t status = write(stream->f_fd, buf, rsize);
if (status < 0)
{
stream->f_err = 1;
return 0;
}
if (status == 0) stream->f_eof = 1;
if (status == 0 && rsize) stream->f_eof = 1;
if (status == 0) return (size_t)status;
return (size_t)status / size;
}