X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fmhmail.c;h=f5e5384adcc45248c9faf30a87d367cf0523ffe7;hb=025bb212470ef2945c9b7f57cb7fbfceb3e04e2c;hp=222a07611d6e9e7076fa07cf7ede1749a5413655;hpb=197f95940cc0860683e6988352f721e6603f9339;p=mmh diff --git a/uip/mhmail.c b/uip/mhmail.c index 222a076..f5e5384 100644 --- a/uip/mhmail.c +++ b/uip/mhmail.c @@ -2,11 +2,14 @@ /* * mhmail.c -- simple mail program * - * $Id$ + * This code is Copyright (c) 2002, by the authors of nmh. See the + * COPYRIGHT file in the root directory of the nmh distribution for + * complete copyright information. */ #include #include +#include #include static struct swit switches[] = { @@ -21,7 +24,7 @@ static struct swit switches[] = { #define VERSIONSW 4 { "version", 0 }, #define HELPSW 5 - { "help", 4 }, + { "help", 0 }, #define RESNDSW 6 { "resent", -6 }, #define QUEUESW 7 @@ -34,19 +37,21 @@ static char tmpfil[BUFSIZ]; /* * static prototypes */ -static RETSIGTYPE intrser (int); +static void intrser (int); int main (int argc, char **argv) { pid_t child_id; - int status, i, iscc = 0, nvec; + int status, iscc = 0, nvec; + size_t i; int queued = 0, resent = 0, somebody; char *cp, *tolist = NULL, *cclist = NULL, *subject = NULL; char *from = NULL, *body = NULL, **argp, **arguments; char *vec[5], buf[BUFSIZ]; FILE *out; + char *tfile = NULL; #ifdef LOCALE setlocale(LC_ALL, ""); @@ -120,10 +125,11 @@ main (int argc, char **argv) if (tolist == NULL) adios (NULL, "usage: %s addrs ... [switches]", invo_name); - strncpy (tmpfil, m_tmpfil (invo_name), sizeof(tmpfil)); - if ((out = fopen (tmpfil, "w")) == NULL) - adios (tmpfil, "unable to write"); - chmod (tmpfil, 0600); + + tfile = m_mktemp2(NULL, invo_name, NULL, &out); + if (tfile == NULL) adios("mhmail", "unable to create temporary file"); + chmod(tfile, 0600); + strncpy (tmpfil, tfile, sizeof(tmpfil)); SIGNAL2 (SIGINT, intrser); @@ -168,7 +174,7 @@ main (int argc, char **argv) if (child_id == NOTOK) { /* report failure and then send it */ - admonish (NULL, "unable to fork"); + adios (NULL, "unable to fork"); } else if (child_id) { /* parent process */ if ((status = pidXwait(child_id, postproc))) { @@ -192,14 +198,9 @@ main (int argc, char **argv) } -static RETSIGTYPE +static void intrser (int i) { -#ifndef RELIABLE_SIGNALS - if (i) - SIGNAL (i, SIG_IGN); -#endif - unlink (tmpfil); done (i != 0 ? 1 : 0); }