diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2023-06-28 17:29:32 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2023-06-28 17:29:32 +0000 |
commit | 23ce26f64c34e30951ad9ade2151552ed77e7357 (patch) | |
tree | d73b31a0c2f7c7be4a69f8a8e84e00dd39c432b5 /converter/other/cameratopam/stdio_nofail.c | |
parent | 1b6e51a266008348ad93ed8b6ac9ec91b5024fea (diff) | |
download | netpbm-mirror-23ce26f64c34e30951ad9ade2151552ed77e7357.tar.gz netpbm-mirror-23ce26f64c34e30951ad9ade2151552ed77e7357.tar.xz netpbm-mirror-23ce26f64c34e30951ad9ade2151552ed77e7357.zip |
promote Advanced to Stable
git-svn-id: http://svn.code.sf.net/p/netpbm/code/stable@4558 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'converter/other/cameratopam/stdio_nofail.c')
-rw-r--r-- | converter/other/cameratopam/stdio_nofail.c | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/converter/other/cameratopam/stdio_nofail.c b/converter/other/cameratopam/stdio_nofail.c new file mode 100644 index 00000000..97a8796d --- /dev/null +++ b/converter/other/cameratopam/stdio_nofail.c @@ -0,0 +1,120 @@ +#include <stdio.h> +#include <string.h> +#include <errno.h> + +#include <netpbm/pm.h> + +#include "stdio_nofail.h" + + + +size_t +fread_or_eof_nofail(void * const ptr, + size_t const size, + size_t const nmemb, + FILE * const streamP) { + + size_t rc; + + rc = fread(ptr, size, nmemb, streamP); + + if (rc < nmemb) { + if (!feof(streamP)) + pm_error("File read failed. Errno=%d (%s)", + errno, strerror(errno)); + } + return rc; +} + + + +void +fread_nofail(void * const ptr, + size_t const size, + size_t const nmemb, + FILE * const streamP) { + + size_t rc; + + rc = fread(ptr, size, nmemb, streamP); + + if (rc < nmemb) { + if (feof(streamP)) + pm_error("File read failed. Premature end of file"); + else + pm_error("File read failed. Errno=%d (%s)", + errno, strerror(errno)); + } +} + + + +int +fgetc_nofail(FILE * streamP) { + + int rc; + + rc = fgetc(streamP); + + if (rc == EOF) { + if (feof(streamP)) + pm_error("File read failed. Premature end of file"); + else + pm_error("File read failed. Errno=%d (%s)", + errno, strerror(errno)); + } + return rc; +} + + + +int +fseek_nofail(FILE * const streamP, + long const offset, + int const whence) { + + int rc; + + rc = fseek(streamP, offset, whence); + + if (rc < 0) + pm_error("File seek failed. Errno=%d (%s)", errno, strerror(errno)); + + return rc; +} + + + +long +ftell_nofail(FILE * const streamP) { + + long rc; + + rc = ftell(streamP); + + if (rc < 0) + pm_error("File position query failed. Errno=%d (%s)", + errno, strerror(errno)); + + return rc; +} + + + +char * +fgets_nofail(char * const s, + int const size, + FILE * const streamP) { + + char * rc; + + rc = fgets(s, size, streamP); + + if (ferror(streamP)) + pm_error("File read failed. Errno=%d (%s)", errno, strerror(errno)); + + return rc; +} + + + |