X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frcvstore.c;h=668eb86eb7914a8881336ff797ecd5842f1a672e;hb=3bf07d227725f798f654ac09f015f35d27ab83cb;hp=4e14afbbd01e490278dd0316a83f5dd0fb82ca2d;hpb=0569d6d1631dc90d4f2f2df6bdd0599c7ecc7814;p=mmh diff --git a/uip/rcvstore.c b/uip/rcvstore.c index 4e14afb..668eb86 100644 --- a/uip/rcvstore.c +++ b/uip/rcvstore.c @@ -48,6 +48,7 @@ static struct swit switches[] = { */ static char *tmpfilenam = NULL; +static void unlink_done(int) NORETURN; int main (int argc, char **argv) @@ -60,6 +61,8 @@ main (int argc, char **argv) struct msgs *mp; struct stat st; + done=unlink_done; + #ifdef LOCALE setlocale(LC_ALL, ""); #endif @@ -170,9 +173,10 @@ main (int argc, char **argv) SIGNAL (SIGTERM, SIG_IGN); /* create a temporary file */ - tmpfilenam = m_scratch ("", invo_name); - if ((fd = creat (tmpfilenam, m_gmprot ())) == NOTOK) - adios (tmpfilenam, "unable to create"); + tmpfilenam = m_mktemp (invo_name, &fd, NULL); + if (tmpfilenam == NULL) { + adios ("rcvstore", "unable to create temporary file"); + } chmod (tmpfilenam, m_gmprot()); /* copy the message from stdin into temp file */ @@ -222,17 +226,17 @@ main (int argc, char **argv) unlink (tmpfilenam); /* remove temporary file */ tmpfilenam = NULL; - return done (0); + done (0); + return 1; } /* * Clean up and exit */ -int -done(int status) +static void +unlink_done(int status) { if (tmpfilenam && *tmpfilenam) unlink (tmpfilenam); exit (status); - return 1; /* dead code to satisfy the compiler */ }