-
-/*
- * inc.c -- incorporate messages from a maildrop into a folder
+/* inc.c -- incorporate messages from a maildrop into a folder
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
#include <h/signals.h>
#include <h/tws.h>
#include <h/mts.h>
+#include "../sbr/lock_file.h"
+#include "../sbr/m_maildir.h"
+#include "../sbr/m_mktemp.h"
#ifndef TLS_SUPPORT
# define TLSminc(a) (a)
int
main (int argc, char **argv)
{
- int chgflag = 1, trnflag = 1;
- int noisy = 1, width = -1;
+ bool chgflag;
+ int trnflag = 1;
+ bool noisy;
+ int width = -1;
int hghnum = 0, msgnum = 0;
- int sasl = 0, tls = 0, noverify = 1;
+ bool sasl, tls, noverify;
int incerr = 0; /* <0 if inc hits an error which means it should not truncate mailspool */
char *cp, *maildir = NULL, *folder = NULL;
char *format = NULL, *form = NULL;
if (pophost && *pophost)
host = pophost;
+ sasl = tls = false;
+ chgflag = noisy = noverify = true;
while ((cp = *argp++)) {
if (*cp == '-') {
switch (smatch (++cp, switches)) {
continue;
case CHGSW:
- chgflag++;
+ chgflag = true;
continue;
case NCHGSW:
- chgflag = 0;
+ chgflag = false;
continue;
/*
continue;
case SILSW:
- noisy = 0;
+ noisy = false;
continue;
case NSILSW:
- noisy++;
+ noisy = true;
continue;
case FORMSW:
continue;
case SASLSW:
- sasl++;
+ sasl = true;
continue;
case NOSASLSW:
- sasl = 0;
+ sasl = false;
continue;
case SASLMECHSW:
continue;
case INITTLSSW:
- tls++;
+ tls = true;
continue;
case NOTLSSW:
- tls = 0;
+ tls = false;
continue;
case CERTVERSW:
- noverify = 0;
+ noverify = false;
continue;
case NOCERTVERSW:
- noverify++;
+ noverify = true;
continue;
case AUTHSERVICESW:
if (host && !*host)
host = NULL;
- /* guarantee dropping group priveleges; we might not have done so earlier */
+ /* guarantee dropping group privileges; we might not have done so earlier */
DROPGROUPPRIVS();
/*
qsort (Maildir, num_maildir_entries, sizeof(*Maildir), maildir_srt);
}
- if ((cp = strdup(newmail)) == NULL)
- adios (NULL, "error allocating memory to copy newmail");
-
+ cp = mh_xstrdup(newmail);
newmail = cp;
}
if (!folder)
folder = getfolder (0);
maildir = m_maildir (folder);
-
- if ((maildir_copy = strdup(maildir)) == NULL)
- adios (maildir, "error allocating memory to copy maildir");
+ maildir_copy = mh_xstrdup(maildir);
if (!folder_exists(maildir)) {
/* If the folder doesn't exist, and we're given the -silent flag,
if (audfile) {
int i;
if ((i = stat (audfile, &st)) == NOTOK)
- advise (NULL, "Creating Receive-Audit: %s", audfile);
+ inform("Creating Receive-Audit: %s", audfile);
if ((aud = fopen (audfile, "a")) == NULL)
adios (audfile, "unable to append to");
else if (i == NOTOK)
case SCNERR:
if (aud)
fputs ("inc aborted!\n", aud);
- advise (NULL, "aborted!"); /* doesn't clean up locks! */
+ inform("aborted!"); /* doesn't clean up locks! */
break;
case SCNNUM:
- advise (NULL, "BUG in %s, number out of range", invo_name);
+ inform("BUG in %s, number out of range", invo_name);
break;
default:
- advise (NULL, "BUG in %s, scan() botch (%d)", invo_name, incerr);
+ inform("BUG in %s, scan() botch (%d)", invo_name, incerr);
break;
case SCNMSG:
if (inc_type == INC_FILE && Maildir == NULL) {
if (trnflag) {
if (stat (newmail, &st) != NOTOK && s1.st_mtime != st.st_mtime)
- advise (NULL, "new messages have arrived!\007");
+ inform("new messages have arrived!\007");
else {
int newfd;
if ((newfd = creat (newmail, 0600)) != NOTOK)
}
if (msgnum == hghnum) {
- admonish (NULL, "no messages incorporated");
+ inform("no messages incorporated, continuing...");
} else {
/*
* Lock the sequence file now, and loop to set the right flags
context_replace (pfolder, folder); /* update current folder */
if ((mp2 = folder_read(folder, 1)) == NULL) {
- admonish(NULL, "Unable to reread folder %s", folder);
+ inform("Unable to reread folder %s, continuing...", folder);
goto skip;
}
if (msgnum >= mp2->hghoff
&& !(mp2 = folder_realloc (mp2, mp2->lowoff, msgnum + 1))) {
- advise (NULL, "unable to reallocate folder storage");
+ inform("unable to reallocate folder storage");
goto skip;
}
}
-static void
+static void NORETURN
inc_done (int status)
{
done = exit;