X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Frcvstore.c;h=acf54beb237bc8e779e00f258bbf711516942463;hb=5e5e8b753acc7ff1e16c7fca172a2151a6c01353;hp=8734ebc2d81fea93c05b64e59334931d63988cfe;hpb=8f4c5da8971926f7eccc912f7998c343aef3c33b;p=mmh diff --git a/uip/rcvstore.c b/uip/rcvstore.c index 8734ebc..acf54be 100644 --- a/uip/rcvstore.c +++ b/uip/rcvstore.c @@ -2,7 +2,9 @@ /* * rcvstore.c -- asynchronously add mail to a folder * - * $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 @@ -10,7 +12,7 @@ #include #include #include -#include +#include static struct swit switches[] = { #define CRETSW 0 @@ -38,25 +40,28 @@ static struct swit switches[] = { { NULL, 0 } }; -extern int errno; /* * name of temporary file to store incoming message */ static char *tmpfilenam = NULL; +static void unlink_done(int) NORETURN; int main (int argc, char **argv) { int publicsw = -1, zerosw = 0; int create = 1, unseensw = 1; - int fd, msgnum, seqp = 0; + int fd, msgnum; + size_t seqp = 0; char *cp, *maildir, *folder = NULL, buf[BUFSIZ]; char **argp, **arguments, *seqs[NUMATTRS+1]; struct msgs *mp; struct stat st; + done=unlink_done; + #ifdef LOCALE setlocale(LC_ALL, ""); #endif @@ -83,10 +88,10 @@ main (int argc, char **argv) snprintf (buf, sizeof(buf), "%s [+folder] [switches]", invo_name); print_help (buf, switches, 1); - done (1); + done (0); case VERSIONSW: print_version(invo_name); - done (1); + done (0); case SEQSW: if (!(cp = *argp++) || *cp == '-') @@ -131,7 +136,7 @@ main (int argc, char **argv) if (folder) adios (NULL, "only one folder at a time!"); else - folder = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF); + folder = pluspath (cp); } else { adios (NULL, "usage: %s [+folder] [switches]", invo_name); } @@ -167,9 +172,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 */ @@ -199,7 +205,7 @@ main (int argc, char **argv) * Link message into folder, and possibly add * to the Unseen-Sequence's. */ - if ((msgnum = folder_addmsg (&mp, tmpfilenam, 0, unseensw, 0)) == -1) + if ((msgnum = folder_addmsg (&mp, tmpfilenam, 0, unseensw, 0, 0, (char *)0)) == -1) done (1); /* @@ -219,17 +225,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 */ }