X("sasl", 0, SASLSW) \
X("nosasl", 0, NOSASLSW) \
X("saslmech", 0, SASLMECHSW) \
+ X("tls", TLSminc(-3), TLSSW) \
X("initialtls", TLSminc(-10), INITTLSSW) \
X("notls", TLSminc(-5), NOTLSSW) \
X("certverify", TLSminc(-10), CERTVERSW) \
int width = -1;
int hghnum = 0, msgnum = 0;
FILE *pf = NULL;
- bool sasl, tls, noverify;
+ bool sasl, noverify;
+ int tls = 0;
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;
+ sasl = false;
chgflag = noisy = noverify = true;
while ((cp = *argp++)) {
if (*cp == '-') {
die("missing argument to %s", argp[-2]);
continue;
+ case TLSSW:
+ tls = 1;
+ continue;
+
case INITTLSSW:
- tls = true;
+ tls = 2;
continue;
case NOTLSSW:
- tls = false;
+ tls = 0;
continue;
case CERTVERSW:
}
}
- if (tls)
- tlsflag |= P_INITTLS;
+ if (tls == 1)
+ tlsflag = P_STARTTLS;
+ else if (tls == 2)
+ tlsflag = P_INITTLS;
if (noverify)
tlsflag |= P_NOVERIFY;
}
if (stat (newmail, &s1) == NOTOK || s1.st_size == 0)
die("no mail to incorporate");
- if (s1.st_mode & S_IFDIR) {
- DIR *md;
- struct dirent *de;
- struct stat ms;
- int i;
- i = 0;
- cp = concat (newmail, "/new", NULL);
- if ((md = opendir(cp)) == NULL)
- die("unable to open %s", cp);
- while ((de = readdir (md)) != NULL) {
- if (de->d_name[0] == '.')
- continue;
- if (i >= num_maildir_entries) {
- if ((Maildir = realloc(Maildir, sizeof(*Maildir) * (2*i+16))) == NULL)
- die("not enough memory for %d messages", 2*i+16);
- num_maildir_entries = 2*i+16;
- }
- Maildir[i].filename = concat (cp, "/", de->d_name, NULL);
- if (stat(Maildir[i].filename, &ms) != 0)
- adios (Maildir[i].filename, "couldn't get delivery time");
- Maildir[i].mtime = ms.st_mtime;
- i++;
- }
- free (cp);
- closedir (md);
- cp = concat (newmail, "/cur", NULL);
- if ((md = opendir(cp)) == NULL)
- die("unable to open %s", cp);
- while ((de = readdir (md)) != NULL) {
- if (de->d_name[0] == '.')
- continue;
- if (i >= num_maildir_entries) {
- if ((Maildir = realloc(Maildir, sizeof(*Maildir) * (2*i+16))) == NULL)
- die("not enough memory for %d messages", 2*i+16);
- num_maildir_entries = 2*i+16;
- }
- Maildir[i].filename = concat (cp, "/", de->d_name, NULL);
- if (stat(Maildir[i].filename, &ms) != 0)
- adios (Maildir[i].filename, "couldn't get delivery time");
- Maildir[i].mtime = ms.st_mtime;
- i++;
- }
- free (cp);
- closedir (md);
- if (i == 0)
- die("no mail to incorporate");
- num_maildir_entries = i;
- qsort (Maildir, num_maildir_entries, sizeof(*Maildir), maildir_srt);
- }
+ if (s1.st_mode & S_IFDIR) {
+ DIR *md;
+ struct dirent *de;
+ struct stat ms;
+ int i;
+ i = 0;
+ cp = concat (newmail, "/new", NULL);
+ if ((md = opendir(cp)) == NULL)
+ die("unable to open %s", cp);
+ while ((de = readdir (md)) != NULL) {
+ if (de->d_name[0] == '.')
+ continue;
+ if (i >= num_maildir_entries) {
+ if ((Maildir = realloc(Maildir, sizeof(*Maildir) * (2*i+16))) == NULL)
+ die("not enough memory for %d messages", 2*i+16);
+ num_maildir_entries = 2*i+16;
+ }
+ Maildir[i].filename = concat (cp, "/", de->d_name, NULL);
+ if (stat(Maildir[i].filename, &ms) != 0)
+ adios (Maildir[i].filename, "couldn't get delivery time");
+ Maildir[i].mtime = ms.st_mtime;
+ i++;
+ }
+ free (cp);
+ closedir (md);
+ cp = concat (newmail, "/cur", NULL);
+ if ((md = opendir(cp)) == NULL)
+ die("unable to open %s", cp);
+ while ((de = readdir (md)) != NULL) {
+ if (de->d_name[0] == '.')
+ continue;
+ if (i >= num_maildir_entries) {
+ if ((Maildir = realloc(Maildir, sizeof(*Maildir) * (2*i+16))) == NULL)
+ die("not enough memory for %d messages", 2*i+16);
+ num_maildir_entries = 2*i+16;
+ }
+ Maildir[i].filename = concat (cp, "/", de->d_name, NULL);
+ if (stat(Maildir[i].filename, &ms) != 0)
+ adios (Maildir[i].filename, "couldn't get delivery time");
+ Maildir[i].mtime = ms.st_mtime;
+ i++;
+ }
+ free (cp);
+ closedir (md);
+ if (i == 0)
+ die("no mail to incorporate");
+ num_maildir_entries = i;
+ qsort (Maildir, num_maildir_entries, sizeof(*Maildir), maildir_srt);
+ }
cp = mh_xstrdup(newmail);
newmail = cp;
fprintf (aud, "<<inc>> %s -ms %s\n", dtimenow(0), from);
else {
if (host)
- fprintf (aud, "<<inc>> %s -host %s -user %s\n", dtimenow(0),
+ fprintf (aud, "<<inc>> %s -host %s -user %s\n", dtimenow(0),
host, user);
else
fprintf (aud, "<<inc>> %s\n", dtimenow (0));
break;
case SCNMSG:
- case SCNENC:
default:
if (aud)
fputs (charstring_buffer (scanl), aud);
break;
case SCNMSG:
- case SCNENC:
/*
* Run the external program hook on the message.
*/
size_t nrd;
if ((sf = fopen (sp, "r")) == NULL)
- adios (sp, "unable to read for copy");
+ adios (sp, "unable to read for copy");
if ((pf = fopen (cp, "w+")) == NULL)
adios (cp, "unable to write for copy");
while ((nrd = fread(buf, 1, sizeof(buf), sf)) > 0)
break;
case SCNMSG:
- case SCNENC:
default:
/*
* Run the external program hook on the message.
if (msgnum == hghnum) {
inform("no messages incorporated, continuing...");
} else {
- /*
+ /*
* Lock the sequence file now, and loop to set the right flags
* in the folder structure
*/