...
In this compliant solution, the opener()
function returns a value of type errno_t
, providing a clear indication that this returns a value that might be found in errno
.
Code Block | ||
---|---|---|
| ||
#include <errno.h>
enum { NO_FILE_POS_VALUES = 3 };
errno_t opener(FILE* file, int *width, int *height, int *data_offset) {
int file_w;
int file_h;
int file_o;
int rc;
fpos_t offset;
if (file == NULL) { return EINVAL; }
if ((rc = fgetpos(file, &offset)) != 0 ) { return rc; }
if (fscanf(file, "%i %i %i", &file_w, &file_h, &file_o) != NO_FILE_POS_VALUES) { return EIO; }
if ((rc = fsetpos(file, &offset)) != 0 ) { return rc; }
*width = file_w;
*height = file_h;
*data_offset = file_o;
return 0;
}
|
...