Hi az,
Thanks for the patch, Ken knows the topic better than me, but the man
page caught my eye.
If a \*(lqBcc:\*(rq field is encountered, its addresses will be used for
delivery, and the \*(lqBcc:\*(rq field will be removed from the message
-sent to sighted recipients. The blind recipients will receive an entirely
-new message with a minimal set of headers. Included in the body of the
-message will be a copy of the message sent to the sighted recipients.
+sent to sighted recipients. The blind recipients will receive an entirely
+new message with a minimal set of headers. The body of this new message
+will contain a copy of the message sent to the sighted recipients, either
+marked up with the indicator text "Blind-Carbon-Copy" or encapsulated
+as a MIME digest.
A man page is troff source and so the `text' parts aren't free-format
but instructions to the typesetter. In particular, the end of a
sentence must be followed by two spaces to indicate to the formatter
that it is indeed the end of a sentence and not a word following an
abbreviation or something else that happens to end in a full stop.
This is independent of any preference for whether the post-sentence gap
should be wider than an inter-word one.
Because of this, it's often easier to end the line at the end of a
sentence. This also makes diffs simpler because they tend to stay
within a sentence and not ripple through a re-formatted paragraph.
For a similar reason, long lines are sometimes broken after a comma.
The «"» around `Blind-Carbon-Copy' should be \(lq and \(rq, or the
equivalent strings for consistency with the style used at start of the
paragraph.
+recipients. *WARNING* Recipients listed in the \*(lqDcc:\*(rq field receive
no
I'd suggest «.B Warning:» rather than ASCII mark-up and shouting. :-)
Though, reading on, I realise that you copied how it was already done
elsewhere.
Given I'm writing about the patch anyway,
- fprintf (out, "BCC:\n");
+
+ /* for sendmail/pipe, insert all bcc recipients here so that the email
can be routed based on the bcc: header */
+ if (sm_mts == MTS_SENDMAIL_PIPE)
+ {
+ char *allbcc = NULL;
+ struct mailname *lp;
+
+ for (lp = localaddrs.m_next; lp; lp = lp->m_next)
+ if (lp->m_bcc)
+ allbcc = allbcc? add(concat(", ", lp->m_mbox, NULL), allbcc)
+ : mh_xstrdup(lp->m_mbox);
+ for (lp = netaddrs.m_next; lp; lp = lp->m_next)
+ if (lp->m_bcc)
+ allbcc = allbcc? add(
+ concat(", ", lp->m_mbox, "@", lp->m_host, NULL),
+ allbcc)
+ : concat(lp->m_mbox, "@", lp->m_host, NULL);
+ if (allbcc)
+ {
+ fprintf (out, "BCC: %s\n",allbcc);
+ free(allbcc);
+ }
+ }
+ else
+ {
+ fprintf (out, "BCC:\n");
+ }
I'd be tempted to make it an if-then with no else clause by hoisting the
"BCC:" prefix and "\n" suffix outside of the if-then.
And it tends to simplify the code when having to join items with a
separator like ", " if it always starts every item, giving ", foo, bar",
and then if allbcc isn't NULL then `allbcc + 2' can be printed. (It can
be "foo, bar, " instead but then the end of the string needs finding to
shorten it by two.) I think this would remove the ternary operators and
duplicated terms like `lp->m_mbox, "@", lp->m_host, NULL' so the reader
has less to parse and check they're the same.
--
Cheers, Ralph.
--
nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers