X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/afee8ed17a56617618fb7f963b111d7cf0fb56e7..ef1ba39e8dae81091b6c3e73e72825ef6edea3c6:/uip/forwsbr.c?ds=sidebyside diff --git a/uip/forwsbr.c b/uip/forwsbr.c index cf043c40..3943071b 100644 --- a/uip/forwsbr.c +++ b/uip/forwsbr.c @@ -19,7 +19,7 @@ */ 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 @@ -48,10 +48,11 @@ build_form (char *form, char *digest, int *dat, char *from, char *to, 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 = 0; @@ -123,7 +124,6 @@ build_form (char *form, char *digest, int *dat, char *from, char *to, adios(NULL, "m_getfld() returned %d", state); } } - m_getfld_state_destroy (&gstate); /* * Override any components just in case they were included in the @@ -136,6 +136,7 @@ build_form (char *form, char *digest, int *dat, char *from, char *to, */ finished: + m_getfld_state_destroy (&gstate); cptr = fmt_findcomp ("digest"); if (cptr) { @@ -174,16 +175,18 @@ finished: } 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");