FSU_FREAD(3)

NAME
fsu_fread, fsu_fwrite - binary stream input/output

LIBRARY
fsu_utils Library (libfsu_utils, -lfsu_utils)

SYNOPSIS
#include <stdio.h>
size_t
fsu_fread(void * ptr, size_t size, size_t nmemb, FILE * stream);
size_t
fsu_fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);

DESCRIPTION
The function fsu_fread() reads nmemb objects, each size bytes long, from the stream pointed to by stream, storing them at the location given by ptr.

The function fsu_fwrite() writes nmemb objects, each size bytes long, to the stream pointed to by stream, obtaining them from the location given by ptr.

Mixing fsu_fread() and fsu_fwrite() calls without setting the file position explicitly using fsu_fseek() between read and write or write and read operations will lead to unexpected results because of buffering the file pointer not being set to the expected position after each operation completes. This behavior is allowed by ANSI C for efficiency and it will not be changed.

RETURN VALUES
The functions fsu_fread() and fsu_fwrite() advance the file position indicator for the stream by the number of bytes read or written. They return the number of objects read or written. If size or nmemb is 0, the functions return 0 and the state of stream remains unchanged. If an error occurs, or the end-of-file is reached, the return value is a short object count (or zero).

The function fsu_fread() does not distinguish between end-of-file and error, and callers must use fsu_feof(3) and fsu_ferror(3) to determine which occurred. The function fsu_fwrite() returns a value less than nmemb only if a write error has occurred.

SEE ALSO
ukfs(3), fsu_utils(3)