X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/64e8827c5d5def0325ab7181fe939623c77e807c..baecaa2380db6164c1992fdffccca8ea9a61d5ba:/uip/rcvdist.c?ds=sidebyside diff --git a/uip/rcvdist.c b/uip/rcvdist.c index 8b672cd7..ae55f613 100644 --- a/uip/rcvdist.c +++ b/uip/rcvdist.c @@ -48,13 +48,9 @@ main (int argc, char **argv) FILE *fp; char *tfile = NULL; - done=unlink_done; - - setlocale(LC_ALL, ""); - invo_name = r1bindex (argv[0], '/'); + if (nmh_init(argv[0], 1)) { return 1; } - /* read user profile/context */ - context_read(); + done=unlink_done; /* * Configure this now, since any unknown switches to rcvdist get @@ -102,15 +98,17 @@ main (int argc, char **argv) umask (~m_gmprot ()); - tfile = m_mktemp2(NULL, invo_name, NULL, &fp); - if (tfile == NULL) adios("rcvdist", "unable to create temporary file"); + if ((tfile = m_mktemp2(NULL, invo_name, NULL, &fp)) == NULL) { + adios(NULL, "unable to create temporary file in %s", get_temp_dir()); + } strncpy (tmpfil, tfile, sizeof(tmpfil)); cpydata (fileno (stdin), fileno (fp), "message", tmpfil); fseek (fp, 0L, SEEK_SET); - tfile = m_mktemp2(NULL, invo_name, NULL, NULL); - if (tfile == NULL) adios("forw", "unable to create temporary file"); + if ((tfile = m_mktemp2(NULL, invo_name, NULL, NULL)) == NULL) { + adios(NULL, "unable to create temporary file in %s", get_temp_dir()); + } strncpy (drft, tfile, sizeof(tmpfil)); rcvdistout (fp, form, addrs); @@ -120,11 +118,11 @@ main (int argc, char **argv) done (1); vec[vecp++] = "-dist"; - vec[vecp++] = drft; if ((cp = context_find ("mhlproc"))) { vec[vecp++] = "-mhlproc"; vec[vecp++] = cp; } + vec[vecp++] = drft; vec[vecp] = NULL; for (i = 0; (child_id = fork()) == NOTOK && i < 5; i++) @@ -177,7 +175,8 @@ rcvdistout (FILE *inb, char *form, char *addrs) { register int char_read = 0, format_len, i, state; register char **ap; - char *cp, *scanl, name[NAMESZ], tmpbuf[SBUFSIZ]; + char *cp, name[NAMESZ], tmpbuf[SBUFSIZ]; + charstring_t scanl; register struct comp *cptr; FILE *out; m_getfld_state_t gstate = 0; @@ -236,17 +235,17 @@ finished: ; m_getfld_state_destroy (&gstate); i = format_len + char_read + 256; - scanl = mh_xmalloc ((size_t) i + 2); + scanl = charstring_create (i + 2); dat[0] = dat[1] = dat[2] = dat[4] = 0; dat[3] = outputlinelen; - fmt_scan (fmt, scanl, i + 1, i, dat, NULL); - fputs (scanl, out); + fmt_scan (fmt, scanl, i, dat, NULL); + fputs (charstring_buffer (scanl), out); if (ferror (out)) adios (drft, "error writing"); fclose (out); - free (scanl); + charstring_free (scanl); fmt_free(fmt, 1); } @@ -255,11 +254,11 @@ static void unlink_done (int status) { if (backup[0]) - unlink (backup); + (void) m_unlink (backup); if (drft[0]) - unlink (drft); + (void) m_unlink (drft); if (tmpfil[0]) - unlink (tmpfil); + (void) m_unlink (tmpfil); exit (status ? RCV_MBX : RCV_MOK); }