Don't use UI32_MAX buffer size with snprintf(3)..
[s-mailx.git] / NEWS
blob8e7adefe3d216967cb606a0de6956a4eb6c63c68
1 S - n a i l  N e w s
2 ====================
4 The complete changelog of commits in between two versions can be
5 inspected by using the git(1) `log' command as shown below, where `OLD'
6 and `NEW' are the two versions to be compared, e.g., v14.6 and v14.7:
8   # All commits:
9   $ git log --reverse --topo-order --abbrev-commit OLD..NEW
10   # Only topic branch headers (--no-merges for content commits only):
11   $ git log --oneline --reverse --topo-order --merges OLD..NEW
12   # Same, but truly accessible:
13   $ git log --oneline --reverse --topo-order --merges --parents OLD..NEW |
14     while read c1 c2 c3 c4 c5 c6; do
15       printf "%-24s: \$ git log --oneline --no-merges ${c1} ^${c2}\n" "${c6}";
16     done
18 v14.7.7, 2014-09-27
19 -------------------
21 Thanks to Jan Chaloupka, Frantisek Holop, Matthias Kilian and
22 Peter Hofmann.  We welcome Frantisek, Matthias and Peter in THANKS.
24 NOTES, ChangeLog (packager-affine)
25 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
27 - 1. No need to change anything.
29   2.1. The build system has been reworked a bit, `conf.rc' has been
30        renamed to `make.rc'.
31   2.2. It is now possible to say 1/yes/true 0/no/false,
32        case-insensitive, e.g., "WANT_ICONV=yes".
33   2.3. Some options can be "require"d: a failure to fulfill the request
34        causes the configuration step to fail, e.g.,
36         $ make WANT_ICONV=require WANT_SMTP=require WANT_SSL=require all
38        Should fail unless all of iconv(3), BSD sockets and OpenSSL
39        are available.
40   2.4. This can be improved.  (E.g., there should be warnings if an
41        option is required that doesn't support this mode.  Or -- all
42        options should be requireable.  Hm.)
43   [topic/mandconf]
45 - The build system should now correctly auto-detect $MAILSPOOL and
46   $SENDMAIL!?! [c1a51bb]
48   P.S.: why are you guys setting those explicitly?
49   It is a BUG if that doesn't work automatically!
51   P.P.S.: Packager heroes! Packager heroes!! Packager heroes!!!
53   P.P.P.S.: .. and a nice weekend ;)
55 - "make test" will now regulary test S/MIME when available.
56   (A few tests have been added, to test the QP issue and to test the RFC
57   2047 MIME rewrite; which is still intermediate though.)
59 - 2014-09-27: add-on:
60   you may see more warnings for format strings which use the
61   "size_t" integer type, and in the future even more of these will
62   happen -- please read `INSTALL' again for more on that, but be
63   ensured that we still compile-time-assert that the format
64   strings fits the type size.  (Enable ISO C99 mode for your
65   compiler will cause any warnings to vanish.)
67 ChangeLog
68 ^^^^^^^^^
70 - FIXES: Maildir folders will now display correct content even after
71   `newmail'.  (Matthias Kilian; Frantisek Holop for nudging!) [158cfb6]
73   Also *newmail* was somewhat broken since introduction of `File'
74   command (missed updating a function argument back then). [58017a8]
76   And unfortunately the readonly state of a folder could be forgotten
77   after `newmail', too. [0cd5c9e, 0679ee4]
79 - *quote-fold*: fix faulty line length calculation when a line started
80   with a lot of leading whitespace. [731b8c9]
82 - Fix: calculation of required memory for quoted-printable encoding was
83   faulty for very long input that forces soft newline insertions.
84   (Peter Hofmann) [c299c45, b043cfc, d105d80]
86 - `headers' was falsely documented. (Jan Chaloupka) [ee76a42]
88 - Complete rewrite of RFC 2047 header encoding.
89   (Credit to Peter Hofmann because he peeked shitty MIME handling)
90   [0add96e]
92   Remark:
93   S-nail doesn't yet support RFC 2231 and thus our RFC 2047 support is
94   incomplete; also stateful character encodings, like ISO-2022-JP, are
95   still not supported and thus we're in fact non-compliant.
96   The same that it ever was.
97   Well, we're not alone, and e.g. mutt(1) offers
98   a "rfc2047_parameters=yes" option to deal..., also with us.
99   I really hate to say that.
100   But of course we all know that the mail standards are inherently
101   braindead anyway, right?  O-ho, yes, they are like that.
102   I hope S-nail isn't part of the problem no more in 2016.
104 - Oh, the [topic/retrim] in v14.7.6 actually missed a single occurance
105   of fixed Re: checking! [ed1c865]
107 - Allow $USER to be set to the empty string and no longer abort(3) if
108   the user is not known, but instead exit(3) with value 67 (BSD
109   EX_NOUSER constant from /usr/include/sysexits.h).
111     $ USER= LC_ALL=C s-nail ...
113   [a846fdb]
115 v14.7.6, 2014-08-15
116 -------------------
118 Thanks to Georg Schlisio.
120 Several bugfixes: it's definitely more than enough now, v14.7.8 in mid
121 2015 will have to and will definetely ship with a test series.
123 NOTES, ChangeLog (packager-affine)
124 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
126 - The global default nail.rc file now sets *sendcharsets* to
127   'utf-8,iso-8859-1', i.e., the order has been reversed.
128   (Georg Schlisio)
130   Also *bsdflags* is no longer set by default. [e39679b]
132 ChangeLog
133 ^^^^^^^^^
135 - Fix: in some configurations a `resend' message would end up with two
136   'Resend-Date:', instead of one such and a 'Resend-Message-Id:' field.
137   [21b9218]
139 - The internal exit status of a `mail' command will now be 0 upon
140   success and 1 on failure, not vice versa. [1112375]
142 - FIX: dependend on the set of retained / ignored etc. headers a MIME
143   part with a *pipe-CONTENT/SUBTYPE* set to the special '@' plain-text
144   command would try to execute a command equal to the name of the last
145   header of the MIME part, most often 'Content-Disposition:'.
146   [dee1fed,686a383]
148 - Detected that the `fwd' / `forward' command(s) used the false (imho)
149   mode to strip the address from the command line, now it's possible to:
151     ? fwd MSG-SPEC "my friend <his@addr>"
152   [1c4e164]
154 - New variable *reply-strings*.  It's more unlikely now to end up with
155   threads which read 'Re: Aw: Re: Aw:' etc. [topic/retrim]
157 - Because of user inconvenience, introduce a temporary hack not to mince
158   user input lines in history entries, even if this means that each and
159   every line is first duplicated before it is used.  So now the `fwd'
160   command as above will enter history in the given form. [f1ded4c]
162 ChangeLog (purely technical)
163 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
165 - Fixed one missing IMAP / IMAP-cache string relaxation restore.  (In
166   about six weeks or so this condition hit me once). [66ef04f]
168 P.S.: I still see an occasional IMAP-cache crash that occasionally
169   happens after several connects and diconnects without intervening
170   folder changes; after being bitten once by that even after commit
171   [cf7f63d] it seems this is a deeper structural problem, but i'll try
172   to track that down for v14.8.
174 v14.7.5, 2014-08-01
175 -------------------
177 Jan Chaloupka (jchaloup AT redhat DOT com) reported on nail-devel@ that
178 Heirloom mailx can be crashed by setting *smtp* in combination with with
179 *from* effectively set to a NULL string.  I first was optimistic, but it
180 turns out S-nail can, too.
182 v14.7.4, 2014-07-15
183 -------------------
185 Fixes maildir code which was broken in May (too).
186 Readds auto-detection of compressed boxes (i.e., if `$ Fi mybox' is
187 executed and `mybox' doesn't exist, but `mybox.bz2' does, then the name
188 is automatically expanded and `mybox.bz2' is used instead).
189 Sorry for the inconvience.
191 v14.7.3, 2014-07-14
192 -------------------
194 Thanks to Mantas Mikulėnas (grawity AT gmail DOT com).
196 This is a bugfix release which fixes a regression in the handling of
197 user credentials when *v15-compat* is not set, introduced in v14.7.1,
198 quoting Mantas:
200   In other words, $folder *requires* the @ to be percent-encoded, but
201   $password requires the *opposite*.
203 And that is not valid when *v15-compat* is not set.
205 v14.7.2, 2014-07-12
206 -------------------
208 Thank you: Gavin Troy, Bob Tennent (rdt AT cs DOT queensu DOT ca),
209 Tarqi Kazan.
211 NOTES:
212 ^^^^^^
214 v14.7.2 brings incompatible credential lookup changes when *v15-compat*
215 is set; the lookup order now is:
217 - *user-HOST*, *user*, [.netrc] ...
219 - *password-USER@HOST*, *password-HOST*, *password*, [.netrc] ..
221 Changelog in reverse order, oldest first.
223 ChangeLog (packager-affine)
224 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
226 - New configuration option WANT_AGENT to support *agent-shell-lookup*
227   (, -HOST, -USER@HOST) lookups of potentially encrypted password
228   storage (inspired by Gavin Troy) [b2d41d3,516a7f0]
230 - MAILSPOOL is now automatically set to /var/spool/mail if that
231   directory exists, only otherwise we use /var/mail [4a83018]
233 - WANT_GSSAPI is again enabled by default - Tarqi Kazan has correctly
234   pointed out that the system environment at compilation time is likely
235   to reflect the politics and/or preferred configuration of packagers,
236   and self-compilers have always the chance to configure themselves
237   (Tarqi Kazan) [398eb29]
239 ChangeLog
240 ^^^^^^^^^
242 - `un{,save,fwd}{ignore,retain}': let '*' mean 'all fields' [a1f1da9]
244 - Bugfix: `setenv' takes 1-1000 arguments, not exactly 2 [daf2ea8]
246 - New command: `varedit' edits the value of an existing variable in
247   $EDITOR [93070d2]
249 - New commands: `File' (and `Folder') explicitly open a mailbox in
250   readonly mode, thus finally offering the possibility to avoid flag
251   updates etc. whenever so desired [b1f5f2d]
253 - Bugfix: since May the header display would display tabulators in an
254   UTF-8 environment as replacement characters [870b314]
256 - *mime-counter-evidence* now is a valued option.  Set bit two (value
257   two) and the detected real MIME type is carried along with the MIME
258   part so that it is used instead of `application/octet-stream' to
259   lookup possibly registered *pipe-CONTENT/SUBCONTENT* handlers.
260   (Bob Tennent) [81473f8]
262   Also pipe handlers will now be passed several MIME informations via
263   environment variables, please see the manual for more.
264   (inspired by Bob Tennent)
266 - Resource file loading now prints a diagnostic when loading was stopped
267   due to a processing error.  This behaviour is also required by POSIX.
268   (Bob Tennent) [fd42684]
270 - Incompatible changes in credential handling, as above.
271   [25d7735,3cdb6a3]
273 - *netrc-lookup* is now a real chain and has -HOST and -USER@HOST
274   variants (though the latter only for password lookups) [59fc226]
276 - .netrc machine names are now lowercased before use [28c6fee]
278 - The manual has seen some reorderings, a TOC will be shown if you
279   '-dWANT_TOC=1' when using *roff(1) (as has been done for the online
280   manual)
282 - There is a new file `THANKS' [6b5cb3e]
284 ChangeLog (purely technical)
285 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
287 - IMAP and IMAP cache now use string relaxation which *drastically*
288   reduces memory usage on large mailboxes [e5598ce]
290 - Fixed compilation on old OpenBSD installations without wordexp(3) as
291   well as with GSS-API and WANT_AMALGAMATION and now using #pragma's to
292   get rid of some warnings [topic/ccstuff]
294 v14.7.1, 2014-06-24
295 -------------------
297 Thanks to Georg Schlisio (g DOT schlisio AT dukun DOT de),
298 Wiesław Magusiak (wiemag AT poczta DOT onet DOT pl), Tarqi Kazan and
299 Karol Blazewicz.
301 Very special thanks: Gavin ".. .. Speeding kills. .." Troy from Ireland
302 and Ypnose "Gloria?? C'est une mouton!" from France.
304 Changelog in reverse order, oldest first.
306 ChangeLog (packager-affine)
307 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
309 - WANT_NOGETOPT is gone. [73f0605]
311 - WANT_NETRC: new option (on by default; see below). [topic/netrc]
313 ChangeLog
314 ^^^^^^^^^
316 - Manual slightly improved in respect to LC_ALL etc. settings.
317   The knowledge treshold value is much too high for a normal user;
318   i hope that at some later time we can offer much more (at least
319   optional) automation on the protocol level (e.g., timeout values,
320   protocol features supported by servers etc.), at which time we will be
321   able to make the manual more user friendly. (Georg Schlisio)
322   [56fab16,bd1e11f; ArchLinux Wiki]
324 - The `@' search command has new "header" keyword, which searches in all
325   headers.  Shortcuts: "<" = "header", ">" = "body", "=" = "text".
326   ("body" and "text" still perform full text searches _including_ MIME
327   part header content.)
328   [b0138a7]
330 - The -O command line option is legacy and will vanish in v15.0.
331   Arguments to the MTA can henceforth be passed after a `--' separator
332   on the command line, as in
333     echo bla|s-nail -vvd -s sub some@where -- MTA ARGS MADE EASIER
334   [topic/mtaarg]
336 - New *sendmail-arguments* option; content will be (converted to list
337   and) joined onto other MTA command line arguments (Wiesław Magusiak)
338   [topic/mtaarg]
340 - *colour-pagers* is gone -- instead we have *colour-pager*, which is
341   a boolean and off by default.  We again set LESS (and LV) environment
342   variable(s) to automatic turn on colour support in $PAGERs, but only
343   if the variable in question is not yet set.  (That is -- in order to
344   get coloured $PAGER you at least have to set *colour-pager* now.)
345   (Tarqi Kazan) [b794f5e]
347 - Terminals no longer need to be added to *colour-terms* if their name
348   (in $TERM) includes the string "color". (Gavin Troy) [ce2c7f6]
350 - Karol Blazewicz opened a discussion in the ArchLinux Forum (s-nail
351   14.7-1 doesn't work [1]) but i didn't realize his actual problem --
352   luckily Gavin Troy wrapped his head around the real problem, and that
353   finally opened my eyes against a whole can of worms in the new URL
354   and credential handling!
356   Then Ypnose also came along and reported an issue with IMAP handling
357   that was related to the compatibility credential handling of the new
358   URL and credential layer.
360   (Gavin Troy, Ypnose, Karol Blazewicz) [a5c40ba]
361   [1] <https://bbs.archlinux.org/viewtopic.php?id=182653>
363 - We now also have -HOST and -USER@HOST *smtp-use-starttls*. [bfb186a]
365 - Gabby history entries will now be saved and restored as such, in case
366   *history-gabby-persists* is set.  (For this to work properly
367   a possibly existing history file needs to be reset.) [b5502cc]
369 - We now have optional .netrc support (*v15-compat* set).
370   Set *netrc-lookup* and we'll look in $NETRC / ~/.netrc for user
371   credentials.  The `netrc' command will show or clear the entry cache.
372   E.g., this is my new account macro:
374    set v15-compat ssl-method=auto
375    set netrc-lookup
376    set smtp=smtps://smtp.yandex.ru:466 smtp-auth=plain smtp-hostname= \
377          hostname=yandex.com
378    ghost xp 'fi %:pop3s://pop.yandex.ru'
379    ghost xi 'fi %:imaps://imap.yandex.ru'
381   As an extension to the .netrc syntax we support a single
382   introductional subdomain wildcard, e.g., my relevant ~/.netrc entry:
384     machine *.yandex.ru login NAME password PASS
386   Following a suggestion of Gavin Troy we have multi account support,
387   i'm not quite sure wether this is portable across .netrc using
388   applications, e.g., i could have written the above like
390     machine *.yandex.ru login NAME
391     machine *.yandex.ru password PASS
392     machine *.yandex.ru login NAME2
394   (I hope i don't lie and this really works.)
395   (Suggested by Gavin Troy and Ypnose, testing and feedback Gavin Troy)
396   [topic/netrc]
398 - Add primitive support for RFC 3798 via the new
399   *disposition-notification-send* variable.  This is not yet
400   a truly conforming implementation (it simply injects the necessary
401   header) and it requires the *from* variable to be set.
402   More in the far future, sorry. (Wiesław Magusiak) [ca31d32]
404 ChangeLog (purely technical)
405 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
407 - Interrupt protection during (recursive) macro calls with `localopts'
408   on should now no longer be crashable at all.  Quote [a4e85c0]
409     It is of course all pretty intermediate until we have a signal
410     manager and we can actually poll signal states at those places where
411     we are capable of and desire to handle them.  But it should work
412     today and look nicer than it did.
413   [25caeb9,592499f,a4e85c0]
415 - `ghost' handling performs more strict name checking on ghost names in
416   order not to allow names which would later not be parsed as a whole.
417   [1523a6d]
419 - Dropped catopen(3) support (we never really had it)!  We will have
420   a new S-nail-specific gettext(3)-alike thing in v14.8.
421   [topic/i-wanna-have-a-dog]
423 v14.7, 2014-06-07
424 -----------------
426 Thanks go to Tarqi Kazan (tarqi AT cfs DOT or DOT gs) and Johannes
427 Löthberg (johannes AT kyriasis DOT com), as well as Martin Neitzel.
428 (And the winner is... Gavin Troy for his role in "Silence from Ireland".
429 Yay!)
431 Notes
432 ^^^^^
434 - Since S-nail now performs more-or-less proper percent-encoding as per
435   RFC 3986 users of *imap-cache* have to (either throw away and recreate
436   or) adjust their local cache, e.g. as follows (adjust CACHEDIR and
437   echo(1) to mv(1) as necessary; won't work with paths with whitespace):
439   $ CACHEDIR=${HOME}/traffic/.mail-cache; \
440   find ${CACHEDIR}/ -depth -type d |
441   while read d; do
442     b=`basename ${d}`
443     r=`echo ${b} | sed -e s/:/%3A/g -e s/@/%40/g`
444     if [ ${b} != ${r} ]; then
445       d=`dirname ${d}`
446       echo ${d}/${b} ${d}/${r}
447     fi
448   done
450 ChangeLog
451 ^^^^^^^^^
453 - New variable *history-gabby* can be set to add much, much entries into
454   the history than is done normally.
455   For the NCL only, setting *history-gabby-persist* will cause those
456   entries to be saved into *NAIL_HISTFILE*, too, which they are not by
457   default with it (the other command line editors should always save).
458   [6026507]
460 - The `online' alias for `connect' has been obsoleted. [d5cfde4]
462 - New CONFIG=MAXIMAL make option. [c0d4087]
464 - Support compilation on new OpenBSD with their reduced OpenSSL clone.
465   This topic also includes the real solution for getting rid of
466   a strcat(3) warning that i reintroduced with s-nail-14_5_2-smime.patch.
467   [topic/obsd56]
469 - Our -r command line option is now mapped to a `-f' MTA option -- the
470   sendmail(1)-compatible `-r' is long obsoleted! (Johannes Löthberg)
471   [d0ead39]
473 - New `elif' command so that we now have if..elif..else..endif.
474   If the optional regular expression support is available the new
475   conditions `=~' and `!~' can be used to perform (case-insensitive)
476   regex matching with `if' and `elif'. [topic/condsplus]
478 - New `~R' tilde escape (like `~r', but indent lines). [fae1f29]
480 - Improved multibyte-safety (e.g. for *prompt*) and a bit of
481   compatibility ("support" would be a wording much too strong) for
482   bidirectional text via the new *headline-bidi* variable.
483   [topic/unibidi, topic/mbbidi]
485 - Diversified behaviour of -v command line option as well as *verbose*
486   to support multiple levels of verbosity; the latter is now ternary
487   when set and boolean when unset.
488   This was the ground on which SSL certificate validition verbosity was
489   implemented (*verbose* level 1: certificates, level 2: network
490   communication et cetera), though much is left to do.
491   This has been suggested long ago by (Martin Neitzel). [topic/smverb]
493 - ^C in compose mode with *ignore* set acts now POSIX compatible
494   [0275d09]
496 - If *encoding* is set to base64 then we don't ignore that user
497   wish and use quoted-printable (when 7bit doesn't suffice) [2ca201f]
499 - New `urldec' and `urlenc' commands. [63e869e, fbd95e8, 0af5b1b]
501 - New `setenv' and `unsetenv' commands. [5e2ed79]
503 - Support for GSS-API authentification has been added (request and
504   testing by Tarqi Kazan).
506   Note that the following implicit relation is gone:
507     *smtp-auth*
508       If set to `login', or if unset and smtp-auth-user is set, `AUTH
509       LOGIN' is used
511   This topic branch also added support for the SUBMISSION protocol of
512   RFC 6409, so re-reading the *smtp* manual may bring benefits.
513   [topic/smtp]
515 - A new, backward-incompatible URL syntax and credential lookup scheme
516   has been introduced that is accessible when the new *v15-compat*
517   variable is set.  If used, credential lookup occurs before a network
518   connection is made.
520   The new manual section "URL syntax" describes the new credential
521   variable chains, and documentation of *from* should be read again, as
522   i now also refers to the new *smtp-hostname* variable.
524   Note that the generated `Message-Id' has also changed.
526   (Messy old way pointed out by Tarqi Kazan)
527   [topic/url, topic/cred]
529 - `resend' should be truly fixed and (fwiw) can also resend to pipe and
530   file addressees. [topic/resend]
532 - Support for empty lines in macro and account definition blocks (as
533   required by POSIX for startup files in general) [43cdf92]
535 - The nail command line editor gained the possibility to use PgUp /
536   PgDown / Home / End instead of z[-+0$] commands on xterm-compatible
537   terminals; and ^O equals a `dp' there, too. [8c57be2, 7c30e61, 95e672f]
539 v14.6.4, 2014-04-07
540 -------------------
542 Many thanks to Gaetan Bisson.
544 ChangeLog
545 ^^^^^^^^^
547 - Avoid segmentation faults with -L option if s-nail is opened on
548   non-existent mailboxes, e.g. '$ MAIL= s-nail -Lx'.  (Gaetan Bisson)
549   [e6c86da]
551 v14.6.3, 2014-04-05
552 -------------------
554 Thanks and greetings to Gavin Troy, Gaetan Bisson and Tarqi Kazan (tarqi
555 AT cfs DOT dyndns DOT biz).
557 ChangeLog (packager-affine)
558 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
560 - WANT_AUTOCC knows that clang(1) version 1 can dig -Wstrict-overflow=5.
561   [2f77640]
563 - '$ make test' should work even if you are not steffen.
564   (Gaetan Bisson, Gaetan Bisson, Gaetan Bisson, Gaetan Bisson,
565   Gavin Troy, Gavin Troy) [8b796ba]
567 ChangeLog
568 ^^^^^^^^^
570 - *autoinc* is gone -- this is *newmail*. [07a8462]
572 - Working with large(r) IMAP boxes should work again without causing
573   segmentation violations. (Gavin Troy) [761dd87, b0ce180]
575 - With our builtin getopt a.k.a. WANT_NOGETOPT=1 usage of the -L option
576   caused segmentation violations. (Tarqi Kazan, Gaetan Bisson) [f2c2646]
578 - The decision wether we need $PAGER or not now also incorporates the
579   informational lines we inject for messages. [316b4cd]
581 - Drop `defines', add `unaccount', rename `undefine'..
582   The `defines' command has been united with `define' -- just like
583   `account' will list all defined accounts when used without arguments
584   `define' will now do so for macros.  And `undefine' is the new name of
585   `undef'.  The new command `unaccount' can be used to delete all given
586   accounts, in equal spirit to `undefine' and macros.
587   All of this is still vulnerable against recursivity, e.g., deleting
588   an executing macro still works, but don't that. [b0b3275]
590 - Rename `var-inspect' to `varshow'; silly oversight that `var-inspect'
591   will try to lookup a variable "-inspect".  Ouch. [afffd30]
593 - Without HAVE_ICONV the character set iterator sofar used
594   *charset-8bit* as the last resort, whereas it should have used
595   *ttycharset*.  Fixed.
596   P.S.: All this still preliminary, we await the MIME and send layer
597   rewrite to calm down the stuff for real. [edc3226, df9aefd]
599 - During `~@' editing it is possible to leave the possibly endless
600   character set selection loop by interrupting via ^C.
601   In the meanwhile this effectively drops the currently edited
602   attachment and leaves the entire attachment selection session; it
603   doesn't make sense to make it any better until we have our signal
604   manager and stop jumping around.
606   This changeset should also fix dangling Content-Xy MIME information of
607   attachments which were in the same slot before, e.g., if #1 was
608   a message attachment and that was changed on-the-fly to be a real file
609   attachment then the Content-Description would still have stated that
610   it is a message attachment.
611   [07a8462]
613 ChangeLog (purely technical)
614 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
616 - Since it has been decided to remain compatible to ISO C89 we cannot
617   use the ISO C99 `z' format string modifier (printf(3)).
618   Since quite some time we make efforts to provide our own `ZFMT' macro
619   (in `nail.h') which provides somethint compatible, but on 32-bit
620   platforms compilers often complain nonetheless.
621   Therefore we now also have a compile-time assertion that proves that
622   our `ZFMT' macro is really correct. [397e4d1]
624 v14.6.2, 2014-03-01
625 -------------------
627 Many thanks to the perpetual Gavin Troy.
629 - Faulty notational change of system call return values from `<0' to
630   `==-1' caused endless waitpid(2) loop. [d6f316a; test(!): 79fd761]
631   (Gavin Troy)
633 - (GLibC) STD I/O overoptimizes rewind(3) so that underlaying file
634   descriptor offset is not reset to 0.  Generalize the already
635   used `really_rewind()' hack and use it not only in
636   `savedeadletter()' but also in `page_or_print()'.  It is likely
637   that this not also fixes `history' listing but also some other
638   things which go through the pager, dependend on the setting of
639   *crt* etc., and on at least GNU/Linux systems. [463660f]
641   Note: standard I/O does NOT offer a possibility to do this in
642   a non-hackish way.  It is thus likely that S-nail will gain
643   a completely new I/O layer in the future.  That'll also be faster.
645   P.S., 2014-03-04:
646   This note is false: POSIX Issue 7 overloaded the meaning of
647   fflush(3): when used on readable streams the file offset of the
648   underlaying file descriptor is adjusted to that of the stream.
649   (nail.h: adjust really_rewind(): POSIX Issue 7 defined a way..)
650   uses this official approach instead if _POSIX_VERSION>=200809L.
652 - Old shells will now correctly execute an error-condition
653   execution path in `mk-conf.sh'. [afef55f]
655 v14.6.1, 2014-02-22
656 -------------------
658 Thanks to Andy Switala (andy DOT switala AT gmail DOT com).
659 And thanks to all package maintainers for their stamina.
661 At the first workday after the release i've run into a bug that was
662 caused by an oversight, a double-Fclose() that would be harmless if we
663 wouldn't forcefully panic() when we encounter it!
665 So i've spent another week on a review, and despite fixing many
666 additional notational oversights i haven't found more oversights of
667 newly introduced problems.  On the other hand i've found and fixed some
668 old problems during the review, and tweaked some other things:
670 - The INSTALL file now has a `Current codebase state' section.
672 - Commands invoked via `!' should now be interruptable.
673   I'm afraid the exit status of such a command will not be reflected by
674   the return value of the `!' command yet, but hey, at least `!sleep 10'
675   can now be interrupted -- try this with another Berkeley Mail!
676   [381ff46]
678 - All credential prompts should now be interruptable.
679   (Inspired from Andy Switala) [c3bb2a2]
681 - 'make test' will now test a silly S/MIME case when WANT_DEBUG (or
682   'make devel') was used. [8cff17f]
684 - *batch-exit-on-error* should now look at the exit status of *every*
685   command when the command loop ticks. [c7e7d53]
687 - The new `[?name-list]?search-pattern' search expression has been
688   changed to `[@name-list]@search-pattern' -- like this it doesn't clash
689   with the `?' help command and can thus be used on a line by itself,
690   causing the default command (`next') to be invoked on its' result,
691   shall there be one.  Ok, yes, that was surely also an oversight.
692   [8368f70]
694 - *attrlist* must now be exactly 13 characters, just as it should
695   be.  An error message is printed if not.  It was always komisch,
696   but i'd buggified it somewhen in the past.  Now fixed.
697   [part of 0d4e934]
699 - The NCL WANT_TABEXPAND feature now also works if *newfolders* is
700   set to `maildir'.  Yet, if a folder was assumed to be of maildir
701   type, shell globbing would not occur. [part of f5c184c]
703 - The `X-Decoding-Data' S/MIME header field was set to the epoch
704   origin instead of NOW in v14.6.
706   Also the `certsave' command now supports file globbing (i.e.,
707   '~/.certs/' should end up in your $HOME now).
708   [both part of 7e0aec7]
710 v14.6, 2014-02-15
711 -----------------
713 + With this release the S-nail codebase has been converted to my usual
714   style of function-code-flow and notation.
716   ?0[]$ git diff --shortstat v14.5.2..HEAD
717    55 files changed, 28065 insertions(+), 25356 deletions(-)
718   ?0[]$ git diff --ignore-all-space --shortstat v14.5.2..HEAD
719    55 files changed, 14664 insertions(+), 11955 deletions(-)
721   Maildir and S/MIME support have been restored, and a MIME bug that
722   could have led to missing data in header display+ has been fixed.
723   Ah, and users of compressed boxes should now feel luckier, too --
724   at least once they've realized that the compress extension is no
725   longer appended automatically, but must be given explicitly.
727   Thus: i hope that all those i-am-new-to-the-codebase bugs i've
728   introduced over a year ago have been found and fixed, and that
729   v14.6 is the true "sweet sixteen" (months of maintainership).
731 ChangeLog (packager-affine)
732 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
734 - If WANT_AMALGAMATION is set, `-pipe' will be added to our CFLAGS
735   (which are only honoured with WANT_AUTOCC, of course).  [1330411]
737 - New configuration option: WANT_IMAP_SEARCH, enabled by default.
739   The regular expression support for IMAP-style search expressions has
740   been removed again: it changed the IMAP search semantic in that it
741   couldn't be executed on the server, but only local, and the syntax
742   sucked, too.  (And we have a new `?' search expression.)  [402b7c6]
744 - CONFIG=MEDIUM and CONFIG=NETSEND now both WANT_REGEX.  [dee954e]
746 - The `make test' target should *really* work gracefully, now that usage
747   of the `-#' command line option also sets the folder to be opened to
748   `/dev/null'.  (Still no `void' box in sight.)  [0119d514]
750 - All published patches may also be found in a new [patches] branch.
752 ChangeLog
753 ^^^^^^^^^
755 - Several fixes that saw published patches (with equivalent
756   functionality), and are thus described in NEWS, are included:
758   . s-nail-14.5.2-sort-alt.patch
759     Fixes a hasty commit that introduced string relaxation in a faulty
760     way.  [5e75529]
762   . s-nail-14_5_2-mimeheader.patch
763     Fixes data loss if multiple MIME encoded-words follow each other in
764     header bodies.  [c81afce]
766   . s-nail-14_5_2-maildir.patch
767     Effectively restores proper maildir support.  [1c2563b, 13f325f]
769   . s-nail-14_5_2-smime.patch
770     Fixes an off-by-one error and, in effect, restores S/MIME sign and
771     encryption etc. support.  [e759f75]
773 - The `screen' terminal type is by default recognized as being
774   colour-capable.  [e759f75]
776 - With the NCL command line editor and WANT_TABEXPAND hitting <TAB>
777   should now act as if an "implicit asterisk" had been given in case
778   there was no expansion of the original user input; e.g., '? ls <TAB>'
779   may exceed your line limit now ;).  [0910a8f]
781 - The S/MIME cipher list was outdated, RFC 5751 requires AES-128 as
782   the default, the RC2 ones are long obsoleted (etc.).  Also we now
783   should handle that OpenSSL may not support individual algorithms.
785   Note: we use the option value `des3' for `DES EDE3' from now on!
786   (Maybe see *smime-cipher-user@host* manual entry.)
788   *ssl-method* may now also be assigned the new (default) method `auto'
789   explicitly.
790   [2472670]
792 - Messages will now be stored in a set *record* even if only file or
793   pipe addressees were given.  [a11935b]
795 - Support for xz(1) compressed mailboxes has been added.
796   (The `Can't canonicalize' warning for compressed boxes had the same
797   cause that made maildir usage impossible, but i don't feel _too_ bad
798   because looking into the code a bit revealed that the *newmail*
799   mechanism never worked for such boxes anyway.  And will for a while.)
800   [7fd9979]
802 - S-nail now supports nested if..else..endif conditionals.  [3c22c04]
804 - The NCL command line editor now locks its' history file when it reads
805   and writes it, so as to protect against concurrent usage.  [c3a39ce]
807 - You can now say 'fi%', 'fi&', 'p&10' and `ghost ps '!ps axu'' followed
808   by 'ps|grep nail'.  [c3266c6]
810 - Invocation cleanup: usage of -f and -u is mutual, -H and -u is ok, -u
811   in send mode not.  [fa0a0aa]
813 - New message specification: `[?name-list]?search-string' will search
814   in locally available messages.  If the optional `?name-list' part is
815   given, that specifies the (comma-separated list of) header fields to
816   search in.  The special names `body' and `text' can be used to search
817   in message bodies alone and bodies including the headers fields,
818   respectively.  Note that "message bodies" unfortunately still means
819   "including headers of attachments and attachments themselves", and
820   until some later time.  [61bb460]
822 - The new command line option `-L spec-list' prints a header summary of
823   only those messages that comply to the specification list `spec-list'.
824   If -L and -H are used in combination, no summary is printed at all,
825   but the exit status reports wether `spec-list' would have matched some
826   messages or not.  [934e12c]
828 ChangeLog (purely technical)
829 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
831 - Most of the work was changing the code-flow of the entire codebase to
832   my usual style of programming, with a single function entry and
833   a single function exit, including the addition of N(ot) Y(et) D(ead)
834   points of interest, which finally enabled me to get rid of (sic!)
835   using a debugger for S-nail development.  Just compile via 'make
836   devel', and in case of a crash you should get a nice backtrace
837   listing.  (You use IMAP, do you?)
839   However, because practically every line of code has been touched, this
840   caused some other changes along the way, e.g., the handling of
841   temporary files was changed completely (the formerly used Ftemp()
842   function has been replaced with a new Ftmp(), which handles unlinking
843   itself as necessary etc.), it was detected that the S/MIME support was
844   no longer compliant to any RFC, some resource leaks have been
845   eliminated...  It is likely that a change so large introduced some
846   other flees and flaws, however.  But it looks good so far.
847   Thank you.
849 v14.5.3, 2014-02-15
850 -------------------
852 + No official release, only exists as git(1) tag.
854 v14.5.2: fix 4: 2014-02-15 (2014-02-14)
855 ---------------------------------------
857 - s-nail-14_5_2-smime.patch
858   Fix a very stupid off-by-one error that i've introduced
859   in [7bdf330] (OpenBSD 5.3: sigh, address strcpy(),strcat()
860   etc., 2013-06-01).
861   Until we've changed the used data from string to something
862   line-wise, use strcat(3) again.
864 v14.5.2: fix 3: 2014-02-10
865 --------------------------
867 - s-nail-14_5_2-maildir.patch
868   maildir folders would have caused problems in environments which
869   provide the realpath(3) function: beside a "cannot canonicalize PATH"
870   warning the finally used path would be wrong (`test3' would end up as
871   `test3/test3'), so that any further access would try to use the wrong
872   path.  Please read the description of this patch and/or the commit
873   logs of the commits [1c2563b] and [13f325f].
875 v14.5.2: fix 2: 2014-02-05
876 --------------------------
878 - s-nail-14_5_2-mimeheader.patch
879   A header like
881     Subject: ehm, .getElementById("blink") needs <span
882      =?US-ASCII?Q?id=3D"blink">,?= not =?US-ASCII?Q?class=3D"id"?=
884   would yet be displayed without the " not " in between the two encoded
885   words because of faulty "encoded-word-continuation" detection (note
886   the quotation marks).  The error path could also have been seen in
887   mail forwarding and in faulty searching etc.
888   This patch is in a row of fixes for my hasty [0f9ad93] from 2013-03-12
889   that already caused the v14.2 minor release (because of [b608c6b] from
890   2013-03-14).  Those with mercy may read the commit message of [c81afce].
892 v14.5.2: fix 1: 2014-01-30
893 --------------------------
895 - s-nail-14_5_2-sort.patch
896   Reverses (sort(),thread(): use srelax()!, 2014-01-18, [a9b67e9]),
897   which was a hasty commit of an untested diff that i've added few
898   minutes beforehand:
900     As a rather careless last-minute change i've added string relaxation
901     to threaded and sorted display, but it's really one more step towards
902     lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
904   An alternative, forward-heading patch that keeps string relaxation has
905   been pushed to [master] as [5e75529] and is also available as
906   s-nail-14_5_2-sort-alt.patch.
908 v14.5.2, 2014-01-18
909 -------------------
911 Thanks to Ypnose, Sunil Nimmagadda and Gavin Troy.
912 Gavin Troy *really* deserves special thanks for facing [next]!
913 And i want to dedicate the new coloured message display functionality
914 to John Dodson and Ypnose.  Thank you.
915 (And best wishes to beautiful Australia!)
917 ChangeLog (packager-affine)
918 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
920 - All utilities can now be overwritten during configuration so that
921   their values are fixated in the generated makefile (`mk.mk').
922   I.e., talking about MAKE=, STRIP=, awk=, cat=, chmod=, cp=, cmp=,
923   grep=, mkdir=, mv=, tee=.
924   rm= and sed= have to be overwritten from the command line, they're
925   needed before `conf.rc' is read.
926   [5c03347, 072ec65, 39a00ab, 23a1245, ?]
927   (Ypnose)
929 - The release tarball is now also available in a xz(1) version.
931 - New configuration option: WANT_COLOUR, by default enabled.
933 - 'make test' should now really work, even if the running user has
934   a mailbox with content. [f223a91]
936 - WANT_AUTOCC is now by default enabled, so as for normal users which
937   don't have the need to embed into a defined packaging environment.
938   [d7e4e31]
940 - Installation no longer strip(1)s away debug symbols if WANT_DEBUG was
941   enabled. [6d075c6]
942   (Gavin Troy)
944 ChangeLog
945 ^^^^^^^^^
947 - Fixes to some bugs that are present since the first cvs(1) commit of
948   Heirloom mailx(1); includes that *ssl-key-user@host* should now work.
949   [4405a2cc, 9770c26f, 692976b9]
951 - Some off-by-XY fixes, thanks to the debug memory canaries.
952   [19b2b0d, 202506e, 43df6e4]
954 - Fixes for (other) stupidisms (of mine): [1c2161f]
956   This includes true implementation of in-memory history limit for the
957   NCL, which was the final and real solution to a segmentation fault
958   that Gavin Troy had to deal with on [next]. [1089f2b]
959   (Gavin Troy)
961 - For completeness: new command `var-inspect' shows information about
962   all given options.  Mostly ment for implementing future tests.
963   [topic/okeys]
965 - The `pipe' command no longer embeds message information into the
966   data passed through to the command (when *piperaw* is set).
967   [ef5ecc6 (part of topic/colour)]
969 - Simple coloured message (header) display is now possible.  Please
970   read the new manual section "Coloured message display", use
971   *colour-disable* to turn it off.  (It is enabled by default if it
972   knows the terminal is capable and, if used, the pager can, too.  Note
973   we now set LESS=FRXi when starting PAGER and no LESS= is in the
974   environment.)
976   Dedicated to John Dodson and Ypnose.
977   [topic/colour, c6e84c7]
979 - The `if', `else', `endif' syntax has been extended.
980   You can now "if 0" (never), "if 1" (always), "if $OPTION" (boolean
981   check for OPTION) and "if $OPTION == 'VALUE'" as well as "if $OPTION
982   != 'VALUE'".  Unfortunately it is still not possible to use
983   conditionals inside conditionals. [0fb2ae7]
985 - -# now also sets MBOX=/dev/null. [4be2f1e]
987 - The NCL command line editor now supports cursor keys when the terminal
988   produces xterm(1)-compatible keycodes ('ESC' + '[' + [DACB] for left,
989   up, right and down, respectively).  What a thrill, yay!!! [0cbf672]
991 - New (optional) command: `history': show or clear command line history,
992   or select a specific command line from in there.
993   History works a bit different now, and should no longer include
994   command lines which include specific message numbers; more to come.
995   [59c6195, topic/hist2]
997   I plan to join all the history management and use only the one that is
998   part of NCL now, hooking it into editline(3) and readline(3).  That
999   would shrink tty.c a bit and also introduce duplicate elimination for
1000   readline(3).
1002 - The new ~u and ~U tilde escapes work like ~f and ~m, respectively, but
1003   don't include any header lines.  Inspired by a patch from
1004   Sunil Nimmagadda on openbsd-tech@.  [c37b8b3]
1006 - The `|' command should work again -- it has stopped working on
1007   2013-09-09 when i've accidentally changed the command name from `|' to
1008   ` | '. [5a8378d]
1009   (Gavin Troy)
1011 - As a rather careless last-minute change i've added string relaxation
1012   to threaded and sorted display, but it's really one more step towards
1013   lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
1014     ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
1015       Buffer allocs ever/max simultan. : 14/14
1016       Overall alloc count/bytes        : 17165/881088
1017       Cycle maximums: alloc count/bytes: 16906/876984+0
1018     ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
1019       Buffer allocs ever/max simultan. : 0/0
1020       Overall alloc count/bytes        : 16515/841816
1021       Cycle maximums: alloc count/bytes: 16256/837712+829560
1023 ChangeLog (purely technical)
1024 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1026 - We now have debug canaries for all memory sources now that [8419d44]
1027   added them to the "string dope".
1029 - The most work has been done on our value system, which manages the
1030   binary and value options, like *folder* etc.
1031   It is now based on enumerations, i.e., constant integers, not on
1032   strings.  This of course only relates to non-dynamic options.
1033   Anyway, this saves us key hashing and allows more compact data
1034   representation in general (see the new header `okeys.h' for more).
1035   [topic/okeys]
1037 v14.5.1, 2013-12-27
1038 -------------------
1040 ChangeLog (packager-affine)
1041 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1043 - The build system *only* uses the automatically detected $CFLAGS and
1044   $LDFLAGS if WANT_AUTOCC=1.  I.e., even unset or empty $CFLAGS and
1045   $LDFLAGS are not touched until then.
1046   (We do however still set $CC if that is unset or empty or set to the
1047   plain string "cc".) [856625f6]
1049 ChangeLog
1050 ^^^^^^^^^
1052 - Fixed segmentation faults / bus errors when setting *nofolder*
1053   / *line-editor-cursor-right* to the null string (only with WANT_NCL),
1054   respectively. [d1f1a19b, 21e5c285, 9f6ff25d]
1056 - *prompt* handling is now really POSIX compliant (thus no prompting
1057   occurs not only for 'set noprompt', but also for setting *prompt* to
1058   the null string).
1060   This was indeed a rather large changeset that also introduced the new
1061   *prompt* escape character \&, which expands to `?' by default and to
1062   `&' if *bsdcompat* is set.
1064   Like that we now can simply assign "\& " to *prompt* at program
1065   startup, which (a) allows to do 'set noprompt' without error (once)
1066   and (b) allows for POSIX compliance in respect to prompt handling
1067   without any complicated conditional code, but (c) gives us the
1068   opportunity to continue to support BSD prompts.
1069   [0dfe53db]
1071 - For completeness: new command: `features'.  (Rather useful for being
1072   able to implement more tests in the future, and act according to what
1073   is really compiled into the tested binary.
1075 - The `-#' command line option now also sets *quiet* by itself.
1076   [7b5a5c87]
1078 - nail.1: a newly introduced empty line in the manual produced error
1079   messages on some systems.  Fixed.
1081 - The return value of the `mimetypes' command has been reversed and
1082   should now be fixed. [acf56ac52]
1084 - In threaded display the Subject: followup suppression no longer
1085   takes into account invisible messages.
1086   Also, rudely hack in a messages-already-written-in-this-round counter,
1087   so that the followup suppression knows when "the top of the screen" is
1088   reached, which (seems to) help(s) against missing subjects up there as
1089   well as after a `newmail'. [topic/subject]
1091 - Added a WANT_REGEX=1 toggle in `conf.rc'.
1092   When we find regular expressions then a new regex-enabled IMAP-style
1093   search is available (see the manual for more) [1ec8fe68]
1095     ? f (/or subject ^\[S-nail (subject ^\[nail-devel))
1096     ? f (/subject ^\[S-nail) (/subject ^\[nail-devel)
1097     ? f (/subject "^\\[(S-nail|nail-devel)")
1099   I'm looking forward for being able to add another, simplified, syntax.
1101 ChangeLog (purely technical)
1102 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1104 - The cc-test.sh has seen some tweaks, for easier future extension, and
1105   for adding a test for [d1f1a19]. [several, mentioned: 21e5c285]
1107 - On systems without a real wordexp(3) implementations deadlocks could
1108   occur because we sometimes hold_all_sigs() to avoid longjmp(3)s away
1109   (and will do so for quite some time, still), and that resulted in the
1110   SIGCHLD that reported the exit of the started subshell to be blocked,
1111   too (e.g., after '? *.h<Tab>': endless hang).  Fixed.
1113 v14.5, 2013-12-19
1114 -----------------
1116 Many thanks: Gaetan Bisson, William Yodlowsky, Gavin Troy,
1117 Thomas (wasd AT gmx DOT net), Ypnose.
1118 And Gavin Troy definetely deserves a very special credit.
1119 But thank you all, and very much indeed!
1121 ChangeLog (packager-affine)
1122 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1124 - The `test' make target has been fixed. [f0991e14]
1125   (Gaetan Bisson)
1127 - It is possible to gain a different kind of make(1) verbosity by
1128   using a VERBOSE=1 command line argument (this knob is not taken into
1129   account when deciding wether a rebuild is needed). [498e4ad0]
1130   (William Yodlowsky)
1132 - On Crux 3 Linux and OpenBSD the readline(3) and editline(3),
1133   respectively, libraries will now be found when desired. [a7d1aa78]
1134   (William Yodlowsky)
1136 - WANT_LINE_EDITOR has been renamed to WANT_NCL, *plus*.
1137   So now there are WANT_READLINE, WANT_EDITLINE and WANT_NLC, each of
1138   them can be set individually, and they are tested in the shown order.
1139   Also, WANT_TABEXPAND and WANT_HISTORY have been introduced and can be
1140   used to fine-tune functionality. [ae4e01e1, b2635feb, 9742bf40]
1142   (While here, i've fixed WANT_TABEXPAND code so that it is more
1143   sensitive to line excess; on Linux etc., where MAX_INPUT is 255,
1144   strange behaviour could be seen because we didn't take into account
1145   the length of the prompt at all.  The NCL is assumed to have only
1146   one remaining, but unfixable problem: backspace often is incapable
1147   to cross visual line boundaries; use ^A/^E + ^L, then. [e832c04a]
1149   Also, cursor (now ^B and ^F) and history movement (now ^P and ^N) of
1150   the NCL have been changed. [d7d928da])
1152 - WANT_QUOTE_FOLD is now enabled by default.  And WANT_ASSERTS has been
1153   renamed to WANT_DEBUG. [1e10da1f]
1155 - The build system has seen yet another overhaul in general.  CC, CFLAGS
1156   and LDFLAGS plus are now tracked and changes will force rebuilds.
1157   The new WANT_AUTOCC option can be used to let the build system figure
1158   out a compiler and choose known-to-work flags.  Use the new ADDCFLAGS=
1159   and ADDLDFLAGS= command line arguments to add your specific flags on
1160   top of those -- the final CFLAGS etc. are what is change-tracked.
1162   This rather massive internal rework revealed that old Bourne shells
1163   were yet not supported by the new build system, and so did testing
1164   that UnixWare installation was yet impossible due to tool
1165   incompatibility. [75c4b74e]
1167 - The new WANT_AMALGAMATION option will force compilation of all the
1168   sources in a single compilation unit.  This requires a rather large
1169   amount of memory, but may produce a more compact, maybe more optimized
1170   binary.  (Implementing this revealed quite some bugs which could
1171   therefore be fixed.) [topic/amalgam]
1173 - `nail.rc' has been pimped a bit (mostly comments, but
1174   *mime-counter-evidence* is now always set). [e3094ba7]
1176    That changeset was however buggy. [f3dcb46]
1177    (Gavin Troy)
1179 - We no longer use install(1) for `install'ation make rules. [80b02cd9]
1181 ChangeLog
1182 ^^^^^^^^^
1184 - Even '$ s-nail & fg $!' will now work with the NCL. [2a8b5c55]
1186 - Several off-by-one (off-by-two) fixes. [32ce9836, 71e6d013, f139dc36]
1187   (Gavin Troy, Thomas)
1189 - Setting *noprompt* now prevents prompting, as per POSIX. [ecefaf63]
1191 - *prompt*: new \$ (exit status of last command) and \@ (name of
1192   currently active mailbox) escape sequences. [6f652046]
1194 - One may now omit the space in '? unc' ('?unc') [05fcb383]
1196 - New commands: `ghost' and `unghost' define command aliases (since
1197   `alias' is taken for a different purpose) [topic/commands]
1199     ? ghost ps '!ps axu'
1200     ? ps |grep nail
1202 - There is now a pseudo account `null' (case-insensitive).
1203   Also a new `localopts' command exists; when used from within an
1204   `account' block, options changed will be reverted back to its former
1205   value when the account is left (e.g. by switching to `null'):
1207     define sdn_ {
1208        alternates sdaoden@users.sf.net sdaoden@users.sourceforge.net \
1209           sdaoden@googlemail.com sdaoden@gmail.com
1210        set Sign="\n--steffen\nForza Figa!" sign="\n--steffen"
1211        set smtp=smtp.gmail.com smtp-auth=plain smtp-use-starttls
1212        #..
1213     }
1214     account sdn_gm {
1215        localopts 1
1216        call sdn_
1217        set from="Steffen \"Daode\" Nurpmeso <sdaoden@gmail.com>"
1218     }
1219     account sdn_sf {
1220        localopts 1
1221        call sdn_
1222        set from="Steffen \"Daode\" Nurpmeso <sdaoden@users.sf.net>"
1223     }
1225   E.g., after
1227     ? acc sdn_gm
1228     ? acc null
1230   neither of *Sign*, *sign*, *smtp** nor *from* should be set.
1231   Please see the manual for more.
1232   TODO - neither command-ghosts nor alternates etc. are yet tracked
1233   TODO - we should have a boolify() so as to say 'localopts yes' etc.
1234   [topic/acmava]
1236 - New command: `cwd' (print current working directory).
1237   Also fixing the `chdir' return value. [eff4397c]
1239 - The *ssl-method* now allows explicit setting of 'tls.1.1' and
1240   'tls1.2' values. [c66b4196]
1242 - When sending to display, be aware that filenames in MIME parts may of
1243   course be MIME-encoded! [1454be03]
1245 - *hostname* is now honoured even if *smtp* is not set.  (We always
1246   supported *from*, so why not *hostname*?)
1248 - The `-u user' option now acts identically to setting the $USER
1249   environment variable and both now tend to mean something like
1250   "impersonate as user in some aspects".  Note that we have always used
1251   the latter in one or the other way, and `-u user' always ment more
1252   than just "open mailbox of user", so i think this change sharpens the
1253   edge in the right direction. [09632731]
1255 - Filename argument quoting has been tweaked for (some) function(s which
1256   take a filename argument last).  The following snippet as reported by
1257   Gavin Troy should work now: [2bb9b80e]
1259     ? mv +inbox.Junk\ Mail
1261 - The GNU implementation of wordexp(3) is also (i've added a workaround
1262   for the very same bug for Mac OS X in S-nail v14.3 [63273772]) buggy,
1263    which causes segmentation faults when expansions failed (`fi &VOID').
1264   [470527b7]
1265   (Gavin Troy)
1267 - The `fi' command no longer uses the (possibly truncated) display
1268   version of a filename, but the full path. [5cd85b07]
1270 ChangeLog (purely technical)
1271 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1273 - Large rework of internal structure: bundle inclusion of most of the
1274   external and the content of most of the internal #include files in the
1275   new nail.h.  If that would have been done very first bugs like the
1276   infamous MAXPATHLEN bug as reported by Paul Vojta (see v14.4.2) would
1277   never have occurred. [21f3155b]
1279 - Support for -fstrict-overflow cc(1) flags. [topic/strict-overflow]
1281 - Fixed the quotation filter which yet allocated memory even if not
1282   used. [c98cdaf5]
1284 - String relaxation reduces memory pressure rather drastically when
1285   working with many (especially MIME) mails at a time, e.g., when
1286   writing a modified mailbox.  Before all messages of a mailbox had to
1287   be worked without releasing any memory in between, now we give back
1288   memory (to our pool, not the system) after each and every message.
1289   [topic/srelax]
1291 - The other memory source now uses bound canaries, which also found some
1292   errors. [3d9fe741]
1294 - We now use the EL_PROMPT_ESC editline(3) mode for prompting, which
1295   should offer the possibility to use coloured prompts etc. with
1296   (even those) editline(3) (versions which do offer it -- older versions
1297   should just do fine by themselves).
1298   S-nail uses the special trigger control character \1. [ea30d818]
1299   (Ypnose)
1301   Note however that all tested editline(3) versions are buggy and
1302   either don't get it right (`\1COLOR-ON\1stuff\1COLOR-OFF\1') or are
1303   incapable of proper repainting (`\1COLOR-ONstuffCOLOR-OFF\1').
1305 - We now use the MD5 digest code from the OpenSSL library if that is
1306   usable. [893b16c0]
1308 v14.4.5, 2013-10-19
1309 -------------------
1311 Many thanks: Gaetan Bisson, Stephen Isard, Jérémie Courrèges-Anglas,
1312 William Yodlowsky, and Adam Sjøgren from GMANE.org!
1314 ChangeLog (packager-affine)
1315 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1317 - The packager-install: target has been fixed. [a8c1b0b]
1318   (Gaetan Bisson and William Yodlowsky)
1320 - As suggested by Gaetan Bisson the several build system tasks are now
1321   individually addressable, i.e., 'make [OPTIONS] config', 'make build',
1322   'make test', 'make packager-install'); nothing changes unless you want
1323   to, in which case: please see INSTALL. [4d3b799]
1325   The new target 'test' will call cc-test.sh with its new --check-only
1326   option which will only perform the (too few) function tests on the
1327   ready binary.
1328   And cc-test.sh will no longer create output files, but simply echoes
1329   to STDOUT and STDERR. [629e1ee, 786f219]
1330   (Gaetan Bisson)
1332 - The default configuration file now sets *bsdannounce* and *bsdflags*,
1333   all in one line, as suggested by William Yodlowsky.
1334   (If *header* is disabled, *bsdannounce* is ignored, but *header* must
1335   be enabled by default according to POSIX, and *bsdannounce* is just
1336   the same as *header*, but for the folder-switched event.  Thus setting
1337   *bsdannounce* is the more sane default, imho.) [6161f10]
1338   (William Yodlowsky)
1340 - Announcement messages are now tagged '[ANNOUNCE]'. [26e1b35]
1341   (Tagging suggested by Stephen Isard and Jérémie Courrèges-Anglas)
1343 - The manual NAME now includes the version (but it's somewhat ugly).
1344   [8adcca4]
1346 ChangeLog
1347 ^^^^^^^^^
1349 - When switching folders when in compose mode, message attachments
1350   become invalid.  For v14.4.5, at least warn when this happens.
1351   [47eb1ab]
1353 - When reading multipart/alternative messages which do not contain
1354   a text/plain part, the (most likely HTML) part is not displayed (even
1355   if S-nail is configured to display HTML).  The reason is a bug i've
1356   introduced with [0d43a999] (Change "Part X:" display message..,
1357   2012-12-20).  (Note that the committed fix i've posted to the list was
1358   not correct either and has been fixed itself.) [225c02b, ecfa149]
1360 v14.4.4, 2013-10-03
1361 -------------------
1363 Thanked, Gavin Troy, Gaetan Bisson.
1365 - Fix output buffer confusion that would have occurred when parts of
1366   a multipart mail had a pipe command set.  Longer story in [e75d16dd].
1367   (Gavin Troy)
1369 - The makefile now supports a `packager-install' target that bypasses
1370   the reevaluation of the configuration (after checking that there is
1371   one) and directly steps ahead to the install process.
1372   (Gaetan Bisson)
1374 - Notes in INSTALL that CFLAGS and LDFLAGS need to be overwritten from
1375   within (conf.rc or) the command line.
1376   (Gaetan Bisson)
1378 v14.4.3, 2013-10-02
1379 -------------------
1381 I convey special thanks to Karol Błażewicz and Gaetan Bisson.
1383 - The new build system didn't allow to overwrite CFLAGS= when used in
1384   conjunction with GNU make(1).  To make a long story short, removing
1385   a `.POSIX:' directive from the makefile fixed the problem.  Luckily.
1386   [e6b26526]
1388 - More INSTALL notes for UnixWare 7.1.4, which suffers from the same
1389   problem: here the fix is to use the -e option of make(1).
1391 - Karol Błażewicz reported a segmentation violation he got when using an
1392   Arch Linux S-nail test package, and Gaetan Bisson informed me about
1393   that.  The problem was that we didn't assign the resulting default
1394   address (which gets used when *from* is not set) to the result which
1395   gets used, effectively resulting in a NULL dereference. [cfd60479]
1397 v14.4.2, 2013-09-21
1398 -------------------
1400 Many thanks to Paul Vojta.
1402 - On GNU/Linux there is no MAXPATHLEN constant defined by default, as
1403   this is a non-standard legacy constant.  Mozilla ran into this some
1404   time ago, though a bit different [1].  It made it easier for S-nail.
1406     [1] <https://bugzilla.mozilla.org/show_bug.cgi?id=412610>
1408   We could include `sys/limits.h' to get at MAXPATHLEN, there it is
1409   defined to be PATH_MAX, but let's just include the standard `limits.h'
1410   and ensure MAXPATHLEN ends up >= PATH_MAX.  With this condition being
1411   true even FORTIFYd sources won't bail with reported buffer overflows
1412   because realpath(3) expects a buffer of PATH_MAX bytes. [bee5e57c]
1413   (Paul Vojta)
1415 - With the builtin LINE_EDITOR, ensure proper interaction with GNU
1416   rlogind(8), which is alone in its quest to set the ISTRIP termios(4)
1417   flag. [61e00f2d]
1419 - Bugfix a codepath that would have prevented compilation when
1420   HAVE_ICONV is not set.
1421   While there, allow to unselect message attachments when using the `~@'
1422   tilde command interactively, which i mysteriously had forgotten when
1423   allowing selection of 'em.  (oops?) [4f58ffea]
1425 - It's now easier for packagers to get at debug-enabled CFLAGS; simply
1426   use WANT_ASSERTS=1 (should not be enabled in shipouts, please).
1427   [d8663406]
1429 - Fixed a terrible bug that i've introduced in november 2012, that would
1430   have corrupted MBOX files when using the `resend' command.  (The
1431   so-called "From_ line" would have been quoted to ">From_ line" instead
1432   of simply being stripped.) [19d449e2]
1434 - Fixed a SIGSEGV for the builtin LINE_EDITOR, that would have occurred
1435   if a history traversal (^B or ^F) would have been continued by
1436   a reverse history completion (^R).
1437   While there, avoid some multiple-beeps-in-a-row that yet occurred due
1438   to code reuse, and document that ^G etc. reset the multibyte state
1439   machine. [003d9f6f]
1441   Also, the expand-on-tab code could have excessed line input maximums,
1442   e.g., after `? /usr/bin/*<Tab>'.  This was of course known, but
1443   i wanted to keep it because all tested (modern) terminals "mess up but
1444   won't break", and thus made it possible to use the data, even if it's
1445   visual representation was messed up.  The real solution will be much,
1446   *much* more complicated, i.e., show possible *completions*, page-wise,
1447   etc., i.e., just like is known by tab *completion*.  This will need
1448   far more time because it doesn't make sense to embed such complicated
1449   code into the current bed.
1450   Now i've chosen to simply don't display excess, but replace the
1451   content with a message that says that there was excess.  It simply
1452   looks better. [0320c8ba]
1454 - I've changed the use of `[?]' as a replacement sequence for invalid
1455   / non-displayable characters to `?' (again).  There are still code
1456   paths (from the original codebase) which use the real Unicode
1457   replacement character instead, so our display is still not unique.
1458   On the long term the codepath can anticipate in all levels wether
1459   use of Unicode is possible, so that, then, we will be unique again,
1460   using either only `?' or the Unicode replacement character. [faf6380]
1462 - I've anticipated in v15.0 and implemented *quote-fold* as a stream
1463   filter.  It is now multibyte safe and takes into account the visual
1464   width of characters, i.e., ideographs etc.  It is working almost as
1465   good as an algorithm can work that looks at data linewise, but is yet
1466   experimental and incomplete in that it will break lines even if only
1467   whitespace or a backslash escape follows.  It is code that is only
1468   a few hours old, which is why it is not enabled by default. [
1470 v14.4.1, 2013-09-14
1471 -------------------
1473 How terrible.
1475 - Fix some harmless stylos and typos in the manual and `conf.rc'.
1476   [1a6b880, 417b066]
1478 - Ensure *complete* proper cleanup on signal-caused configuration run
1479   aborts. [7a08bda]
1481 - Bugfix: reenable empty configuration variable overrides, as in
1483     $ make install SID= NAIL=mailx ...
1484   [171861d]
1486 - Bugfix: rename the `conf.rc' variables SHELL, LISTER and PAGER because
1487   they clash with the POSIX standard variables of the same names, which
1488   hurts now that the configuration is run through the shell itself.
1489   The configuration names are now XSHELL, XLISTER and XPAGER (ouch).
1490   [ef93c4e]
1492 - nail.rc: comment out some non-portable S-nail(1) specifics, for those
1493   who install this file as mailx.rc or so, somewhere. [3f14b01]
1495 - From now on S-nail will use simple version tags, as, e.g., `14.4.1',
1496   i.e., no more `s-nail-14.4.1'. [a75437d, 183d59c] (Jürgen Daubert)
1498   Also move UAGENT out of `version.h' [f7be5be]
1500 Uh! v14.4 must have originated in a bad dream; good it's vanished.
1502 v14.4, 2013-09-13
1503 -----------------
1505 Thanks to the entire vivid and virile S-nail(1) user community is
1506 proper, especially Stephen Isard, Gavin Troy, Martin Neitzel.
1507 Not to forget Ryan Kavanagh and Ayan George.
1509 Note this time the changes are in reverse order, i.e., oldest first.
1511 Topic Branches
1512 ^^^^^^^^^^^^^^
1514 15fbe09 ^bf9173f 'topic/varmac-unite'
1515   Simplification and unification of variable and macro handling
1516 40f6f58 ^15fbe09 'topic/cledit1'
1517   Command line editor; new manual section `Line editor'
1518 ad28a32 ^40f6f58 'topic/termsize'
1519   Honour POSIX mailx(1) and respect $COLUMNS and $LINES on startup
1520 dc3cd49 ^a446fd8 'topic/qf'
1521   You don't wanna know
1522 b8738f7 ^0651fd0 'topic/spam1'
1523   Interaction with SpamAssassin; new manual section `Handling spam'
1524 5419d6f ^b8738f7 'topic/make1'
1525   Reworked build system; please read `INSTALL' and `conf.rc'
1526 9ab4d6b ^5419d6f 'topic/list1'
1527   Slightly tweaked message thread display, fix `:u :r' to mean it
1529 ChangeLog
1530 ^^^^^^^^^
1532 - The default PAGER is now more(1).  (But read on.)
1534 - The `echo' command is now compliant, and fully supports XSI.
1536 - The `group' and `ungroup' command aliases have been removed, they are
1537   `alias' and `unalias'.
1539 - We now have the capability of line editing and history.
1540   One may choose from not less than three different implementations:
1541   a builtin editor as well as possible linkage against BSD editline(3)
1542   and also a GNU readline(3) compatible layer.
1543   Please read the new manual section `Line editor'.
1545   Input is now compliant in that an interactive line may be continued
1546   after escaping the newline character with a backslash.
1547   [topic/cledit1]  (all of them)
1549   The *prompt* variable may now contain shell escapes, just like the
1550   `echo' command. [0938d8a]
1551   As a special extension the new \? escape, when used within *prompt*,
1552   will expand to the exit status of the last command. [41076d2]
1554 - The POSIX standard environment variables $COLUMNS and $LINES are now
1555   honoured upon startup. [topic/termsize]
1557 - The `help' / `?' commands now support abbreviation, i.e.,
1558   ``$ ? unc'' should now find `uncollapse'. [7b86195]
1560 - The `~' abbreviation that has been introduced as an alias for `call'
1561   is now a real command, not a magic shortcut. [9987289]
1563 - The new variable *quote-as-attachment* can be used to additionally
1564   embed the quoted message as a `message/rfc822' MIME attachment.
1565   [topic/qf]
1567 - The compose-mode command `~@' will now attach messages from the
1568   current mailbox if given a filename of the style `#NUMBER'.
1569   Please read the corresponding manual section `Tilde escapes', though.
1571 - The `WANT_JUNK' and `WANT_SCORE', as well as Gunnar Ritters junk mail
1572   management have been removed.
1574   Instead S-nail(1) can now support interaction with SpamAssassin, but
1575   sofar only via the spamc(1) / spamd(1) client / server pair of
1576   programs that ships as part of SpamAssassin.  The new configuration
1577   directive `WANT_SPAM' controls wether this feature is desired.
1579   Please read the new manual section `Handling spam'.
1580   [topic/spam1] (Martin Neitzel)
1582   (S-nail(1) is now *definitely* floating-point free.)
1584 - The configuration and make system have been overhauled / reorganized.
1585   The configuration is now in `conf.rc', also contains directives like
1586   `PREFIX' etc, and is always read in.  However, only those directives
1587   which are not yet set (via environment or command line overwrites) are
1588   incorporated into the set of configuration options.  Therefore
1590     $ make WANT_IMAP=0
1591     $ make WANT_IMAP=1
1593   will now build S-nail(1) twice, because of the changed configuration.
1595   Note that `WANT_GSSAPI' is now by default disabled, which shrunk
1596   a freshly started s-nail image by more than 30 percent.
1598   We're not finished yet in that there is no dependency graph etc.
1599   Please do read `INSTALL' and `conf.rc'.
1600   [topic/make1]
1602 - Message selection has been slightly bugfixed in that `:u :r' really
1603   means `:u' AND `:r'.  Compared to NetBSD Mail(1) it's still a shame.
1605   Threaded message display has been slightly changed in that within
1606   a thread identical Subject: lines are not repeated.  It may not be
1607   perfect yet due to the general list / thread state. [topic/list1]
1609 - If, upon startup, the environment variable `NAIL_NO_SYSTEM_RC' is set,
1610   then the system wide initialization file isn't read, just as if the
1611   `-n' option had been given. [1b31535]
1613 - It is now possible to use CTRL-C during connection hangs.  (But in
1614   general error recovery capabilities of the socket related
1615   infrastructure is non-existent, practically speaking.) [45a9f36]
1617 - *quote-fold* has been temporarily disabled, as it is not multibyte
1618   safe.
1620 No review for v14.4.  And today is Friday, the 13th.  Ouuuh!
1622 v14.3.2, 2013-06-21
1623 -------------------
1625 I should *maybe* should have and want to give prominence to
1626 Martin Neitzel for this, i maybe have misunderstood.
1628 - Bugfix *synchronous* *pipe-** execution..
1630   Well, unfortunately yet another newly introduced bug slept in
1631   S-nail v14.3[.1] -- [a8d724b3, Add @ and @& shell command prefixes
1632   for pipe-MIMETYPE, 2013-05-03] falsely changed the waiting state
1633   for subprocesses, as has shown up by a HTML-only mail on the
1634   Unicode list today.
1635   'Seems i'm collecting one line fixes in this codebase; this needs
1636   to change in the future.
1638 v14.3.1, 2013-06-08
1639 -------------------
1641 I want to give prominence to Juergen Daubert (jue AT jue DOT li), who
1642 reported that i've broken plain-old unfancy send mode in 14.3.
1644 + Ok, i'll hope we're out of new errors for the v14.3 series with that.
1646 - New variable: *batch-exit-on-error*.
1647   Only works if the new -# command line option has been given, and will
1648   check the "current" exit status whenever one operation completes
1649   (S-nail returns to the command prompt).
1650   If the exit status implies error (e.g., sending the last message
1651   failed) then we exit forcefully with that error status.  (The normal
1652   behaviour is that the status is reset when the command loop ticks.)
1653   [4cddd55]
1655 - While here again, i've added the new -# command line option.
1656   This is the first step to implement a reliable batch mode;
1657   unfortunately it still selects the users system mailbox on startup,
1658   because we simply cannot go to "no" mailbox for quite some time -- at
1659   some future time we will be able to go to some VOID thing, and then
1660   this will end up as a rather efficient batch mode.
1661   For now it sets *dot*, *emptystart*, *noheader* and *sendwait*, and
1662   also implies the -~ command line option.  [7549569]
1664     (
1665       printf "m ${MBOX}\n~s subject1\nE-Mail Körper 1\n.\n" &&
1666       printf "m ${MBOX}\n~s subject2\nEmail body 2\n.\n" &&
1667       echo x
1668     ) | MAILRC=/dev/null "${NAIL}" -n -#
1670 - Also, -N set *header* instead of *noheader*.  [7b4a13f6]
1671   (Juergen Daubert.)
1673 - Plain old unfancy invocations like
1675     $ s-nail user@host
1676     $ echo bla|s-nail ./FILE1
1678   had been broken (by [522cb3ec]).  [260e19d]
1679   (Juergen Daubert.)
1681 v14.3, 2013-06-03
1682 -----------------
1684 Thanks to Gavin Troy (gavtroy AT gmail DOT com) who inspired the @ and
1685 @& pipe-command prefixes.
1687 Random notes
1688 ^^^^^^^^^^^^
1690 - S-nail has been registered at Coverity Scan, and the third build
1691   (after topic branches *coverity-444* and *coverity-444.2*) produced no
1692   more errors.  (<http://scan2.coverity.com/projects/444>.)
1693   (Then i used POP3 and IMAP and fixed some SIGSEGV. ;)  Still didn't
1694   look at S/MIME, Maildir, caches etc... o()
1696 - S-nail v14.3 doesn't produce any spurious linker warnings on
1697   OpenBSD 5.3; all (correct!) use cases of strcpy() and strcat() have
1698   been replaced.  [7bdf330, 2c8d7cb]
1700 - This is the first release with a (though very short) review -- i'm
1701   slowly getting comfortable with the code.  (But i'm too stupid to
1702   perform reviews on patches, 'always did reviews on C++/Perl/xy
1703   classes.  Aaah, how beautiful ... objects.)
1705 ChangeLog
1706 ^^^^^^^^^
1708 - It is now possible to "call" macros without using the `call' command
1709   by prefixing them with a tilde, as in
1711     ? define au {
1712       echo auau
1713     }
1714     ? ~au
1715     auau
1716   [93ea8acd]
1718 - Added the *pop3-bulk-load* option.
1719   Yes, there are mailing lists etc. which use plain text email, and,
1720   there, headers are often more data than the body, so it doesn't make
1721   sense to download the headers twice (unfortunately POP3 doesn't
1722   support a BODY command; if only it would support a RETRDELE command..)
1723   [978e13a7]
1725   And yep, from this changeset on i personally use S-nail even over the
1726   network, no longer my stale and incomplete S-Postman.  And i can tell
1727   you, this damn thing is so silent, i always set *verbose* not to go
1728   grazy ... but .. i hate to say it .. the healing will take time.
1730 - POP3 will now try to use APOP authentication automatically; thus the
1731   *use-apop* stuff has been replaced by *pop3-no-apop* options (just in
1732   case there are POP3 servers which advertise they support APOP but in
1733   fact fail to do so; anyone?)  [6c3c5575]
1735 - Some IMAP segmentation violations have been fixed:
1737     ? fi imaps://user1@localhost
1738     Password:Interrupt            <- CNTRL-C
1739     ? set imap-auth=cram-md5      <- hey, 'forgot to set correct auth
1740     ? fi imaps://user1@localhost
1741     IMAP write error: error:140D00CF:SSL routines:SSL_write:protocol is shutdown
1742     Segmentation fault
1744   And also, when *folder* was set to an IMAP account but hasn't been
1745   opened yet, and no IMAP account ever has been opened, a string
1746   comparison against a NULL pointer yet caused a SIGSEGV, too.
1747   [417c01f, 413c23d9]
1749 - `set folder=' now tolerates `%:' and expands PROTOs stuff etc.:
1751     ? short xp %:imaps://user1@localhost
1752     ? set folder=xp
1754   Pure convenience so that it doesn't need to be typed twice (still no
1755   completion in sight...).  Note that setting *folder* to a POP3 box
1756   will now be actively rejected.  [b12b17f5]
1758   NOTE: while implementing this i've detected another dead-end
1759   miscondition in S-nail -- you really should ensure that your target
1760   folder/box is connected before you leave your current POP3/network
1761   based folder, if there is data to be moved to the target (i.e.,
1762   mbox).  This problem will persist for a long time due to the way the
1763   entire codebase functions; i hope i can find a short/mid-term
1764   solution, but the real healing will take years.  The mentioned
1765   solution would at least make S-nail interruptable, currently we get
1766   stuck and interrupts are blocked...
1768 - If you're using S-nail on Mac OS X and have seen some segmentation
1769   faults when expanding shell stuff then you may be pleased to hear that
1770   S-nail now works around an Apple bug.  [63273772]
1772 - The builtin mime.types have been corrected and a lot of new ones have
1773   been added.  New data from
1774   <http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/\
1775   org/apache/tika/mime/tika-mimetypes.xml>, thanks!  [8072fcb6]
1777 - BEWARE: handling of command line arguments has changed a bit!
1779   1. The -D, -d, -E, -i, -N and -v command line options are now
1780   implemented by means of setting the respective option, as via -S.
1781   (This means that from now on resource files can only *temporarily*
1782   overwrite command line arguments.)
1784   2. The -I and -T command line arguments have been dropped.
1785   It seems Gunnar Ritter stopped developing nail/Heirloom mailx once he
1786   started implementing Newsreader functionality.  It'll take a long time
1787   until we get there, so for now drop all the Newsreader stuff.
1789   3. Handling of -r has been changed.  E.g.:
1791     s-nail -A test -Snoeditalong -r 'La mort est <fem@me>' -d
1792     ? set from=bummer@m1.com
1793     ? m t1
1794     Subject: s1
1795     .
1796     Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t1"
1797     ? set from=bummer@m2.com
1798     ? m t2
1799     Subject: s2
1800     Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t2"
1802   ...
1804     s-nail -A test -Snoeditalong -r '' -d
1805     ? set from=bummer@m1.com
1806     ? m t1
1807     Subject: s1
1808     .
1809     Sendmail arguments: "sendmail" "-i" "-r" "bummer@m1.com" "t1"
1810     ? set from=bummer@m2.com
1811     ? m t2
1812     Subject: s2
1813     Sendmail arguments: "sendmail" "-i" "-r" "bummer@m2.com" "t2"
1815   [*main-fun-cleanup* topic branch]
1817 - *smime-sign-include-certs-** stuff works again, oops..  [9a8597c6]
1819 - A whole lot of smallest and small fixes due to registration at
1820   Coverity Scan, as project 444.  Error handling in S-nail is ridiculous.
1821   [*coverity-444* and *coverity-444.2* topic branches.  The sheer number
1822   of fixes was the reason to sit down and go for unplanned S-nail v14.3]
1824 - *idna-strict-checks* has been dropped.  It's silly to have in a MUA,
1825   especially given that GNU LibIDN doesn't ship with a lot of rules.
1826   We were able to drop quite some code (and a use-after-free, too :().
1827   [c81fd41d]
1829 - The ~p tilde command displays attachments more verbose.
1830   Until the big big MIME and send layer rewrite :) this is intermediate
1831   since until then we do not really know neither MIME type nor charset
1832   of an attachment at the time this is displayed (for sure).  Yet
1833   i think it's nicer to show what we have than keep it the way it was.
1834   [60e70463]
1836 - @ and @& shell command prefixes have been added for the pipe-MIMETYPE
1837   mechanism.  The former suppresses filters if multiple messages are
1838   displayed at once, the latter adds asynchronous program execution on
1839   top of that.  E.g., to display PDF documents, but only if you
1840   *explicitly* address the message *alone and by itself*, and without
1841   blocking S-nail and the $PAGER, do:
1843     set pipe-application/pdf="@&cat >"${TMPDIR}"/s-nail${$}.pdf;\
1844       mupdf "${TMPDIR}"/s-nail${$}.pdf; rm "${TMPDIR}"/s-nail${$}.pdf"
1846   (Inspired by Gavin Troy.)  [a8d724b3]
1848   Note: most of that had been posted to nail-devel@ already, but it was
1849   tweaked ([251b636]) so that you now *really* have to say `p MSGNO' to
1850   get there.
1852 - The NETLESS CONFIG= has been removed; it is almost identical to
1853   MINIMAL now (i.e., without WANT_JUNK and WANT_SCORE).
1855 - WANT_JUNK and WANT_SCORE have been disabled by default.
1856   They don't seem to be too useful; i hope i can implement
1857   a SpamAssassin hook for (downloaded) mail messages for v14.4.
1858   If so, expect these two "modules" to become removed completely.
1860 v14.2.2, 2013-05-01
1861 -------------------
1863 Another unplanned (minor) bugfix release after Gavin Troy (gavtroy AT
1864 gmail DOT com) pointed out that MIME CTE decoding was broken, who
1865 i therefore want to give a lot of prominence right here.
1867 - Fix MIME content decoding which has been broken by [01c0e135].
1868   [882caedd]
1869   (Gavin Troy.)
1871 v14.2.1, 2013-04-30
1872 -------------------
1874 An unplanned (minor) bugfix release after i've found two bugs today and
1875 heard from Jérémie Courrèges-Anglas (jca+nail AT wxcvbn DOT org) that
1876 there exists a S-nail OpenBSD package.
1878 I want to give prominence to the following people that helped to
1879 improve S-nail(1) during this development cycle, in order of
1880 appearance: Dirk Peters (peters AT schwertfisch DOT de).
1882 Thank you very much, and best from Germany!
1884 - Some warnings of newer clang(1) versions were silenced, including yet
1885   another alloca(3) problem (see *memtracer* topic branch in v14.0
1886   series).  [6f846efe]
1888 - Tweaking the MIME boundary detection left a little hole that could
1889   cause boundaries not to be detected, as has been shown by a Microsoft
1890   Word generated mail on the ICU list.  [11e5fb5b]
1892 - A format string could overflow bounds if unrealistic
1893   (18446744073709551615) line numbers or message sizes would have been
1894   produced.  [faa65c40]
1896 - An algorithmic error could cause overlong lines which wrapped around
1897   to the next display line.  [ade52660]
1898   (Dirk Peters.)
1900 v14.2, 2013-03-15 [v14.1, 2013-03-12]
1901 -------------------------------------
1903 I want to give prominence to the following people that helped to
1904 improve S-nail(1) during this development cycle, in order of
1905 appearance: Martin Neitzel, Christos Zoulas, Stephen Isard, jgw@txo.org
1906 and Gavin Troy.
1908 Thank you very much, and best from Germany!
1910 + v14.2 differs from v14.1 only by one commit, one that fixes
1911   (mime_fromhdr(): partial rewrite using n_iconv_str(), 2013-03-12),
1912   which i hastily implemented just hours before the release of v14.1,
1913   and simply shouldn't have made it (into there).
1914   The v14.1 tarball has been removed from the server.
1916 - A fix for the quoted-printable codec: "message truncation" occurred
1917   when a mail maliciously used a soft linebreak to escape the linebreak
1918   of a completely empty line.
1919   (That resulted in 0 written and 0 leftover bytes, a condition that was
1920   declared erroneous back in november 2012 when i started handling I/O
1921   errors.)
1923 - The "folders" command will work again when given an argument.
1924   A fault of mine introduced in (cmd1.c: expand() may fail, 2012-10-23).
1926 - The Base64 codec has been touched again, and we are finally capable to
1927   perform sequential decoding; this was targeted for the MIME/send layer
1928   rewrite, but it actually was possible today.
1929   The result as seen in ps(1), running on the Base64 encoded HTML5
1930   standard (4622545 bytes HTML, with a NUL appended to force Base64
1931   encoding, resulting in a 6244793 bytes email):
1933    7420 s006  S+    2:22pm 0:10.65 plain-nail -f HTML5
1934    1440 s006  S+    2:23pm 0:00.36 ./s-nail -f HTML5
1936   (So the only thing that is left for a good throughput is sequential
1937   decoding of quoted-printable encoded parts that maliciously use soft
1938   linebreaks to convert an entire part to a single line.  And i've seen
1939   that from Apple Mail.)
1941 - New option: *mime-allow-text-controls* (rather long manual entry).
1943 - *smtp-auth-password-user@host* and *smtp-auth-user-user@host* will
1944   finally work!
1945   (Reported by jgw@txo.org in November 2011, fixed by Gavin Troy in
1946   January 2012.)
1948 - Most *headline* formats now do support the '-' left-alignment flag.
1949   Note that you most likely have to change your *headline* accordingly.
1950   (The still missing %n format is one reason why there will be v14.2.)
1952 - *datefield* and *datefield-markout-older* can now be set to
1953   strftime(3) format strings (except %n).
1954   (From Stephen Isard's wishlist.)
1956 - A possible SEGV has been found and also fixed by Stephen Isard.
1957   (The "legendary" cross-world stereo fix!)
1959 - Wow!  S-nail will finally compile on GNU based Linux systems like
1960   Slackware 14 etc.  (Found while hunting bug reported by
1961   Stephen Isard.)
1963 - New option: *datefield-markout-older* can be used to choose
1964   a different date display for mails that are older than six months,
1965   in equal spirit to what POSIX describes for the -l option of the ls(1)
1966   command (Stephen Isard).
1968 - (Exotic) Years are (would) now (be) interpreted correctly according to
1969   RFC 5322, 4.3.
1971 - CRAM-MD5 usage has been fixed.
1973 - *folder* updates are now tracked when set, and we will show the
1974   realpath(3) name of it, showing PREFIX..SUFFIX if that wouldn't fit on
1975   the display.
1976   Tracking updates made it also possible to perform other more expensive
1977   tasks when setting *folder*, so that it is now possible to do
1978   something like:
1980     :set folder=$HOME
1981     :set folder=~
1983   et cetera (both ideas by Christos Zoulas).
1985 - Bugfix for the ~@ tilde-escape in non-interactive mode.
1986   (readtty(): quick shot: work in pipelines (on non-TTY).., 2013-01-25)
1987   introduced the possibility to "read data from the terminal" (STDIN
1988   that is) in non-interactive mode.
1989   The manual documents that attachment input must be terminated with an
1990   empty line, but if that had been omitted, as in the example below, we
1991   would have yet entered an endless loop.
1993      $ cat <<_EOT | /s-nail -~ -s boom ./OUT
1994     ~@
1995     test.c
1996     charset
1997     _EOT
1999 - Alias expansion will now be performed for members of Reply-To: fields
2000   (Martin Neitzel).
2002 - Decoding quoted-printable will now be more relaxed.
2003   (Even though the standard says that users should be given a hint when
2004   input is not absolutely clean; a possible warning will be added later,
2005   when we have an error message ring.)
2007 - New option: *mimetypes-load-control* can be used to control which of
2008   the mime.types resources will be loaded.
2010 - The builtin default mime.types have been extended a bit.
2012 v14.0, 2013-02-10
2013 -----------------
2015 I want to give prominence to the following people that helped to
2016 improve S-nail(1) during this development cycle, in order of
2017 appearance: John Dodson, Gianluca Ramunno, and Anon Ymous from the
2018 NetBSD project.
2020 Random notes
2021 ^^^^^^^^^^^^
2023 - Encoding defaults to *quoted-printable* not *8bit*.
2024   This has no technical background except that i think it's the better
2025   default.
2027 - Small progress for the "getting stuck due to the current folder
2028   becomes inaccessible due to whatever reasons"  problem.
2029   (schdir(): realpath() local files before leaving CWD.., 2013-01-08)
2031 - The names of temporary files have changed.  Whereas not all uses of
2032   temporary files already use really meaningful names, it has yet become
2033   possible to use the pattern "*mail-*"; or, to be compatible with
2034   NetBSD Mail(1) in one go, "*mail*".  (E.g., in my ~/.vimrc you'd read:
2035     :au   BufRead,BufNewFile *mutt*,*mail* setl fenc= | setf mail
2036   [the *mutt* is a leftover from times when i've used MUAs that suck].)
2038 ChangeLog
2039 ^^^^^^^^^
2041 - The Quoted-Printable MIME handling has been rewritten completely.
2042   We now correctly encode files with the MS-DOS newline sequence (CRLF).
2043   (Part of the *mime-cte* topic branch.)
2045   S-nail(1) continues to be able to handle text messages and text
2046   attachments without a trailing newline, but because these
2047   Content-Transfer-Encoding related things are now handled by the C-T-E
2048   layer instead of by sendout.c a text message body that comes in as
2049   part of a complete message via the -t command line option will loose
2050   the missing final newline (i.e., it'll gain one).
2051   This problem does *not* occur when *only* the message body comes in
2052   via STDIN, as in 'cat FILE | s-nail', but *only* when the -t option is
2053   used.
2054   (sendout.c: does no(t/ longer) know about CTE internals!, 2013-02-09)
2056 - Filename arguments for -a are now processed *after* all the resource
2057   files have been loaded etc., so that the usual "folder" specifics can
2058   be used (provided that proper care for shell quoting was taken).
2059   ((main(): delay -a processing.., 2013-01-10), as a part of the
2060   *mainaflags* topic branch.)
2062 - (d38c5bd, When the write command asks.., 2004-11-23) added support
2063   for pipes when saving attachments during a "write" command.
2064   It however used the wrong SIGPIPE signal handler; e.g.:
2066     Enter filename for part 2 (application/x-gzip): |exit
2067     Segmentation fault
2069   Of course, it still performs a jump and that most likely leaves memory
2070   chunks behind, thus causing some memory leaks.  This will be
2071   a long-term problem (you may want to read [mime.c:fwrite_td(): TODO
2072   notes on unfixable leaks, 2013-01-14] for more).
2073   (send.c:sendpart(): fix longjmp() SIGSEGV.., 2013-01-29)
2075 - Fixed a name quoting regression that i've introduced in
2076   (Rewrite *extract().., 2012-10-20), that would have caused
2077   "x \"y\" z" to become "x"y" z" instead of "x "y" z".
2078   (S-nail still does not really have RFC compliant parsers, just as
2079   NetBSD Mail(1) has, i.e., there are structured and unstructured fields
2080   etc...  I hope i can provide them in v15.0.)
2081   (names.c:yankname(): fix quote regression.., 2013-01-29)
2083 - The IDNA conversion now assumes domain names are specified in
2084   *ttycharset*, rather than in the LC_CTYPE locale charset.
2085   I.e., it integrates into the usual character set specifications.
2086   (IDNA: honour *ttycharset* for domain names, 2013-01-18)
2088 - The new *editalong* variable will automatically spawn an editor when
2089   composing a mail in interactive mode, just as if `~e' was given.
2090   (Add new *editalong* variable, 2012-01-07)
2092 - The manual has been converted to mdoc.
2093   (The manual has been converted to mdoc, 2012-12-28)
2095 - The ~@ tilde escape, when given filename arguments, will treat the
2096   arguments as a comma-separated instead of a whitespace-separated list.
2097   (collect: change separator of ~@ tilde escape.., 2012-12-28)
2099   The interactive mode of ~@ has also been changed, rather massively.
2100   Please do reread what the manual says.
2101   ((collect: support multiple attachment charsets.., 2013-01-23), as
2102   part of the *attach* topic branch.)
2104 - Thanks to Gianluca Ramunno (ramunno DOT gianluca AT gmail DOT com)
2105   S-Nail will no longer try to issue a STARTTLS command when it is about
2106   to establish a SMTPS connection, a task that logically fails since the
2107   connection is already secured.
2108   (Interestingly the nail codebase performs the necessary test for IMAP
2109   and POP3 already.)
2110   While here the undocumented nail v11.0 *smtp-use-tls* legacy option
2111   has been removed.
2112   (Fix SMPTS with a set *smtp-use-starttls*.., 2012-12-22)
2114 - The RFC 4155 compliant MBOX quoting is now exclusively used, the
2115   shitty *posix-mbox* variable has been removed again.
2116   (Shitty because i've implemented RFC 4155 compliant MBOX quoting and
2117   tested it, then added *posix-mbox* for those who liked the old
2118   behaviour and did not re-test -- the final code path was buggy.)
2120   In mails newly created and saved by S-nail(1) no From_ quoting at all
2121   will be used no more, but instead the rewritten MIME file classifier
2122   will detect unquoted From_ lines and enforce quoted-printable encoding.
2123   (This is an approach that is S/MIME compatible all through the way as
2124   the file data is not modified at all, but only encoded, so that the
2125   data checksum is not changed.)
2127   In yet existent mails that S-nail copies or moves around without
2128   reclassification an RFC 4155 compliant From_ line detector will apply
2129   MBOXO quoting (prepend a single '>') as necessary.
2130   Different to the old MBOXRD behaviour S-nail will neither quote yet
2131   quoted From_ lines ('>>From xy' -> '>>>From xy') nor will it unquote
2132   one quote level when reading etc. mails ('>> From xy' -> '>From xy').
2133   As a result the code could be simplified.
2135   This changeset also incorporates a fix for NetBSD PR bin/47453, as
2136   reported by Martin Brandenburg.  I.e., some mailers, noticeably
2137   UW-imap (with MBX format only?), use non-compliant From_ lines with
2138   RFC 822 date specifications.  Be aware of 'em.
2139   (RFC 4155 MBOX, and drop *posix-mbox* and foldergets().., 2013-01-06)
2141 - *rfc822-show-all* has been removed.
2142   It didn't work properly for more complex MIME structures, like
2143   message/rfc822 messages with attachments etc., just as i've seen today
2144   on the file(1) mailing list.
2145   So, instead of hacking it now i've dropped it and will come back with
2146   a better solution when the MIME and send layers have been overhauled.
2147   I.e., the real intent was to be able to specify that an embedded
2148   message/rfc822 is treated as a *unity*, and that's the goal.
2149   (Drop *rfc822-show-all*, 2013-01-23)
2150   [The manual will be adjusted in a different commit.]
2152 - *rfc822-no-body-from_* has been renamed to *rfc822-body-from_*.
2153   It thus must be set explicitly.
2154   On the other hand it now catches all cases...
2155   (*rfc822-no-body-from_* -> *rfc822-body-from_*, 2013-01-23)
2156   [The manual will be adjusted in a different commit.]
2158 - The new *charset-7bit* (defaults to US-ASCII) and *charset-8bit*
2159   (defaults to UTF-8) have been introduced.
2160   These are used if seven bit clean data is to be sent, and no
2161   *sendcharsets* are set or the convertion of all of them failed,
2162   respectively:
2164   - There is no functional change unless there is iconv(3) support.
2165   - There is no functional change unless you set them.
2166   (Introduce *charset-8bit* and *charset-7bit* variables.., 2013-01-18)
2167   [The manual will be adjusted in a different commit.]
2169   In addition the new *sendcharsets-else-ttycharset* variable can now
2170   be used to automatically use *ttycharset* as a *sendcharset(s)*,
2171   regardless of the new *charset-8bit* variable.
2172   (Add *sendcharsets-else-ttycharset* variable, 2013-01-24)
2173   [The manual will be adjusted in a different commit.]
2175   NOTE: before we apply charset conversion we now perform a string
2176   comparison to see wether character sets are identical.  If the strings
2177   match (case-insensitively), then *no* conversion is performed.
2178   This means that code like
2180     $ printf "LATIN1: \0376" | s-nail -Ssendcharsets= -s boom ./out.txt
2182   *succeeds* in an UTF-8 environment now, whereas older versions would
2183   fail with an "illegal byte sequence" error (unless the iconv(3)
2184   library of the system would not perform any conversion that seems
2185   superflous, of course).
2187   I thought about making this optional, but, in fact, if this would be
2188   done in an environment without iconv(3) support then the result would
2189   be equally corrupt.  And the way it is now we save the expensive and
2190   superflous conversions.  (See TODO for more.)
2192   Please *do* reread the manual section "Character sets".
2193   +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2195 - An attempt was made to improve MIME Content-XY: detection.
2196   It should be more RFC compliant, and just overall better :);
2197   a simple one-pass classifier cannot match libmagic(3), of course.
2199   This changeset removes support of the long obsoleted (4fee1ef,
2200   2005-01-06) *charset* variable, as well as for the
2201   *maximum-unencoded-line-length* variable that has been introduced in
2202   (48a652bd, 2005-07-26).
2204   For S-nail v14.0 it'll be no longer necessary to do
2206     $ tr -d '\015' < input | s-nail ...
2208   to transport files which use the $-DOS (terminal) newline (sequence).
2209   We still depend upon *sendcharsets* for a while, though.
2210   (Rewrite file-content classification.., 2013-01-02)
2212 - The new *mime-counter-evidence* variable can be used to force
2213   a classification of non-text MIME parts (attachments) by their
2214   filename, i.e., a "reverse-classification" just as would be performed
2215   if S-nail(1) would itself *send* the file(name).  This can help
2216   against some stupid MUAs (Apple Mail?) that send .diff etc. files as
2217   `application/octet-stream' parts etc.
2219   At a later time this may become a valued option, causing a temporary
2220   save of unnamed attachments followed by a MIME classification of the
2221   file contents, followed by forced treatment as plain text if it seems
2222   to be human readable.  But not yet.  Just to warn you.
2223   (Add *mime-counter-evidence* variable.., 2012-12-29)
2225 - The special "pipe-" command "@" can be used to force treatment of
2226   a MIME message part as plain text (e.g.,
2227   'set pipe-application/pgp-signature=@' will henceforth print those
2228   signatures inline and as plain text).
2229   (Introduce the special "@" "pipe-" command, 2012-12-27)
2231 - The MIME types (as from mime.types(5)) will now be cached.  Before
2232   all possible sources would have been opened, read and parsed for each
2233   and every message part that required detection of the MIME
2234   Content-Type:.
2235   The new "mimetypes" command can be used to show or clear that cache.
2236   (Add mime.types(5) cache.., 2012-12-27)
2238 - A small set of MIME types (template: ./mime.types) will now become
2239   compiled into S-nail(1), and be used as a fallback if there are no
2240   ~/.mime.types and/or no /etc/mime.types, or those didn't contain
2241   a matching type.  E.g., NetBSD 6 doesn't ship a default database.
2242   Also, file extensions will be matched case-insensitively (case of
2243   attribute values is not specified afaik?).
2244   (Introduce compiled-in mime.types(5).., 2012-12-21)
2246 - The undocumented *charset7* variable was removed.
2248 - The "Message X:" display leader has been changed and will henceforth
2249   be matchable via "^[-- Message \d+ -- \d+ lines, \d+ bytes --]:$".
2250   These lines can no longer be suppressed by setting the *quiet*
2251   option (which was yet possible for print and top, though undocumented).
2252   (Change "Message X:" display message.., 2012-12-20)
2254 - When displaying multipart messages the "Part X:" introductional string
2255   has been changed; if the Content-type: header is not *retain*ed, then
2256   this string will include the part's type and size.  Ditto for
2257   Content-disposition: and a mentioned attachment filename.
2258   This is a first step only, for the final version the MIME and send
2259   layers will have to be adjusted.  But the string will be matchable via
2260   a "^[-- #.* --]$" regular expression from now on.
2261   (Change "Part X:" display message.., 2012-12-20)
2263 - MIME boundaries in multipart messages are now handled better in that
2264   no boundary string should get through to the display.
2265  (Tweak MIME boundary detection.., 2012-12-20)
2267 - A couple of long standing, even pre-Heirloom mailx(1) memory leaks and
2268   segmentation violations, most of them related to configurations
2269   without alloca(3) support, as well as one leak that i have introduced
2270   when i implemented RFC 4155 MBOX handling, have been fixed.
2271   But S-nail should now survive non-alloca(3) configurations.
2272   (*memtracer* topic branch.)
2274 - The Base64 MIME handling has been rewritten completely.
2275   This was an urgent topic, because the old implementation (a) read in
2276   all lines of a base64 encoded text part, repeatedly resizing a string
2277   storage and repeatedly decoding that string until all the lines have
2278   been swallowed (i.e., or by accident the last decoded byte was
2279   a newline character, and that in turn may of course have fucked up for
2280   multi-octet encodings, dependent on the actual byte-order), (b) used
2281   function local static data to keep state in between multiple
2282   invocations, which messed up multi-byte/-octet encodings like this
2284     �5��ɽ���Aɥ����́��٥��������[lots of data follows]
2286   and (c) did not perform any error checking at all.
2287   The new one does not run into the problem that (a) tried to circumvent
2288   since leftover decoded data (as opposed to leftover *encoded* data) is
2289   transported along the call-chain for later use.  It adds a minimal set
2290   of error handling ('may now see "[Invalid Base64 encoding ignored]"),
2291   with more to become possible in later S-nail versions when the entire
2292   layers are reworked.  (Until then DOS newline sequences [CRLF]
2293   embedded into base64 will no longer be decoded to Unix LF newlines.)
2294   Base64 encoded lines will now be 76 characters long, as stated (as
2295   a maximum value) in RFC 2045, not 72 as before.
2297   The Base64 code core has been shamelessly stolen from NetBSD's
2298   Mail(1), and i guess it was the second time that this happened :=).
2299   (*base64-rewrite* topic branch; and reworked later on the *mime-cte*
2300   topic branch.)
2302 - The string allocation strategy has been tweaked some more to, i think,
2303   a final version (regarding algorithm).
2304   In normal non-interactive send mode it should now no longer need any
2305   dynamic memory at all (unless some dozen recipients are specified).
2306   (Several other places still use normal dynamic memory, of course.)
2307   (*dope-stringdope-again* topic branch.)
2309 - Support for NSS (Network Security Services) has been removed.
2310   I've never worked with it and are, regarding the complexity of
2311   network security, not willing to spend any time on it.
2312   SSL is installed on all systems i'm using and/or testing on by
2313   default, and so i've choosen to go this way.
2314   (It may be that sometime in the future S-nail will add support for
2315   libcurl(3) connectivity, and then it may happen that not only NSS
2316   support is reintroduced again, but also GNU TLS.  All of that applies
2317   to network connectivity only, however, not to S/MIME afaik.)
2318   (*drop-nss-support* topic branch.)
2320 - I finally got a glue and understood that Sourceforge does (a) not
2321   support symbolic links and (b) doesn't like dots as regular parts of
2322   filenames.  This means that all this time the promised s-nail.tar.gz
2323   symbolic link did not work, and that s-nailv13.3.tar.gz wasn't
2324   accessible either (via the web interface).
2325   In the future S-nail(1) will not provide any more symbolic links (the
2326   Sourceforge website offers a "download latest" thing which seems to
2327   work), and use underscores in filenames -- s-nailv13.3.tar.gz has been
2328   renamed to s-nailv13_3.tar.gz.  The tags continue to use dot notation.
2329   Thanks.
2331 - The *heirloom-plus* support branch has been removed.
2332   The code bases diverged a lot and even more to come.
2333   It doesn't make sense to put any effort in that.
2335 v13.3, 2012-11-11
2336 -----------------
2338 - Configuration on UnixWare 7.1.4 will succeed (shell issue fixed).
2340 - Even on DragonFly BSD the IMAP GSSAPI is now found
2341   (in /usr/pkg/include/krb5/gssapi/gssapi.h).
2343 - Support for pkgsrc(7) systems and automatic integration of
2344   C_INCLUDE_PATH and LD_LIBRARY_PATH path configurations.
2345   Please see INSTALL.
2347 - Fixes a mortally embarassing regression that the current maintainer
2348   introduced before i really knew what i was doing, in (If *record* is
2349   set, avoid writing dead content twice.., 2012-09-14).
2350   It hit users that send through a MTA and have *record* set; in this
2351   combination data would not have reached the MTA.
2352   Interested parties may read the comment in savedeadletter() (part of
2353   the changeset) or the (Fix MTA/*record* descriptor clash..,
2354   2012-11-10) commit log.
2356   Deepest apologies to tortured users from the current maintainer!
2358 - RFC 4155 compatible MBOX file handling has been introduced, and so
2359   S-nail is now on par with (at least) NetBSD Mail in respect to this.
2360   It can be turned off with the new *posix-mbox* variable, which you may
2361   need to use since not all MUAs are capable to dig those MBOX files.
2362   E.g., less cutting-edge (.-) MUAs fail for this:
2364    |From - Thu May 10 20:40:54 2012
2365    |Date: Wed, 07 Nov 2012 11:48:30 +0100
2366    |To: super@duper.com
2367    |Subject: super1
2368    |
2369    |From me.
2370    |
2371    |From - Thu May 10 20:40:54 2012
2372    |Date: Wed, 07 Nov 2012 11:48:30 +0100
2373    |To: super@duper.com
2374    |Subject: super2
2375    |
2376    |>From - Thu May 10 20:40:54 2012
2377    |From - Thu May 10 20:40:54 2012
2379   I'm not completely happy since S-nail *does* still quote those lines,
2380   how rare they may be -- it *does* modify message content.  mutt(1)
2381   implements something more clever and that is quoted-printable encoding
2382   of the "F" from "From", when seen at the beginning of a line.
2383   This, when applied to just *any* "^From", will be a non-modifying and
2384   all-compatible solution.
2386 - SEND_MBOX handling has been changed to discard any Content-Length: and
2387   Lines: headers when it rewrites a message by default.
2388   I know that mutt(1) generates them (why, after
2389   http://www.jwz.org/doc/content-length.html?).
2390   Anyway, S-nail does neither use nor manage them, so that any
2391   modification renders those fields invalid, and then it seems best to
2392   discard them anyway.
2393   You may turn the new behaviour off with *keep-content-length*.
2395 v13.2, 2012-11-03
2396 -----------------
2398 The problem was that i really wanted to release on a 25th.
2399 But i have been able to improve S-nail(1) some more, so that this is
2400 possibly the first real release of it.  So i'll add only things that
2401 have changed since v13 -- please see below for the complete picture.
2403 - A new CONFIG=CUSTOM make directive was added, and the new user.conf
2404   variables WANT_SCORE and WANT_DOCSTRINGS have been added.  It is
2405   possible to create a floating-point free S-nail(1) now.
2406   Please see INSTALL.
2408 - If a feature is disabled not even functions stubs should remain now.
2410 - Many places which will work only with local filenames do now actually
2411   check that the target is a local filename.
2413 - Space-separated lists should work again, at a few places at least.
2415 - Tilde commands will be possible, even with -r.
2417 - The *sendmail-progname* has been added after NetBSD 6 dropped the
2418   send-mail entry in mailer.conf(5), which broke S-nail(1).  Now users
2419   have an option.
2421 - When editing messages via ~e or ~v file and pipe addressees will no
2422   longer be lost.
2424 - If recipients occur multiple times spread over lists, i.e., To:, Cc:,
2425   Bcc:, then only one occurrence remains, and in the "highest-order"
2426   list.
2428 - The "list" command prints the list alphabetically sorted (somewhat).
2430 - The "help" and "?" commands take an optional argument that shows
2431   a synopsis string for the given command (unless WANT_DOCSTRINGS was
2432   false).
2434 - String allocations are now more efficient.  The situation can still be
2435   improved.  However, for the first time Berkeley Mail(1) integrates
2436   harmonically into the system allocator, which may madvise(2) unused
2437   memory to the operating system as necessary and/or possible!
2439 v13.1, 2012-10-25
2440 -----------------
2442 Well, a version number 13 is anyway an ugly thing...
2444   commit 4f534bb33b7c911272cc66a0e3a9e47b73ad8deb
2445   Date:   2012-10-25 20:46:07 +0200
2447       FIX MIME quoted-printable encoding (char cast)..
2448       
2449       (;-{
2450       Auauauauau!!
2451       
2452       Well, one of the things that have already been started in v13 is
2453       the turn from using "int" when working with 8-bit characters to
2454       "unsigned char" (and as long as we do not support wide
2455       characters).
2456       
2457       Unfortunately one very important piece of code, that is handling
2458       encoding to quoted-printable, still used integer instead of
2459       unsigned char, which caused an automatic extension cast to take
2460       place, and that resulted in a messed up output.
2461       Sorry!
2463 v13, 2012-10-25
2464 ---------------
2466 I want to give prominence to the following people that helped to improve
2467 S-nail(1) during this development cycle, in order of appearance: Martin
2468 Neitzel, Ezequiel Garzón, Björn Persson, Paul Vojta, and, especially,
2469 John Dodson for warm words from beautiful Australia!  Many thanks also
2470 to Christos Zoulas.
2472 After i've officially forked nail(1) aka Heirloom mailx(1) as S-nail(1)
2473 on 2012-09-18 i have been able to work five weeks almost fulltime on
2474 S-nail(1) development.  The first three weeks can be characterized as
2475 hectic fireworks here and there, but then it got better and i was able
2476 to work more or less topic-centric.  In the meanwhile S-nail(1) is more
2477 than 230 commits away from the Heirloom base--and drifting further apart.
2479 S-nail(1) v13 is the first release of S-nail(1), but it was forked from
2480 Heirloom mailx(1) 12.5 7/5/10 that arose from Berkeley Mail 8. unless
2481 i'm mistaken.  What characterizes S-nail(1) v13?
2483 - The build system has been reworked almost completely.
2484   It is possible to fine-tune which features should be present in the
2485   binary and which don't.  The name of the binary can be chosen, and
2486   that choice is reflected all through the manual and the template
2487   resource file.  The manual is always complete and thus may document
2488   features that are not supported by the actual binary, though.
2489   Please see INSTALL for more.
2491 - Compiler warnings can now be used.  Please see the example WARN= flags
2492   in the Makefile, but '-Wall -Wextra -pedantic' should be silent though
2493   certainly insufficient to reflect the complex work of modern compilers.
2495 - The following recipient address list combines some of the major
2496   improvements that have been made:
2498     <addr1@cdröm.de>  (bier) , ./file1,
2499     Steffen Smöregäs (Humbabä) <sauer@bäüer.de> (Hummpäa)    ,
2500          sabberlot@träbbel.de  ,  (bier2) <a2@bür2.de> ,
2501        a3@b3.de (bier3)  , <a4@b4.de> (bier4, und \"bier5\")  ,
2502     |cat > pipe1 ,   (bier 6) <a6@bür6.de>  ,   ./file2        ,
2503     (co\$mm1) abc1@düf.de (cö,bmm,2)   (co\"m\"m.3) ,
2504     co\$bmm1 \"c,ömm2\" co\"m\"m.3 <abc2@däf2.de>  ,  |cat > pipe2 ,
2505     moppel@höppel.org
2507   That, on a single line, may be given to ":m" or (quoted) on the
2508   command line, or to "~c" or whatever, and it will work as expected
2509   (well, everything else would be a bug..) and result in the following
2510   sendmail(1) invocation:
2512   SENDMAIL.SH
2513   <-i a2@xn--br2-hoa.de a3@b3.de a4@b4.de a6@xn--br6-hoa.de abc1@xn--df-xka.de abc2@xn--df2-qla.de addr1@xn--cdrm-7qa.de moppel@xn--hppel-jua.org sabberlot@xn--trbbel-cua.de sauer@xn--ber-qla4j.de>
2514   >>>>>>>>>>>>>>>>>
2515   Date: Thu, 25 Oct 2012 17:12:15 +0200
2516   To:
2517   Cc: Steffen =?utf-8?Q?Sm=C3=B6reg=C3=A4s?=
2518     =?utf-8?Q?_(Humbab=C3=A4)?= <sauer@xn--ber-qla4j.de> (=?utf-8?Q?Hummp=C3=A4a?=),
2519     sabberlot@xn--trbbel-cua.de, moppel@xn--hppel-jua.org,
2520     <addr1@xn--cdrm-7qa.de> (bier),
2521     co$bmm1 =?utf-8?Q?"c,=C3=B6mm2"?= co"m"m.3 <abc2@xn--df2-qla.de>,
2522     (co$mm1) abc1@xn--df-xka.de (=?utf-8?Q?c=C3=B6,bmm,2?=) (co"m"m.3),
2523     (bier 6) <a6@xn--br6-hoa.de>, <a4@b4.de> (bier4, und "bier5"),
2524     a3@b3.de (bier3), (bier2) <a2@xn--br2-hoa.de>
2525   Subject: Re: SubjectTest
2526   MIME-Version: 1.0
2527   Content-Type: text/plain; charset=us-ascii
2528   Content-Transfer-Encoding: 7bit
2530   body
2531   <<<<<<<<<<<<<<<<<
2533   So list parsing has been fixed, IDNA support has been added, and it is
2534   possible to mix pipe and file recipients *and* multiple thereof, and
2535   the result is still correct for *all* of them.
2536   I think this kind of list can be given wherever a user can directly
2537   enter such a list.  And i think all that is unique to S-nail(1).
2539 - When writing back edited messages the target MBOX mailbox can no
2540   longer become "corrupted" when the trailing newline was removed during
2541   the edit.  Also affected FreeBSD and NetBSD mail(1).
2543 - A security fix for CVE-2011-2895 was applied.
2545 - The generated Message-Id: is now more human-friendly.
2547 - The -h command line option has been dropped.  Use "-O -h XY" if your
2548   MTA really supports that.
2550 - The -O and -r command line options no longer enforce a one-shot send
2551   mode, and instead persist for the duration of the entire session.
2553 - Variables set via the -S command line option are now (un)set twice;
2554   immediately and after all the resource files have been loaded.
2556 - Other new or changed options/commands, in order of appearance:
2557   recipients-in-cc, smime-sign-include-certs, quote-fold, stealthmua,
2558   add-file-recipients, write, rfc822-no-body-from_, rfc822-show-all,
2559   mail/Mail, idna-disable, idna-strict-checks, ??
2561 - In the codebase itself an effort to reduce duplicate work and
2562   introduce caching, and to minimize the use of local variables, was
2563   started, but that is long term.  A lot of improvements here and there,
2564   too, like using the well MD5 optimization from Wei Dai, Chris Torek's
2565   hash algorithm for hash tables etc.
2567 - Incredibly important: an heraldic animal was found: snailmail.jpg!
2569 The full history can be inspected by issuing the git(1) command
2571   $ git log --reverse s-nail..s-nailv13
2573 A new TODO has been introduced, and it is getting longer and longer.
2574 Thanks.
2576 # s-ts-mode