Fix case where private_f_file_stat_at() is being passed F_true rather than the flag.
Add missing path.used checks.
When total is 0 in f_file_stream_read_until(), then immediately return as F_none_stop.
Handle case where freopen() actually allows for the path to be NULL in which case the mode string is applied.
In this case, return F_data_not only if both path and mode are not used.
Always re-assign the file stream after calling freopen().
The return status' from private_f_file_stream_write_until() calls are not being processed.
The code is checking the values but the value is never assigned.
Add the missing return value assignment.
Move file stream locking into private_f_file_stream_write_until() and make sure only unlocked functions are used.
The f_file_type() and f_file_type_at() functions need to accept a dereference boolean for consistency with the rest of the project.
Have these two functions call private_f_file_stat() and private_f_file_stat_at() respectively.
When fwrite_unlocked() is called, be sure to set check if ferror_unlocked() returns an error rather than checking size_write.
The previous behavior is incorrect because it is checking if size is less than 0 and the man pages claim that fwrite()/fwrite_unlocked() returns nothing smaller than 0 on failure.
Have the fwrite_unlocked() unknown errnor codes return F_file_write rather than F_failure.