#include <h/scansbr.h>
#include <h/tws.h>
#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");\
}
/*
width = MAXSCANL;
}
dat[3] = slwidth = width;
- scanl = (char *) mh_xmalloc((size_t) SCAN_CHARWIDTH *
- (slwidth + 2)); /* probably for \n and \0 */
+ scanl = mh_xcalloc(slwidth + 2, SCAN_CHARWIDTH); /* probably for \n and \0 */
/* Compile format string */
ncomps = fmt_compile(fmtstr, &fmt) + 1;
FINDCOMP(datecomp, "date");
datecomp = NULL;
}
- nxtbuf = compbuffers = (char **) calloc((size_t) ncomps,
- sizeof(char *));
- if (!nxtbuf)
- adios(NULL, "unable to allocate component buffers");
- used_buf = (struct comp **) calloc((size_t) (ncomps+1),
- sizeof(struct comp *));
- if (!used_buf)
- adios(NULL, "unable to allocate component buffer stack");
+ nxtbuf = compbuffers = mh_xcalloc(ncomps, sizeof(char *));
+ used_buf = mh_xcalloc(ncomps+1, sizeof(struct comp *));
/* NULL-terminate array */
used_buf += ncomps;
*used_buf = NULL;
/* allocate space for the items */
for (i = ncomps; i--; )
- *nxtbuf++ = mh_xmalloc(SBUFSIZ);
+ *nxtbuf++ = mh_xcalloc(SBUFSIZ, sizeof(char));
}
/*
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 = mh_xcalloc(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);
}