#include <h/utils.h>
#include <ctype.h>
#include <sys/stat.h>
+#include <sysexits.h>
#ifdef _FSTDIO
# define _ptr _p /* Gag */
#define FPUTS(buf) {\
if (fputs(buf, scnout) == EOF)\
- adios(scnmsg, "write error on");\
+ adios(EX_IOERR, scnmsg, "write error on");\
}
/*
datecomp = NULL;
}
- nxtbuf = compbuffers = (char **) calloc((size_t) ncomps,
+ nxtbuf = compbuffers = (char **) mh_xcalloc((size_t) ncomps,
sizeof(char *));
- if (!nxtbuf)
- adios(NULL, "unable to allocate component buffers");
- used_buf = (struct comp **) calloc((size_t) (ncomps+1),
+ used_buf = (struct comp **) mh_xcalloc((size_t) (ncomps+1),
sizeof(struct comp *));
- if (!used_buf)
- adios(NULL, "unable to allocate component buffer stack");
/* NULL-terminate array */
used_buf += ncomps;
*used_buf = NULL;
if (*scnmsg == '?') /* msg num out of range */
return SCNNUM;
if (!(scnout = fopen(scnmsg, "w")))
- adios(scnmsg, "unable to write");
+ adios(EX_IOERR, scnmsg, "unable to write");
}
/* scan - main loop */
goto finished;
default:
- adios(NULL, "getfld() returned %d", state);
+ adios(EX_SOFTWARE, NULL, "getfld() returned %d", state);
}
}
if (incing) {
if ((dat[2] = ftell(scnout)) == EOF)
- adios(scnmsg, "write error on");
+ adios(EX_IOERR, scnmsg, "write error on");
} else if (!scanfolder) {
if ((dat[2] = ftell(inb)) == EOF)
- adios(scnmsg, "write error on");
+ adios(EX_IOERR, scnmsg, "write error on");
dat[2] -= fpos;
}
if (datecomp && !datecomp->c_text) {
if (!datecomp->c_text) {
if (!datecomp->c_tws)
- datecomp->c_tws = (struct tws *) calloc((size_t) 1, sizeof(*datecomp->c_tws));
+ datecomp->c_tws = (struct tws *) mh_xcalloc((size_t) 1, sizeof(*datecomp->c_tws));
if (!datecomp->c_tws)
- adios(NULL, "unable to allocate tws buffer");
+ adios(EX_OSERR, NULL, "unable to allocate tws buffer");
*datecomp->c_tws = *dlocaltime((time_t *) &st.st_mtime);
datecomp->c_flags |= CF_DATEFAB|CF_TRUE;
} else {
*--nxtbuf = tmpbuf;
if (incing && (ferror(scnout) || fclose(scnout) == EOF))
- adios(scnmsg, "write error on");
+ adios(EX_IOERR, scnmsg, "write error on");
return (state != FILEEOF ? SCNERR : SCNMSG);
}