*/
static char msgbuf[256];
-#define COMPFREE(c) if (c->c_text) free(c->c_text)
+#define COMPFREE(c) mh_xfree(c->c_text)
/*
* A list of components we treat as addresses
int in;
int fmtsize, state;
int i;
- register char *nfs;
- char *line, tmpfil[BUFSIZ], name[NAMESZ], **ap;
+ 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;
+ m_getfld_state_t gstate = 0;
/*
* Open the message we'll be scanning for components
* these routines?
*/
- m_getfld_state_init (&gstate);
for (;;) {
int msg_count = sizeof msgbuf;
- state = m_getfld (gstate, name, msgbuf, &msg_count, tmp);
+ state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
switch (state) {
case FLD:
case FLDPLUS:
if (i != -1) {
while (state == FLDPLUS) {
msg_count = sizeof msgbuf;
- state = m_getfld (gstate, name, msgbuf, &msg_count, tmp);
+ state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
fmt_appendcomp(i, name, msgbuf);
}
}
- while (state == FLDPLUS)
+ while (state == FLDPLUS) {
msg_count = sizeof msgbuf;
- state = m_getfld (gstate, name, msgbuf, &msg_count, tmp);
+ state = m_getfld (&gstate, name, msgbuf, &msg_count, tmp);
+ }
break;
case LENERR:
adios(NULL, "m_getfld() returned %d", state);
}
}
- m_getfld_state_destroy (&gstate);
/*
* Override any components just in case they were included in the
*/
finished:
+ m_getfld_state_destroy (&gstate);
cptr = fmt_findcomp ("digest");
if (cptr) {
}
cp = m_mktemp2(NULL, invo_name, NULL, &tmp);
- if (cp == NULL) adios("forw", "unable to create temporary file");
+ if (cp == NULL) {
+ adios(NULL, "unable to create temporary file in %s", get_temp_dir());
+ }
strncpy (tmpfil, cp, sizeof(tmpfil));
- unlink (tmpfil);
+ (void) m_unlink (tmpfil);
if ((in = dup (fileno (tmp))) == NOTOK)
adios ("dup", "unable to");
- line = mh_xmalloc ((unsigned) fmtsize);
- fmt_scan (fmt, line, fmtsize - 1, fmtsize, dat);
- fputs (line, tmp);
- free (line);
+ line = charstring_create (fmtsize);
+ fmt_scan (fmt, line, fmtsize, dat, NULL);
+ fputs (charstring_buffer (line), tmp);
+ charstring_free (line);
if (fclose (tmp))
adios (tmpfil, "error writing");