Skip to content

Conversation

@ej-uses-git
Copy link

From man 3 fread:

The function fread() does not distinguish between end-of-file and error; callers must use feof(3) and ferror(3) to determine which occurred.
The function fwrite() returns a value less than nitems only if a write error has occurred.

So we don't need to loop and check for fwrite, since it only returns anything smaller than size if it failed. It also doesn't set ferror so that's the wrong way to test for an error.

Also, while man says nothing about errno, the UNIX spec for fread and fwrite says:

Otherwise, if a read error occurs, the error indicator for the stream is set and errno is set to indicate the error.

(See here)

So I removed the TODO comment about it.

From `man 3 fread`:

> The function **fread()** does not distinguish between end-of-file and
> error; callers must use `feof(3)` and `ferror(3)` to determine which
> occurred.
> The function **fwrite()** returns a value less than _nitems_ only if a
> write error has occurred.

So we don't need to loop and check for `fwrite`, since it only returns
anything smaller than `size` if it failed. It also doesn't set `ferror`
so that's the wrong way to test for an error.

Also, while `man` says nothing about `errno`, the UNIX spec for `fread`
and `fwrite` says:

> Otherwise, if a read error occurs, the error indicator for the stream
> is set and _errno_ is set to indicate the error.

(See
[here](https://pubs.opengroup.org/onlinepubs/7908799/xsh/fread.html))

So I removed the TODO comment about it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant