-
-/*
- * forwsbr.c -- subroutine to build a draft from a component file
+/* forwsbr.c -- subroutine to build a draft from a component file
*
* This code is Copyright (c) 2012, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
*/
-#include <h/mh.h>
+#include "h/mh.h"
+#include "sbr/fmt_new.h"
+#include "sbr/dtime.h"
+#include "sbr/m_getfld.h"
+#include "sbr/getcpy.h"
+#include "sbr/error.h"
#include <fcntl.h>
-#include <h/fmt_scan.h>
-#include <h/tws.h>
-#include <h/utils.h>
+#include "h/fmt_scan.h"
+#include "h/tws.h"
+#include "h/utils.h"
+#include "sbr/m_mktemp.h"
+#include "forwsbr.h"
/*
* Take from replsbr.c - a buffer big enough to read in data header lines
* in reasonable chunks but not enough to slurp in the whole message
*/
-static char msgbuf[256];
-#define COMPFREE(c) if (c->c_text) free(c->c_text)
+static char msgbuf[NMH_BUFSIZ];
+#define COMPFREE(c) free(c->c_text)
/*
* A list of components we treat as addresses
int in;
int fmtsize, state;
int i;
- register char *nfs;
+ char *nfs;
char tmpfil[BUFSIZ], name[NAMESZ], **ap;
charstring_t line;
FILE *tmp;
- register struct comp *cptr;
+ struct comp *cptr;
struct format *fmt;
char *cp = NULL;
- m_getfld_state_t gstate = 0;
+ m_getfld_state_t gstate;
/*
* Open the message we'll be scanning for components
*/
if ((tmp = fopen(inputfile, "r")) == NULL)
- adios (inputfile, "Unable to open");
+ adios (inputfile, "Unable to open");
/* Get new format string */
nfs = new_fs (form, NULL, NULL);
* these routines?
*/
+ gstate = m_getfld_state_init(tmp);
for (;;) {
int msg_count = sizeof msgbuf;
- state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+ state = m_getfld2(&gstate, name, msgbuf, &msg_count);
switch (state) {
case FLD:
case FLDPLUS:
- /*
+ /*
* If we find a component that we're interested in, save
* a copy. We don't do all of that weird buffer switching
* that replout does.
if (i != -1) {
while (state == FLDPLUS) {
msg_count = sizeof msgbuf;
- state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+ state = m_getfld2(&gstate, name, msgbuf, &msg_count);
fmt_appendcomp(i, name, msgbuf);
}
}
while (state == FLDPLUS) {
msg_count = sizeof msgbuf;
- state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+ state = m_getfld2(&gstate, name, msgbuf, &msg_count);
}
break;
case FMTERR:
case BODY:
case FILEEOF:
- goto finished;
+ goto finished;
default:
- adios(NULL, "m_getfld() returned %d", state);
+ die("m_getfld2() returned %d", state);
}
}
cptr = fmt_findcomp ("digest");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(digest);
}
cptr = fmt_findcomp ("nmh-date");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(dtimenow (0));
}
cptr = fmt_findcomp ("nmh-from");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(from);
}
cptr = fmt_findcomp ("nmh-to");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(to);
}
cptr = fmt_findcomp ("nmh-cc");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(cc);
}
cptr = fmt_findcomp ("nmh-subject");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(subject);
}
cptr = fmt_findcomp ("fcc");
if (cptr) {
- COMPFREE(cptr);
+ COMPFREE(cptr);
cptr->c_text = getcpy(fcc);
}
cp = m_mktemp2(NULL, invo_name, NULL, &tmp);
if (cp == NULL) {
- adios(NULL, "unable to create temporary file in %s", get_temp_dir());
+ die("unable to create temporary file in %s", get_temp_dir());
}
strncpy (tmpfil, cp, sizeof(tmpfil));
(void) m_unlink (tmpfil);
if (fclose (tmp))
adios (tmpfil, "error writing");
- lseek (in, (off_t) 0, SEEK_SET);
+ lseek(in, 0, SEEK_SET);
/*
* Free any component buffers that we allocated