#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 _cnt _w /* Wretch */
#endif
-#ifdef SCO_5_STDIO
-# define _ptr __ptr
-# define _cnt __cnt
-# define _base __base
-# define _filbuf(fp) ((fp)->__cnt = 0, __filbuf(fp))
-#endif
-
#define MAXSCANL 256 /* longest possible scan line */
/*
#define FPUTS(buf) {\
if (fputs(buf, scnout) == EOF)\
- adios(scnmsg, "write error on");\
+ adios(EX_IOERR, scnmsg, "write error on");\
}
/*
char *scnmsg = NULL;
FILE *scnout = NULL;
char name[NAMESZ];
- char returnpath[BUFSIZ];
- char deliverydate[BUFSIZ];
int incing = (outnum != SCN_MBOX && outnum != SCN_FOLD);
int scanfolder = (outnum == SCN_FOLD);
long fpos;
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),
+ adios(EX_OSERR, NULL, "unable to allocate component buffers");
+ used_buf = (struct comp **) mh_xcalloc((size_t) (ncomps+1),
sizeof(struct comp *));
if (!used_buf)
- adios(NULL, "unable to allocate component buffer stack");
+ adios(EX_OSERR, 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");
- /*
- ** Add the Return-Path and Delivery-Date
- ** header fields to message.
- */
- if (get_returnpath(returnpath, sizeof(returnpath),
- deliverydate, sizeof(deliverydate))) {
- FPUTS("Return-Path: ");
- FPUTS(returnpath);
- FPUTS("Delivery-Date: ");
- FPUTS(deliverydate);
- }
+ 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);
}