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:
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}";
21 Thanks to Georg Schlisio.
23 Several bugfixes: it's definitely more than enough now, v14.7.8 in mid
24 2015 will have to and will definetely ship with a test series.
26 NOTES, ChangeLog (packager-affine)
27 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
29 - The global default nail.rc file now sets *sendcharsets* to
30 'utf-8,iso-8859-1', i.e., the order has been reversed.
33 Also *bsdflags* is no longer set by default. [e39679b]
38 - Fix: in some configurations a `resend' message would end up with two
39 'Resend-Date:', instead of one such and a 'Resend-Message-Id:' field.
42 - The internal exit status of a `mail' command will now be 0 upon
43 success and 1 on failure, not vice versa. [1112375]
45 - FIX: dependend on the set of retained / ignored etc. headers a MIME
46 part with a *pipe-CONTENT/SUBTYPE* set to the special '@' plain-text
47 command would try to execute a command equal to the name of the last
48 header of the MIME part, most often 'Content-Disposition:'.
51 - Detected that the `fwd' / `forward' command(s) used the false (imho)
52 mode to strip the address from the command line, now it's possible to:
54 ? fwd MSG-SPEC "my friend <his@addr>"
57 - New variable *reply-strings*. It's more unlikely now to end up with
58 threads which read 'Re: Aw: Re: Aw:' etc. [topic/retrim]
60 - Because of user inconvenience, introduce a temporary hack not to mince
61 user input lines in history entries, even if this means that each and
62 every line is first duplicated before it is used. So now the `fwd'
63 command as above will enter history in the given form. [f1ded4c]
65 ChangeLog (purely technical)
66 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
68 - Fixed one missing IMAP / IMAP-cache string relaxation restore. (In
69 about six weeks or so this condition hit me once). [66ef04f]
71 P.S.: I still see an occasional IMAP-cache crash that occasionally
72 happens after several connects and diconnects without intervening
73 folder changes; after being bitten once by that even after commit
74 [cf7f63d] it seems this is a deeper structural problem, but i'll try
75 to track that down for v14.8.
80 Jan Chaloupka (jchaloup AT redhat DOT com) reported on nail-devel@ that
81 Heirloom mailx can be crashed by setting *smtp* in combination with with
82 *from* effectively set to a NULL string. I first was optimistic, but it
83 turns out S-nail can, too.
88 Fixes maildir code which was broken in May (too).
89 Readds auto-detection of compressed boxes (i.e., if `$ Fi mybox' is
90 executed and `mybox' doesn't exist, but `mybox.bz2' does, then the name
91 is automatically expanded and `mybox.bz2' is used instead).
92 Sorry for the inconvience.
97 Thanks to Mantas Mikulėnas (grawity AT gmail DOT com).
99 This is a bugfix release which fixes a regression in the handling of
100 user credentials when *v15-compat* is not set, introduced in v14.7.1,
103 In other words, $folder *requires* the @ to be percent-encoded, but
104 $password requires the *opposite*.
106 And that is not valid when *v15-compat* is not set.
111 Thank you: Gavin Troy, Bob Tennent (rdt AT cs DOT queensu DOT ca),
117 v14.7.2 brings incompatible credential lookup changes when *v15-compat*
118 is set; the lookup order now is:
120 - *user-HOST*, *user*, [.netrc] ...
122 - *password-USER@HOST*, *password-HOST*, *password*, [.netrc] ..
124 Changelog in reverse order, oldest first.
126 ChangeLog (packager-affine)
127 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
129 - New configuration option WANT_AGENT to support *agent-shell-lookup*
130 (, -HOST, -USER@HOST) lookups of potentially encrypted password
131 storage (inspired by Gavin Troy) [b2d41d3,516a7f0]
133 - MAILSPOOL is now automatically set to /var/spool/mail if that
134 directory exists, only otherwise we use /var/mail [4a83018]
136 - WANT_GSSAPI is again enabled by default - Tarqi Kazan has correctly
137 pointed out that the system environment at compilation time is likely
138 to reflect the politics and/or preferred configuration of packagers,
139 and self-compilers have always the chance to configure themselves
140 (Tarqi Kazan) [398eb29]
145 - `un{,save,fwd}{ignore,retain}': let '*' mean 'all fields' [a1f1da9]
147 - Bugfix: `setenv' takes 1-1000 arguments, not exactly 2 [daf2ea8]
149 - New command: `varedit' edits the value of an existing variable in
152 - New commands: `File' (and `Folder') explicitly open a mailbox in
153 readonly mode, thus finally offering the possibility to avoid flag
154 updates etc. whenever so desired [b1f5f2d]
156 - Bugfix: since May the header display would display tabulators in an
157 UTF-8 environment as replacement characters [870b314]
159 - *mime-counter-evidence* now is a valued option. Set bit two (value
160 two) and the detected real MIME type is carried along with the MIME
161 part so that it is used instead of `application/octet-stream' to
162 lookup possibly registered *pipe-CONTENT/SUBCONTENT* handlers.
163 (Bob Tennent) [81473f8]
165 Also pipe handlers will now be passed several MIME informations via
166 environment variables, please see the manual for more.
167 (inspired by Bob Tennent)
169 - Resource file loading now prints a diagnostic when loading was stopped
170 due to a processing error. This behaviour is also required by POSIX.
171 (Bob Tennent) [fd42684]
173 - Incompatible changes in credential handling, as above.
176 - *netrc-lookup* is now a real chain and has -HOST and -USER@HOST
177 variants (though the latter only for password lookups) [59fc226]
179 - .netrc machine names are now lowercased before use [28c6fee]
181 - The manual has seen some reorderings, a TOC will be shown if you
182 '-dWANT_TOC=1' when using *roff(1) (as has been done for the online
185 - There is a new file `THANKS' [6b5cb3e]
187 ChangeLog (purely technical)
188 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
190 - IMAP and IMAP cache now use string relaxation which *drastically*
191 reduces memory usage on large mailboxes [e5598ce]
193 - Fixed compilation on old OpenBSD installations without wordexp(3) as
194 well as with GSS-API and WANT_AMALGAMATION and now using #pragma's to
195 get rid of some warnings [topic/ccstuff]
200 Thanks to Georg Schlisio (g DOT schlisio AT dukun DOT de),
201 Wiesław Magusiak (wiemag AT poczta DOT onet DOT pl), Tarqi Kazan and
204 Very special thanks: Gavin ".. .. Speeding kills. .." Troy from Ireland
205 and Ypnose "Gloria?? C'est une mouton!" from France.
207 Changelog in reverse order, oldest first.
209 ChangeLog (packager-affine)
210 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
212 - WANT_NOGETOPT is gone. [73f0605]
214 - WANT_NETRC: new option (on by default; see below). [topic/netrc]
219 - Manual slightly improved in respect to LC_ALL etc. settings.
220 The knowledge treshold value is much too high for a normal user;
221 i hope that at some later time we can offer much more (at least
222 optional) automation on the protocol level (e.g., timeout values,
223 protocol features supported by servers etc.), at which time we will be
224 able to make the manual more user friendly. (Georg Schlisio)
225 [56fab16,bd1e11f; ArchLinux Wiki]
227 - The `@' search command has new "header" keyword, which searches in all
228 headers. Shortcuts: "<" = "header", ">" = "body", "=" = "text".
229 ("body" and "text" still perform full text searches _including_ MIME
230 part header content.)
233 - The -O command line option is legacy and will vanish in v15.0.
234 Arguments to the MTA can henceforth be passed after a `--' separator
235 on the command line, as in
236 echo bla|s-nail -vvd -s sub some@where -- MTA ARGS MADE EASIER
239 - New *sendmail-arguments* option; content will be (converted to list
240 and) joined onto other MTA command line arguments (Wiesław Magusiak)
243 - *colour-pagers* is gone -- instead we have *colour-pager*, which is
244 a boolean and off by default. We again set LESS (and LV) environment
245 variable(s) to automatic turn on colour support in $PAGERs, but only
246 if the variable in question is not yet set. (That is -- in order to
247 get coloured $PAGER you at least have to set *colour-pager* now.)
248 (Tarqi Kazan) [b794f5e]
250 - Terminals no longer need to be added to *colour-terms* if their name
251 (in $TERM) includes the string "color". (Gavin Troy) [ce2c7f6]
253 - Karol Blazewicz opened a discussion in the ArchLinux Forum (s-nail
254 14.7-1 doesn't work [1]) but i didn't realize his actual problem --
255 luckily Gavin Troy wrapped his head around the real problem, and that
256 finally opened my eyes against a whole can of worms in the new URL
257 and credential handling!
259 Then Ypnose also came along and reported an issue with IMAP handling
260 that was related to the compatibility credential handling of the new
261 URL and credential layer.
263 (Gavin Troy, Ypnose, Karol Blazewicz) [a5c40ba]
264 [1] <https://bbs.archlinux.org/viewtopic.php?id=182653>
266 - We now also have -HOST and -USER@HOST *smtp-use-starttls*. [bfb186a]
268 - Gabby history entries will now be saved and restored as such, in case
269 *history-gabby-persists* is set. (For this to work properly
270 a possibly existing history file needs to be reset.) [b5502cc]
272 - We now have optional .netrc support (*v15-compat* set).
273 Set *netrc-lookup* and we'll look in $NETRC / ~/.netrc for user
274 credentials. The `netrc' command will show or clear the entry cache.
275 E.g., this is my new account macro:
277 set v15-compat ssl-method=auto
279 set smtp=smtps://smtp.yandex.ru:466 smtp-auth=plain smtp-hostname= \
281 ghost xp 'fi %:pop3s://pop.yandex.ru'
282 ghost xi 'fi %:imaps://imap.yandex.ru'
284 As an extension to the .netrc syntax we support a single
285 introductional subdomain wildcard, e.g., my relevant ~/.netrc entry:
287 machine *.yandex.ru login NAME password PASS
289 Following a suggestion of Gavin Troy we have multi account support,
290 i'm not quite sure wether this is portable across .netrc using
291 applications, e.g., i could have written the above like
293 machine *.yandex.ru login NAME
294 machine *.yandex.ru password PASS
295 machine *.yandex.ru login NAME2
297 (I hope i don't lie and this really works.)
298 (Suggested by Gavin Troy and Ypnose, testing and feedback Gavin Troy)
301 - Add primitive support for RFC 3798 via the new
302 *disposition-notification-send* variable. This is not yet
303 a truly conforming implementation (it simply injects the necessary
304 header) and it requires the *from* variable to be set.
305 More in the far future, sorry. (Wiesław Magusiak) [ca31d32]
307 ChangeLog (purely technical)
308 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
310 - Interrupt protection during (recursive) macro calls with `localopts'
311 on should now no longer be crashable at all. Quote [a4e85c0]
312 It is of course all pretty intermediate until we have a signal
313 manager and we can actually poll signal states at those places where
314 we are capable of and desire to handle them. But it should work
315 today and look nicer than it did.
316 [25caeb9,592499f,a4e85c0]
318 - `ghost' handling performs more strict name checking on ghost names in
319 order not to allow names which would later not be parsed as a whole.
322 - Dropped catopen(3) support (we never really had it)! We will have
323 a new S-nail-specific gettext(3)-alike thing in v14.8.
324 [topic/i-wanna-have-a-dog]
329 Thanks go to Tarqi Kazan (tarqi AT cfs DOT or DOT gs) and Johannes
330 Löthberg (johannes AT kyriasis DOT com), as well as Martin Neitzel.
331 (And the winner is... Gavin Troy for his role in "Silence from Ireland".
337 - Since S-nail now performs more-or-less proper percent-encoding as per
338 RFC 3986 users of *imap-cache* have to (either throw away and recreate
339 or) adjust their local cache, e.g. as follows (adjust CACHEDIR and
340 echo(1) to mv(1) as necessary; won't work with paths with whitespace):
342 $ CACHEDIR=${HOME}/traffic/.mail-cache; \
343 find ${CACHEDIR}/ -depth -type d |
346 r=`echo ${b} | sed -e s/:/%3A/g -e s/@/%40/g`
347 if [ ${b} != ${r} ]; then
349 echo ${d}/${b} ${d}/${r}
356 - New variable *history-gabby* can be set to add much, much entries into
357 the history than is done normally.
358 For the NCL only, setting *history-gabby-persist* will cause those
359 entries to be saved into *NAIL_HISTFILE*, too, which they are not by
360 default with it (the other command line editors should always save).
363 - The `online' alias for `connect' has been obsoleted. [d5cfde4]
365 - New CONFIG=MAXIMAL make option. [c0d4087]
367 - Support compilation on new OpenBSD with their reduced OpenSSL clone.
368 This topic also includes the real solution for getting rid of
369 a strcat(3) warning that i reintroduced with s-nail-14_5_2-smime.patch.
372 - Our -r command line option is now mapped to a `-f' MTA option -- the
373 sendmail(1)-compatible `-r' is long obsoleted! (Johannes Löthberg)
376 - New `elif' command so that we now have if..elif..else..endif.
377 If the optional regular expression support is available the new
378 conditions `=~' and `!~' can be used to perform (case-insensitive)
379 regex matching with `if' and `elif'. [topic/condsplus]
381 - New `~R' tilde escape (like `~r', but indent lines). [fae1f29]
383 - Improved multibyte-safety (e.g. for *prompt*) and a bit of
384 compatibility ("support" would be a wording much too strong) for
385 bidirectional text via the new *headline-bidi* variable.
386 [topic/unibidi, topic/mbbidi]
388 - Diversified behaviour of -v command line option as well as *verbose*
389 to support multiple levels of verbosity; the latter is now ternary
390 when set and boolean when unset.
391 This was the ground on which SSL certificate validition verbosity was
392 implemented (*verbose* level 1: certificates, level 2: network
393 communication et cetera), though much is left to do.
394 This has been suggested long ago by (Martin Neitzel). [topic/smverb]
396 - ^C in compose mode with *ignore* set acts now POSIX compatible
399 - If *encoding* is set to base64 then we don't ignore that user
400 wish and use quoted-printable (when 7bit doesn't suffice) [2ca201f]
402 - New `urldec' and `urlenc' commands. [63e869e, fbd95e8, 0af5b1b]
404 - New `setenv' and `unsetenv' commands. [5e2ed79]
406 - Support for GSS-API authentification has been added (request and
407 testing by Tarqi Kazan).
409 Note that the following implicit relation is gone:
411 If set to `login', or if unset and smtp-auth-user is set, `AUTH
414 This topic branch also added support for the SUBMISSION protocol of
415 RFC 6409, so re-reading the *smtp* manual may bring benefits.
418 - A new, backward-incompatible URL syntax and credential lookup scheme
419 has been introduced that is accessible when the new *v15-compat*
420 variable is set. If used, credential lookup occurs before a network
423 The new manual section "URL syntax" describes the new credential
424 variable chains, and documentation of *from* should be read again, as
425 i now also refers to the new *smtp-hostname* variable.
427 Note that the generated `Message-Id' has also changed.
429 (Messy old way pointed out by Tarqi Kazan)
430 [topic/url, topic/cred]
432 - `resend' should be truly fixed and (fwiw) can also resend to pipe and
433 file addressees. [topic/resend]
435 - Support for empty lines in macro and account definition blocks (as
436 required by POSIX for startup files in general) [43cdf92]
438 - The nail command line editor gained the possibility to use PgUp /
439 PgDown / Home / End instead of z[-+0$] commands on xterm-compatible
440 terminals; and ^O equals a `dp' there, too. [8c57be2, 7c30e61, 95e672f]
445 Many thanks to Gaetan Bisson.
450 - Avoid segmentation faults with -L option if s-nail is opened on
451 non-existent mailboxes, e.g. '$ MAIL= s-nail -Lx'. (Gaetan Bisson)
457 Thanks and greetings to Gavin Troy, Gaetan Bisson and Tarqi Kazan (tarqi
458 AT cfs DOT dyndns DOT biz).
460 ChangeLog (packager-affine)
461 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
463 - WANT_AUTOCC knows that clang(1) version 1 can dig -Wstrict-overflow=5.
466 - '$ make test' should work even if you are not steffen.
467 (Gaetan Bisson, Gaetan Bisson, Gaetan Bisson, Gaetan Bisson,
468 Gavin Troy, Gavin Troy) [8b796ba]
473 - *autoinc* is gone -- this is *newmail*. [07a8462]
475 - Working with large(r) IMAP boxes should work again without causing
476 segmentation violations. (Gavin Troy) [761dd87, b0ce180]
478 - With our builtin getopt a.k.a. WANT_NOGETOPT=1 usage of the -L option
479 caused segmentation violations. (Tarqi Kazan, Gaetan Bisson) [f2c2646]
481 - The decision wether we need $PAGER or not now also incorporates the
482 informational lines we inject for messages. [316b4cd]
484 - Drop `defines', add `unaccount', rename `undefine'..
485 The `defines' command has been united with `define' -- just like
486 `account' will list all defined accounts when used without arguments
487 `define' will now do so for macros. And `undefine' is the new name of
488 `undef'. The new command `unaccount' can be used to delete all given
489 accounts, in equal spirit to `undefine' and macros.
490 All of this is still vulnerable against recursivity, e.g., deleting
491 an executing macro still works, but don't that. [b0b3275]
493 - Rename `var-inspect' to `varshow'; silly oversight that `var-inspect'
494 will try to lookup a variable "-inspect". Ouch. [afffd30]
496 - Without HAVE_ICONV the character set iterator sofar used
497 *charset-8bit* as the last resort, whereas it should have used
499 P.S.: All this still preliminary, we await the MIME and send layer
500 rewrite to calm down the stuff for real. [edc3226, df9aefd]
502 - During `~@' editing it is possible to leave the possibly endless
503 character set selection loop by interrupting via ^C.
504 In the meanwhile this effectively drops the currently edited
505 attachment and leaves the entire attachment selection session; it
506 doesn't make sense to make it any better until we have our signal
507 manager and stop jumping around.
509 This changeset should also fix dangling Content-Xy MIME information of
510 attachments which were in the same slot before, e.g., if #1 was
511 a message attachment and that was changed on-the-fly to be a real file
512 attachment then the Content-Description would still have stated that
513 it is a message attachment.
516 ChangeLog (purely technical)
517 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
519 - Since it has been decided to remain compatible to ISO C89 we cannot
520 use the ISO C99 `z' format string modifier (printf(3)).
521 Since quite some time we make efforts to provide our own `ZFMT' macro
522 (in `nail.h') which provides somethint compatible, but on 32-bit
523 platforms compilers often complain nonetheless.
524 Therefore we now also have a compile-time assertion that proves that
525 our `ZFMT' macro is really correct. [397e4d1]
530 Many thanks to the perpetual Gavin Troy.
532 - Faulty notational change of system call return values from `<0' to
533 `==-1' caused endless waitpid(2) loop. [d6f316a; test(!): 79fd761]
536 - (GLibC) STD I/O overoptimizes rewind(3) so that underlaying file
537 descriptor offset is not reset to 0. Generalize the already
538 used `really_rewind()' hack and use it not only in
539 `savedeadletter()' but also in `page_or_print()'. It is likely
540 that this not also fixes `history' listing but also some other
541 things which go through the pager, dependend on the setting of
542 *crt* etc., and on at least GNU/Linux systems. [463660f]
544 Note: standard I/O does NOT offer a possibility to do this in
545 a non-hackish way. It is thus likely that S-nail will gain
546 a completely new I/O layer in the future. That'll also be faster.
549 This note is false: POSIX Issue 7 overloaded the meaning of
550 fflush(3): when used on readable streams the file offset of the
551 underlaying file descriptor is adjusted to that of the stream.
552 (nail.h: adjust really_rewind(): POSIX Issue 7 defined a way..)
553 uses this official approach instead if _POSIX_VERSION>=200809L.
555 - Old shells will now correctly execute an error-condition
556 execution path in `mk-conf.sh'. [afef55f]
561 Thanks to Andy Switala (andy DOT switala AT gmail DOT com).
562 And thanks to all package maintainers for their stamina.
564 At the first workday after the release i've run into a bug that was
565 caused by an oversight, a double-Fclose() that would be harmless if we
566 wouldn't forcefully panic() when we encounter it!
568 So i've spent another week on a review, and despite fixing many
569 additional notational oversights i haven't found more oversights of
570 newly introduced problems. On the other hand i've found and fixed some
571 old problems during the review, and tweaked some other things:
573 - The INSTALL file now has a `Current codebase state' section.
575 - Commands invoked via `!' should now be interruptable.
576 I'm afraid the exit status of such a command will not be reflected by
577 the return value of the `!' command yet, but hey, at least `!sleep 10'
578 can now be interrupted -- try this with another Berkeley Mail!
581 - All credential prompts should now be interruptable.
582 (Inspired from Andy Switala) [c3bb2a2]
584 - 'make test' will now test a silly S/MIME case when WANT_DEBUG (or
585 'make devel') was used. [8cff17f]
587 - *batch-exit-on-error* should now look at the exit status of *every*
588 command when the command loop ticks. [c7e7d53]
590 - The new `[?name-list]?search-pattern' search expression has been
591 changed to `[@name-list]@search-pattern' -- like this it doesn't clash
592 with the `?' help command and can thus be used on a line by itself,
593 causing the default command (`next') to be invoked on its' result,
594 shall there be one. Ok, yes, that was surely also an oversight.
597 - *attrlist* must now be exactly 13 characters, just as it should
598 be. An error message is printed if not. It was always komisch,
599 but i'd buggified it somewhen in the past. Now fixed.
602 - The NCL WANT_TABEXPAND feature now also works if *newfolders* is
603 set to `maildir'. Yet, if a folder was assumed to be of maildir
604 type, shell globbing would not occur. [part of f5c184c]
606 - The `X-Decoding-Data' S/MIME header field was set to the epoch
607 origin instead of NOW in v14.6.
609 Also the `certsave' command now supports file globbing (i.e.,
610 '~/.certs/' should end up in your $HOME now).
611 [both part of 7e0aec7]
616 + With this release the S-nail codebase has been converted to my usual
617 style of function-code-flow and notation.
619 ?0[]$ git diff --shortstat v14.5.2..HEAD
620 55 files changed, 28065 insertions(+), 25356 deletions(-)
621 ?0[]$ git diff --ignore-all-space --shortstat v14.5.2..HEAD
622 55 files changed, 14664 insertions(+), 11955 deletions(-)
624 Maildir and S/MIME support have been restored, and a MIME bug that
625 could have led to missing data in header display+ has been fixed.
626 Ah, and users of compressed boxes should now feel luckier, too --
627 at least once they've realized that the compress extension is no
628 longer appended automatically, but must be given explicitly.
630 Thus: i hope that all those i-am-new-to-the-codebase bugs i've
631 introduced over a year ago have been found and fixed, and that
632 v14.6 is the true "sweet sixteen" (months of maintainership).
634 ChangeLog (packager-affine)
635 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
637 - If WANT_AMALGAMATION is set, `-pipe' will be added to our CFLAGS
638 (which are only honoured with WANT_AUTOCC, of course). [1330411]
640 - New configuration option: WANT_IMAP_SEARCH, enabled by default.
642 The regular expression support for IMAP-style search expressions has
643 been removed again: it changed the IMAP search semantic in that it
644 couldn't be executed on the server, but only local, and the syntax
645 sucked, too. (And we have a new `?' search expression.) [402b7c6]
647 - CONFIG=MEDIUM and CONFIG=NETSEND now both WANT_REGEX. [dee954e]
649 - The `make test' target should *really* work gracefully, now that usage
650 of the `-#' command line option also sets the folder to be opened to
651 `/dev/null'. (Still no `void' box in sight.) [0119d514]
653 - All published patches may also be found in a new [patches] branch.
658 - Several fixes that saw published patches (with equivalent
659 functionality), and are thus described in NEWS, are included:
661 . s-nail-14.5.2-sort-alt.patch
662 Fixes a hasty commit that introduced string relaxation in a faulty
665 . s-nail-14_5_2-mimeheader.patch
666 Fixes data loss if multiple MIME encoded-words follow each other in
667 header bodies. [c81afce]
669 . s-nail-14_5_2-maildir.patch
670 Effectively restores proper maildir support. [1c2563b, 13f325f]
672 . s-nail-14_5_2-smime.patch
673 Fixes an off-by-one error and, in effect, restores S/MIME sign and
674 encryption etc. support. [e759f75]
676 - The `screen' terminal type is by default recognized as being
677 colour-capable. [e759f75]
679 - With the NCL command line editor and WANT_TABEXPAND hitting <TAB>
680 should now act as if an "implicit asterisk" had been given in case
681 there was no expansion of the original user input; e.g., '? ls <TAB>'
682 may exceed your line limit now ;). [0910a8f]
684 - The S/MIME cipher list was outdated, RFC 5751 requires AES-128 as
685 the default, the RC2 ones are long obsoleted (etc.). Also we now
686 should handle that OpenSSL may not support individual algorithms.
688 Note: we use the option value `des3' for `DES EDE3' from now on!
689 (Maybe see *smime-cipher-user@host* manual entry.)
691 *ssl-method* may now also be assigned the new (default) method `auto'
695 - Messages will now be stored in a set *record* even if only file or
696 pipe addressees were given. [a11935b]
698 - Support for xz(1) compressed mailboxes has been added.
699 (The `Can't canonicalize' warning for compressed boxes had the same
700 cause that made maildir usage impossible, but i don't feel _too_ bad
701 because looking into the code a bit revealed that the *newmail*
702 mechanism never worked for such boxes anyway. And will for a while.)
705 - S-nail now supports nested if..else..endif conditionals. [3c22c04]
707 - The NCL command line editor now locks its' history file when it reads
708 and writes it, so as to protect against concurrent usage. [c3a39ce]
710 - You can now say 'fi%', 'fi&', 'p&10' and `ghost ps '!ps axu'' followed
711 by 'ps|grep nail'. [c3266c6]
713 - Invocation cleanup: usage of -f and -u is mutual, -H and -u is ok, -u
714 in send mode not. [fa0a0aa]
716 - New message specification: `[?name-list]?search-string' will search
717 in locally available messages. If the optional `?name-list' part is
718 given, that specifies the (comma-separated list of) header fields to
719 search in. The special names `body' and `text' can be used to search
720 in message bodies alone and bodies including the headers fields,
721 respectively. Note that "message bodies" unfortunately still means
722 "including headers of attachments and attachments themselves", and
723 until some later time. [61bb460]
725 - The new command line option `-L spec-list' prints a header summary of
726 only those messages that comply to the specification list `spec-list'.
727 If -L and -H are used in combination, no summary is printed at all,
728 but the exit status reports wether `spec-list' would have matched some
729 messages or not. [934e12c]
731 ChangeLog (purely technical)
732 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
734 - Most of the work was changing the code-flow of the entire codebase to
735 my usual style of programming, with a single function entry and
736 a single function exit, including the addition of N(ot) Y(et) D(ead)
737 points of interest, which finally enabled me to get rid of (sic!)
738 using a debugger for S-nail development. Just compile via 'make
739 devel', and in case of a crash you should get a nice backtrace
740 listing. (You use IMAP, do you?)
742 However, because practically every line of code has been touched, this
743 caused some other changes along the way, e.g., the handling of
744 temporary files was changed completely (the formerly used Ftemp()
745 function has been replaced with a new Ftmp(), which handles unlinking
746 itself as necessary etc.), it was detected that the S/MIME support was
747 no longer compliant to any RFC, some resource leaks have been
748 eliminated... It is likely that a change so large introduced some
749 other flees and flaws, however. But it looks good so far.
755 + No official release, only exists as git(1) tag.
757 v14.5.2: fix 4: 2014-02-15 (2014-02-14)
758 ---------------------------------------
760 - s-nail-14_5_2-smime.patch
761 Fix a very stupid off-by-one error that i've introduced
762 in [7bdf330] (OpenBSD 5.3: sigh, address strcpy(),strcat()
764 Until we've changed the used data from string to something
765 line-wise, use strcat(3) again.
767 v14.5.2: fix 3: 2014-02-10
768 --------------------------
770 - s-nail-14_5_2-maildir.patch
771 maildir folders would have caused problems in environments which
772 provide the realpath(3) function: beside a "cannot canonicalize PATH"
773 warning the finally used path would be wrong (`test3' would end up as
774 `test3/test3'), so that any further access would try to use the wrong
775 path. Please read the description of this patch and/or the commit
776 logs of the commits [1c2563b] and [13f325f].
778 v14.5.2: fix 2: 2014-02-05
779 --------------------------
781 - s-nail-14_5_2-mimeheader.patch
784 Subject: ehm, .getElementById("blink") needs <span
785 =?US-ASCII?Q?id=3D"blink">,?= not =?US-ASCII?Q?class=3D"id"?=
787 would yet be displayed without the " not " in between the two encoded
788 words because of faulty "encoded-word-continuation" detection (note
789 the quotation marks). The error path could also have been seen in
790 mail forwarding and in faulty searching etc.
791 This patch is in a row of fixes for my hasty [0f9ad93] from 2013-03-12
792 that already caused the v14.2 minor release (because of [b608c6b] from
793 2013-03-14). Those with mercy may read the commit message of [c81afce].
795 v14.5.2: fix 1: 2014-01-30
796 --------------------------
798 - s-nail-14_5_2-sort.patch
799 Reverses (sort(),thread(): use srelax()!, 2014-01-18, [a9b67e9]),
800 which was a hasty commit of an untested diff that i've added few
803 As a rather careless last-minute change i've added string relaxation
804 to threaded and sorted display, but it's really one more step towards
805 lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
807 An alternative, forward-heading patch that keeps string relaxation has
808 been pushed to [master] as [5e75529] and is also available as
809 s-nail-14_5_2-sort-alt.patch.
814 Thanks to Ypnose, Sunil Nimmagadda and Gavin Troy.
815 Gavin Troy *really* deserves special thanks for facing [next]!
816 And i want to dedicate the new coloured message display functionality
817 to John Dodson and Ypnose. Thank you.
818 (And best wishes to beautiful Australia!)
820 ChangeLog (packager-affine)
821 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
823 - All utilities can now be overwritten during configuration so that
824 their values are fixated in the generated makefile (`mk.mk').
825 I.e., talking about MAKE=, STRIP=, awk=, cat=, chmod=, cp=, cmp=,
826 grep=, mkdir=, mv=, tee=.
827 rm= and sed= have to be overwritten from the command line, they're
828 needed before `conf.rc' is read.
829 [5c03347, 072ec65, 39a00ab, 23a1245, ?]
832 - The release tarball is now also available in a xz(1) version.
834 - New configuration option: WANT_COLOUR, by default enabled.
836 - 'make test' should now really work, even if the running user has
837 a mailbox with content. [f223a91]
839 - WANT_AUTOCC is now by default enabled, so as for normal users which
840 don't have the need to embed into a defined packaging environment.
843 - Installation no longer strip(1)s away debug symbols if WANT_DEBUG was
850 - Fixes to some bugs that are present since the first cvs(1) commit of
851 Heirloom mailx(1); includes that *ssl-key-user@host* should now work.
852 [4405a2cc, 9770c26f, 692976b9]
854 - Some off-by-XY fixes, thanks to the debug memory canaries.
855 [19b2b0d, 202506e, 43df6e4]
857 - Fixes for (other) stupidisms (of mine): [1c2161f]
859 This includes true implementation of in-memory history limit for the
860 NCL, which was the final and real solution to a segmentation fault
861 that Gavin Troy had to deal with on [next]. [1089f2b]
864 - For completeness: new command `var-inspect' shows information about
865 all given options. Mostly ment for implementing future tests.
868 - The `pipe' command no longer embeds message information into the
869 data passed through to the command (when *piperaw* is set).
870 [ef5ecc6 (part of topic/colour)]
872 - Simple coloured message (header) display is now possible. Please
873 read the new manual section "Coloured message display", use
874 *colour-disable* to turn it off. (It is enabled by default if it
875 knows the terminal is capable and, if used, the pager can, too. Note
876 we now set LESS=FRXi when starting PAGER and no LESS= is in the
879 Dedicated to John Dodson and Ypnose.
880 [topic/colour, c6e84c7]
882 - The `if', `else', `endif' syntax has been extended.
883 You can now "if 0" (never), "if 1" (always), "if $OPTION" (boolean
884 check for OPTION) and "if $OPTION == 'VALUE'" as well as "if $OPTION
885 != 'VALUE'". Unfortunately it is still not possible to use
886 conditionals inside conditionals. [0fb2ae7]
888 - -# now also sets MBOX=/dev/null. [4be2f1e]
890 - The NCL command line editor now supports cursor keys when the terminal
891 produces xterm(1)-compatible keycodes ('ESC' + '[' + [DACB] for left,
892 up, right and down, respectively). What a thrill, yay!!! [0cbf672]
894 - New (optional) command: `history': show or clear command line history,
895 or select a specific command line from in there.
896 History works a bit different now, and should no longer include
897 command lines which include specific message numbers; more to come.
898 [59c6195, topic/hist2]
900 I plan to join all the history management and use only the one that is
901 part of NCL now, hooking it into editline(3) and readline(3). That
902 would shrink tty.c a bit and also introduce duplicate elimination for
905 - The new ~u and ~U tilde escapes work like ~f and ~m, respectively, but
906 don't include any header lines. Inspired by a patch from
907 Sunil Nimmagadda on openbsd-tech@. [c37b8b3]
909 - The `|' command should work again -- it has stopped working on
910 2013-09-09 when i've accidentally changed the command name from `|' to
914 - As a rather careless last-minute change i've added string relaxation
915 to threaded and sorted display, but it's really one more step towards
916 lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
917 ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
918 Buffer allocs ever/max simultan. : 14/14
919 Overall alloc count/bytes : 17165/881088
920 Cycle maximums: alloc count/bytes: 16906/876984+0
921 ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
922 Buffer allocs ever/max simultan. : 0/0
923 Overall alloc count/bytes : 16515/841816
924 Cycle maximums: alloc count/bytes: 16256/837712+829560
926 ChangeLog (purely technical)
927 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
929 - We now have debug canaries for all memory sources now that [8419d44]
930 added them to the "string dope".
932 - The most work has been done on our value system, which manages the
933 binary and value options, like *folder* etc.
934 It is now based on enumerations, i.e., constant integers, not on
935 strings. This of course only relates to non-dynamic options.
936 Anyway, this saves us key hashing and allows more compact data
937 representation in general (see the new header `okeys.h' for more).
943 ChangeLog (packager-affine)
944 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
946 - The build system *only* uses the automatically detected $CFLAGS and
947 $LDFLAGS if WANT_AUTOCC=1. I.e., even unset or empty $CFLAGS and
948 $LDFLAGS are not touched until then.
949 (We do however still set $CC if that is unset or empty or set to the
950 plain string "cc".) [856625f6]
955 - Fixed segmentation faults / bus errors when setting *nofolder*
956 / *line-editor-cursor-right* to the null string (only with WANT_NCL),
957 respectively. [d1f1a19b, 21e5c285, 9f6ff25d]
959 - *prompt* handling is now really POSIX compliant (thus no prompting
960 occurs not only for 'set noprompt', but also for setting *prompt* to
963 This was indeed a rather large changeset that also introduced the new
964 *prompt* escape character \&, which expands to `?' by default and to
965 `&' if *bsdcompat* is set.
967 Like that we now can simply assign "\& " to *prompt* at program
968 startup, which (a) allows to do 'set noprompt' without error (once)
969 and (b) allows for POSIX compliance in respect to prompt handling
970 without any complicated conditional code, but (c) gives us the
971 opportunity to continue to support BSD prompts.
974 - For completeness: new command: `features'. (Rather useful for being
975 able to implement more tests in the future, and act according to what
976 is really compiled into the tested binary.
978 - The `-#' command line option now also sets *quiet* by itself.
981 - nail.1: a newly introduced empty line in the manual produced error
982 messages on some systems. Fixed.
984 - The return value of the `mimetypes' command has been reversed and
985 should now be fixed. [acf56ac52]
987 - In threaded display the Subject: followup suppression no longer
988 takes into account invisible messages.
989 Also, rudely hack in a messages-already-written-in-this-round counter,
990 so that the followup suppression knows when "the top of the screen" is
991 reached, which (seems to) help(s) against missing subjects up there as
992 well as after a `newmail'. [topic/subject]
994 - Added a WANT_REGEX=1 toggle in `conf.rc'.
995 When we find regular expressions then a new regex-enabled IMAP-style
996 search is available (see the manual for more) [1ec8fe68]
998 ? f (/or subject ^\[S-nail (subject ^\[nail-devel))
999 ? f (/subject ^\[S-nail) (/subject ^\[nail-devel)
1000 ? f (/subject "^\\[(S-nail|nail-devel)")
1002 I'm looking forward for being able to add another, simplified, syntax.
1004 ChangeLog (purely technical)
1005 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1007 - The cc-test.sh has seen some tweaks, for easier future extension, and
1008 for adding a test for [d1f1a19]. [several, mentioned: 21e5c285]
1010 - On systems without a real wordexp(3) implementations deadlocks could
1011 occur because we sometimes hold_all_sigs() to avoid longjmp(3)s away
1012 (and will do so for quite some time, still), and that resulted in the
1013 SIGCHLD that reported the exit of the started subshell to be blocked,
1014 too (e.g., after '? *.h<Tab>': endless hang). Fixed.
1019 Many thanks: Gaetan Bisson, William Yodlowsky, Gavin Troy,
1020 Thomas (wasd AT gmx DOT net), Ypnose.
1021 And Gavin Troy definetely deserves a very special credit.
1022 But thank you all, and very much indeed!
1024 ChangeLog (packager-affine)
1025 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1027 - The `test' make target has been fixed. [f0991e14]
1030 - It is possible to gain a different kind of make(1) verbosity by
1031 using a VERBOSE=1 command line argument (this knob is not taken into
1032 account when deciding wether a rebuild is needed). [498e4ad0]
1035 - On Crux 3 Linux and OpenBSD the readline(3) and editline(3),
1036 respectively, libraries will now be found when desired. [a7d1aa78]
1039 - WANT_LINE_EDITOR has been renamed to WANT_NCL, *plus*.
1040 So now there are WANT_READLINE, WANT_EDITLINE and WANT_NLC, each of
1041 them can be set individually, and they are tested in the shown order.
1042 Also, WANT_TABEXPAND and WANT_HISTORY have been introduced and can be
1043 used to fine-tune functionality. [ae4e01e1, b2635feb, 9742bf40]
1045 (While here, i've fixed WANT_TABEXPAND code so that it is more
1046 sensitive to line excess; on Linux etc., where MAX_INPUT is 255,
1047 strange behaviour could be seen because we didn't take into account
1048 the length of the prompt at all. The NCL is assumed to have only
1049 one remaining, but unfixable problem: backspace often is incapable
1050 to cross visual line boundaries; use ^A/^E + ^L, then. [e832c04a]
1052 Also, cursor (now ^B and ^F) and history movement (now ^P and ^N) of
1053 the NCL have been changed. [d7d928da])
1055 - WANT_QUOTE_FOLD is now enabled by default. And WANT_ASSERTS has been
1056 renamed to WANT_DEBUG. [1e10da1f]
1058 - The build system has seen yet another overhaul in general. CC, CFLAGS
1059 and LDFLAGS plus are now tracked and changes will force rebuilds.
1060 The new WANT_AUTOCC option can be used to let the build system figure
1061 out a compiler and choose known-to-work flags. Use the new ADDCFLAGS=
1062 and ADDLDFLAGS= command line arguments to add your specific flags on
1063 top of those -- the final CFLAGS etc. are what is change-tracked.
1065 This rather massive internal rework revealed that old Bourne shells
1066 were yet not supported by the new build system, and so did testing
1067 that UnixWare installation was yet impossible due to tool
1068 incompatibility. [75c4b74e]
1070 - The new WANT_AMALGAMATION option will force compilation of all the
1071 sources in a single compilation unit. This requires a rather large
1072 amount of memory, but may produce a more compact, maybe more optimized
1073 binary. (Implementing this revealed quite some bugs which could
1074 therefore be fixed.) [topic/amalgam]
1076 - `nail.rc' has been pimped a bit (mostly comments, but
1077 *mime-counter-evidence* is now always set). [e3094ba7]
1079 That changeset was however buggy. [f3dcb46]
1082 - We no longer use install(1) for `install'ation make rules. [80b02cd9]
1087 - Even '$ s-nail & fg $!' will now work with the NCL. [2a8b5c55]
1089 - Several off-by-one (off-by-two) fixes. [32ce9836, 71e6d013, f139dc36]
1090 (Gavin Troy, Thomas)
1092 - Setting *noprompt* now prevents prompting, as per POSIX. [ecefaf63]
1094 - *prompt*: new \$ (exit status of last command) and \@ (name of
1095 currently active mailbox) escape sequences. [6f652046]
1097 - One may now omit the space in '? unc' ('?unc') [05fcb383]
1099 - New commands: `ghost' and `unghost' define command aliases (since
1100 `alias' is taken for a different purpose) [topic/commands]
1102 ? ghost ps '!ps axu'
1105 - There is now a pseudo account `null' (case-insensitive).
1106 Also a new `localopts' command exists; when used from within an
1107 `account' block, options changed will be reverted back to its former
1108 value when the account is left (e.g. by switching to `null'):
1111 alternates sdaoden@users.sf.net sdaoden@users.sourceforge.net \
1112 sdaoden@googlemail.com sdaoden@gmail.com
1113 set Sign="\n--steffen\nForza Figa!" sign="\n--steffen"
1114 set smtp=smtp.gmail.com smtp-auth=plain smtp-use-starttls
1120 set from="Steffen \"Daode\" Nurpmeso <sdaoden@gmail.com>"
1125 set from="Steffen \"Daode\" Nurpmeso <sdaoden@users.sf.net>"
1133 neither of *Sign*, *sign*, *smtp** nor *from* should be set.
1134 Please see the manual for more.
1135 TODO - neither command-ghosts nor alternates etc. are yet tracked
1136 TODO - we should have a boolify() so as to say 'localopts yes' etc.
1139 - New command: `cwd' (print current working directory).
1140 Also fixing the `chdir' return value. [eff4397c]
1142 - The *ssl-method* now allows explicit setting of 'tls.1.1' and
1143 'tls1.2' values. [c66b4196]
1145 - When sending to display, be aware that filenames in MIME parts may of
1146 course be MIME-encoded! [1454be03]
1148 - *hostname* is now honoured even if *smtp* is not set. (We always
1149 supported *from*, so why not *hostname*?)
1151 - The `-u user' option now acts identically to setting the $USER
1152 environment variable and both now tend to mean something like
1153 "impersonate as user in some aspects". Note that we have always used
1154 the latter in one or the other way, and `-u user' always ment more
1155 than just "open mailbox of user", so i think this change sharpens the
1156 edge in the right direction. [09632731]
1158 - Filename argument quoting has been tweaked for (some) function(s which
1159 take a filename argument last). The following snippet as reported by
1160 Gavin Troy should work now: [2bb9b80e]
1162 ? mv +inbox.Junk\ Mail
1164 - The GNU implementation of wordexp(3) is also (i've added a workaround
1165 for the very same bug for Mac OS X in S-nail v14.3 [63273772]) buggy,
1166 which causes segmentation faults when expansions failed (`fi &VOID').
1170 - The `fi' command no longer uses the (possibly truncated) display
1171 version of a filename, but the full path. [5cd85b07]
1173 ChangeLog (purely technical)
1174 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1176 - Large rework of internal structure: bundle inclusion of most of the
1177 external and the content of most of the internal #include files in the
1178 new nail.h. If that would have been done very first bugs like the
1179 infamous MAXPATHLEN bug as reported by Paul Vojta (see v14.4.2) would
1180 never have occurred. [21f3155b]
1182 - Support for -fstrict-overflow cc(1) flags. [topic/strict-overflow]
1184 - Fixed the quotation filter which yet allocated memory even if not
1187 - String relaxation reduces memory pressure rather drastically when
1188 working with many (especially MIME) mails at a time, e.g., when
1189 writing a modified mailbox. Before all messages of a mailbox had to
1190 be worked without releasing any memory in between, now we give back
1191 memory (to our pool, not the system) after each and every message.
1194 - The other memory source now uses bound canaries, which also found some
1197 - We now use the EL_PROMPT_ESC editline(3) mode for prompting, which
1198 should offer the possibility to use coloured prompts etc. with
1199 (even those) editline(3) (versions which do offer it -- older versions
1200 should just do fine by themselves).
1201 S-nail uses the special trigger control character \1. [ea30d818]
1204 Note however that all tested editline(3) versions are buggy and
1205 either don't get it right (`\1COLOR-ON\1stuff\1COLOR-OFF\1') or are
1206 incapable of proper repainting (`\1COLOR-ONstuffCOLOR-OFF\1').
1208 - We now use the MD5 digest code from the OpenSSL library if that is
1214 Many thanks: Gaetan Bisson, Stephen Isard, Jérémie Courrèges-Anglas,
1215 William Yodlowsky, and Adam Sjøgren from GMANE.org!
1217 ChangeLog (packager-affine)
1218 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1220 - The packager-install: target has been fixed. [a8c1b0b]
1221 (Gaetan Bisson and William Yodlowsky)
1223 - As suggested by Gaetan Bisson the several build system tasks are now
1224 individually addressable, i.e., 'make [OPTIONS] config', 'make build',
1225 'make test', 'make packager-install'); nothing changes unless you want
1226 to, in which case: please see INSTALL. [4d3b799]
1228 The new target 'test' will call cc-test.sh with its new --check-only
1229 option which will only perform the (too few) function tests on the
1231 And cc-test.sh will no longer create output files, but simply echoes
1232 to STDOUT and STDERR. [629e1ee, 786f219]
1235 - The default configuration file now sets *bsdannounce* and *bsdflags*,
1236 all in one line, as suggested by William Yodlowsky.
1237 (If *header* is disabled, *bsdannounce* is ignored, but *header* must
1238 be enabled by default according to POSIX, and *bsdannounce* is just
1239 the same as *header*, but for the folder-switched event. Thus setting
1240 *bsdannounce* is the more sane default, imho.) [6161f10]
1243 - Announcement messages are now tagged '[ANNOUNCE]'. [26e1b35]
1244 (Tagging suggested by Stephen Isard and Jérémie Courrèges-Anglas)
1246 - The manual NAME now includes the version (but it's somewhat ugly).
1252 - When switching folders when in compose mode, message attachments
1253 become invalid. For v14.4.5, at least warn when this happens.
1256 - When reading multipart/alternative messages which do not contain
1257 a text/plain part, the (most likely HTML) part is not displayed (even
1258 if S-nail is configured to display HTML). The reason is a bug i've
1259 introduced with [0d43a999] (Change "Part X:" display message..,
1260 2012-12-20). (Note that the committed fix i've posted to the list was
1261 not correct either and has been fixed itself.) [225c02b, ecfa149]
1266 Thanked, Gavin Troy, Gaetan Bisson.
1268 - Fix output buffer confusion that would have occurred when parts of
1269 a multipart mail had a pipe command set. Longer story in [e75d16dd].
1272 - The makefile now supports a `packager-install' target that bypasses
1273 the reevaluation of the configuration (after checking that there is
1274 one) and directly steps ahead to the install process.
1277 - Notes in INSTALL that CFLAGS and LDFLAGS need to be overwritten from
1278 within (conf.rc or) the command line.
1284 I convey special thanks to Karol Błażewicz and Gaetan Bisson.
1286 - The new build system didn't allow to overwrite CFLAGS= when used in
1287 conjunction with GNU make(1). To make a long story short, removing
1288 a `.POSIX:' directive from the makefile fixed the problem. Luckily.
1291 - More INSTALL notes for UnixWare 7.1.4, which suffers from the same
1292 problem: here the fix is to use the -e option of make(1).
1294 - Karol Błażewicz reported a segmentation violation he got when using an
1295 Arch Linux S-nail test package, and Gaetan Bisson informed me about
1296 that. The problem was that we didn't assign the resulting default
1297 address (which gets used when *from* is not set) to the result which
1298 gets used, effectively resulting in a NULL dereference. [cfd60479]
1303 Many thanks to Paul Vojta.
1305 - On GNU/Linux there is no MAXPATHLEN constant defined by default, as
1306 this is a non-standard legacy constant. Mozilla ran into this some
1307 time ago, though a bit different [1]. It made it easier for S-nail.
1309 [1] <https://bugzilla.mozilla.org/show_bug.cgi?id=412610>
1311 We could include `sys/limits.h' to get at MAXPATHLEN, there it is
1312 defined to be PATH_MAX, but let's just include the standard `limits.h'
1313 and ensure MAXPATHLEN ends up >= PATH_MAX. With this condition being
1314 true even FORTIFYd sources won't bail with reported buffer overflows
1315 because realpath(3) expects a buffer of PATH_MAX bytes. [bee5e57c]
1318 - With the builtin LINE_EDITOR, ensure proper interaction with GNU
1319 rlogind(8), which is alone in its quest to set the ISTRIP termios(4)
1322 - Bugfix a codepath that would have prevented compilation when
1323 HAVE_ICONV is not set.
1324 While there, allow to unselect message attachments when using the `~@'
1325 tilde command interactively, which i mysteriously had forgotten when
1326 allowing selection of 'em. (oops?) [4f58ffea]
1328 - It's now easier for packagers to get at debug-enabled CFLAGS; simply
1329 use WANT_ASSERTS=1 (should not be enabled in shipouts, please).
1332 - Fixed a terrible bug that i've introduced in november 2012, that would
1333 have corrupted MBOX files when using the `resend' command. (The
1334 so-called "From_ line" would have been quoted to ">From_ line" instead
1335 of simply being stripped.) [19d449e2]
1337 - Fixed a SIGSEGV for the builtin LINE_EDITOR, that would have occurred
1338 if a history traversal (^B or ^F) would have been continued by
1339 a reverse history completion (^R).
1340 While there, avoid some multiple-beeps-in-a-row that yet occurred due
1341 to code reuse, and document that ^G etc. reset the multibyte state
1344 Also, the expand-on-tab code could have excessed line input maximums,
1345 e.g., after `? /usr/bin/*<Tab>'. This was of course known, but
1346 i wanted to keep it because all tested (modern) terminals "mess up but
1347 won't break", and thus made it possible to use the data, even if it's
1348 visual representation was messed up. The real solution will be much,
1349 *much* more complicated, i.e., show possible *completions*, page-wise,
1350 etc., i.e., just like is known by tab *completion*. This will need
1351 far more time because it doesn't make sense to embed such complicated
1352 code into the current bed.
1353 Now i've chosen to simply don't display excess, but replace the
1354 content with a message that says that there was excess. It simply
1355 looks better. [0320c8ba]
1357 - I've changed the use of `[?]' as a replacement sequence for invalid
1358 / non-displayable characters to `?' (again). There are still code
1359 paths (from the original codebase) which use the real Unicode
1360 replacement character instead, so our display is still not unique.
1361 On the long term the codepath can anticipate in all levels wether
1362 use of Unicode is possible, so that, then, we will be unique again,
1363 using either only `?' or the Unicode replacement character. [faf6380]
1365 - I've anticipated in v15.0 and implemented *quote-fold* as a stream
1366 filter. It is now multibyte safe and takes into account the visual
1367 width of characters, i.e., ideographs etc. It is working almost as
1368 good as an algorithm can work that looks at data linewise, but is yet
1369 experimental and incomplete in that it will break lines even if only
1370 whitespace or a backslash escape follows. It is code that is only
1371 a few hours old, which is why it is not enabled by default. [
1378 - Fix some harmless stylos and typos in the manual and `conf.rc'.
1381 - Ensure *complete* proper cleanup on signal-caused configuration run
1384 - Bugfix: reenable empty configuration variable overrides, as in
1386 $ make install SID= NAIL=mailx ...
1389 - Bugfix: rename the `conf.rc' variables SHELL, LISTER and PAGER because
1390 they clash with the POSIX standard variables of the same names, which
1391 hurts now that the configuration is run through the shell itself.
1392 The configuration names are now XSHELL, XLISTER and XPAGER (ouch).
1395 - nail.rc: comment out some non-portable S-nail(1) specifics, for those
1396 who install this file as mailx.rc or so, somewhere. [3f14b01]
1398 - From now on S-nail will use simple version tags, as, e.g., `14.4.1',
1399 i.e., no more `s-nail-14.4.1'. [a75437d, 183d59c] (Jürgen Daubert)
1401 Also move UAGENT out of `version.h' [f7be5be]
1403 Uh! v14.4 must have originated in a bad dream; good it's vanished.
1408 Thanks to the entire vivid and virile S-nail(1) user community is
1409 proper, especially Stephen Isard, Gavin Troy, Martin Neitzel.
1410 Not to forget Ryan Kavanagh and Ayan George.
1412 Note this time the changes are in reverse order, i.e., oldest first.
1417 15fbe09 ^bf9173f 'topic/varmac-unite'
1418 Simplification and unification of variable and macro handling
1419 40f6f58 ^15fbe09 'topic/cledit1'
1420 Command line editor; new manual section `Line editor'
1421 ad28a32 ^40f6f58 'topic/termsize'
1422 Honour POSIX mailx(1) and respect $COLUMNS and $LINES on startup
1423 dc3cd49 ^a446fd8 'topic/qf'
1424 You don't wanna know
1425 b8738f7 ^0651fd0 'topic/spam1'
1426 Interaction with SpamAssassin; new manual section `Handling spam'
1427 5419d6f ^b8738f7 'topic/make1'
1428 Reworked build system; please read `INSTALL' and `conf.rc'
1429 9ab4d6b ^5419d6f 'topic/list1'
1430 Slightly tweaked message thread display, fix `:u :r' to mean it
1435 - The default PAGER is now more(1). (But read on.)
1437 - The `echo' command is now compliant, and fully supports XSI.
1439 - The `group' and `ungroup' command aliases have been removed, they are
1440 `alias' and `unalias'.
1442 - We now have the capability of line editing and history.
1443 One may choose from not less than three different implementations:
1444 a builtin editor as well as possible linkage against BSD editline(3)
1445 and also a GNU readline(3) compatible layer.
1446 Please read the new manual section `Line editor'.
1448 Input is now compliant in that an interactive line may be continued
1449 after escaping the newline character with a backslash.
1450 [topic/cledit1] (all of them)
1452 The *prompt* variable may now contain shell escapes, just like the
1453 `echo' command. [0938d8a]
1454 As a special extension the new \? escape, when used within *prompt*,
1455 will expand to the exit status of the last command. [41076d2]
1457 - The POSIX standard environment variables $COLUMNS and $LINES are now
1458 honoured upon startup. [topic/termsize]
1460 - The `help' / `?' commands now support abbreviation, i.e.,
1461 ``$ ? unc'' should now find `uncollapse'. [7b86195]
1463 - The `~' abbreviation that has been introduced as an alias for `call'
1464 is now a real command, not a magic shortcut. [9987289]
1466 - The new variable *quote-as-attachment* can be used to additionally
1467 embed the quoted message as a `message/rfc822' MIME attachment.
1470 - The compose-mode command `~@' will now attach messages from the
1471 current mailbox if given a filename of the style `#NUMBER'.
1472 Please read the corresponding manual section `Tilde escapes', though.
1474 - The `WANT_JUNK' and `WANT_SCORE', as well as Gunnar Ritters junk mail
1475 management have been removed.
1477 Instead S-nail(1) can now support interaction with SpamAssassin, but
1478 sofar only via the spamc(1) / spamd(1) client / server pair of
1479 programs that ships as part of SpamAssassin. The new configuration
1480 directive `WANT_SPAM' controls wether this feature is desired.
1482 Please read the new manual section `Handling spam'.
1483 [topic/spam1] (Martin Neitzel)
1485 (S-nail(1) is now *definitely* floating-point free.)
1487 - The configuration and make system have been overhauled / reorganized.
1488 The configuration is now in `conf.rc', also contains directives like
1489 `PREFIX' etc, and is always read in. However, only those directives
1490 which are not yet set (via environment or command line overwrites) are
1491 incorporated into the set of configuration options. Therefore
1496 will now build S-nail(1) twice, because of the changed configuration.
1498 Note that `WANT_GSSAPI' is now by default disabled, which shrunk
1499 a freshly started s-nail image by more than 30 percent.
1501 We're not finished yet in that there is no dependency graph etc.
1502 Please do read `INSTALL' and `conf.rc'.
1505 - Message selection has been slightly bugfixed in that `:u :r' really
1506 means `:u' AND `:r'. Compared to NetBSD Mail(1) it's still a shame.
1508 Threaded message display has been slightly changed in that within
1509 a thread identical Subject: lines are not repeated. It may not be
1510 perfect yet due to the general list / thread state. [topic/list1]
1512 - If, upon startup, the environment variable `NAIL_NO_SYSTEM_RC' is set,
1513 then the system wide initialization file isn't read, just as if the
1514 `-n' option had been given. [1b31535]
1516 - It is now possible to use CTRL-C during connection hangs. (But in
1517 general error recovery capabilities of the socket related
1518 infrastructure is non-existent, practically speaking.) [45a9f36]
1520 - *quote-fold* has been temporarily disabled, as it is not multibyte
1523 No review for v14.4. And today is Friday, the 13th. Ouuuh!
1528 I should *maybe* should have and want to give prominence to
1529 Martin Neitzel for this, i maybe have misunderstood.
1531 - Bugfix *synchronous* *pipe-** execution..
1533 Well, unfortunately yet another newly introduced bug slept in
1534 S-nail v14.3[.1] -- [a8d724b3, Add @ and @& shell command prefixes
1535 for pipe-MIMETYPE, 2013-05-03] falsely changed the waiting state
1536 for subprocesses, as has shown up by a HTML-only mail on the
1538 'Seems i'm collecting one line fixes in this codebase; this needs
1539 to change in the future.
1544 I want to give prominence to Juergen Daubert (jue AT jue DOT li), who
1545 reported that i've broken plain-old unfancy send mode in 14.3.
1547 + Ok, i'll hope we're out of new errors for the v14.3 series with that.
1549 - New variable: *batch-exit-on-error*.
1550 Only works if the new -# command line option has been given, and will
1551 check the "current" exit status whenever one operation completes
1552 (S-nail returns to the command prompt).
1553 If the exit status implies error (e.g., sending the last message
1554 failed) then we exit forcefully with that error status. (The normal
1555 behaviour is that the status is reset when the command loop ticks.)
1558 - While here again, i've added the new -# command line option.
1559 This is the first step to implement a reliable batch mode;
1560 unfortunately it still selects the users system mailbox on startup,
1561 because we simply cannot go to "no" mailbox for quite some time -- at
1562 some future time we will be able to go to some VOID thing, and then
1563 this will end up as a rather efficient batch mode.
1564 For now it sets *dot*, *emptystart*, *noheader* and *sendwait*, and
1565 also implies the -~ command line option. [7549569]
1568 printf "m ${MBOX}\n~s subject1\nE-Mail Körper 1\n.\n" &&
1569 printf "m ${MBOX}\n~s subject2\nEmail body 2\n.\n" &&
1571 ) | MAILRC=/dev/null "${NAIL}" -n -#
1573 - Also, -N set *header* instead of *noheader*. [7b4a13f6]
1576 - Plain old unfancy invocations like
1579 $ echo bla|s-nail ./FILE1
1581 had been broken (by [522cb3ec]). [260e19d]
1587 Thanks to Gavin Troy (gavtroy AT gmail DOT com) who inspired the @ and
1588 @& pipe-command prefixes.
1593 - S-nail has been registered at Coverity Scan, and the third build
1594 (after topic branches *coverity-444* and *coverity-444.2*) produced no
1595 more errors. (<http://scan2.coverity.com/projects/444>.)
1596 (Then i used POP3 and IMAP and fixed some SIGSEGV. ;) Still didn't
1597 look at S/MIME, Maildir, caches etc... o()
1599 - S-nail v14.3 doesn't produce any spurious linker warnings on
1600 OpenBSD 5.3; all (correct!) use cases of strcpy() and strcat() have
1601 been replaced. [7bdf330, 2c8d7cb]
1603 - This is the first release with a (though very short) review -- i'm
1604 slowly getting comfortable with the code. (But i'm too stupid to
1605 perform reviews on patches, 'always did reviews on C++/Perl/xy
1606 classes. Aaah, how beautiful ... objects.)
1611 - It is now possible to "call" macros without using the `call' command
1612 by prefixing them with a tilde, as in
1621 - Added the *pop3-bulk-load* option.
1622 Yes, there are mailing lists etc. which use plain text email, and,
1623 there, headers are often more data than the body, so it doesn't make
1624 sense to download the headers twice (unfortunately POP3 doesn't
1625 support a BODY command; if only it would support a RETRDELE command..)
1628 And yep, from this changeset on i personally use S-nail even over the
1629 network, no longer my stale and incomplete S-Postman. And i can tell
1630 you, this damn thing is so silent, i always set *verbose* not to go
1631 grazy ... but .. i hate to say it .. the healing will take time.
1633 - POP3 will now try to use APOP authentication automatically; thus the
1634 *use-apop* stuff has been replaced by *pop3-no-apop* options (just in
1635 case there are POP3 servers which advertise they support APOP but in
1636 fact fail to do so; anyone?) [6c3c5575]
1638 - Some IMAP segmentation violations have been fixed:
1640 ? fi imaps://user1@localhost
1641 Password:Interrupt <- CNTRL-C
1642 ? set imap-auth=cram-md5 <- hey, 'forgot to set correct auth
1643 ? fi imaps://user1@localhost
1644 IMAP write error: error:140D00CF:SSL routines:SSL_write:protocol is shutdown
1647 And also, when *folder* was set to an IMAP account but hasn't been
1648 opened yet, and no IMAP account ever has been opened, a string
1649 comparison against a NULL pointer yet caused a SIGSEGV, too.
1652 - `set folder=' now tolerates `%:' and expands PROTOs stuff etc.:
1654 ? short xp %:imaps://user1@localhost
1657 Pure convenience so that it doesn't need to be typed twice (still no
1658 completion in sight...). Note that setting *folder* to a POP3 box
1659 will now be actively rejected. [b12b17f5]
1661 NOTE: while implementing this i've detected another dead-end
1662 miscondition in S-nail -- you really should ensure that your target
1663 folder/box is connected before you leave your current POP3/network
1664 based folder, if there is data to be moved to the target (i.e.,
1665 mbox). This problem will persist for a long time due to the way the
1666 entire codebase functions; i hope i can find a short/mid-term
1667 solution, but the real healing will take years. The mentioned
1668 solution would at least make S-nail interruptable, currently we get
1669 stuck and interrupts are blocked...
1671 - If you're using S-nail on Mac OS X and have seen some segmentation
1672 faults when expanding shell stuff then you may be pleased to hear that
1673 S-nail now works around an Apple bug. [63273772]
1675 - The builtin mime.types have been corrected and a lot of new ones have
1676 been added. New data from
1677 <http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/\
1678 org/apache/tika/mime/tika-mimetypes.xml>, thanks! [8072fcb6]
1680 - BEWARE: handling of command line arguments has changed a bit!
1682 1. The -D, -d, -E, -i, -N and -v command line options are now
1683 implemented by means of setting the respective option, as via -S.
1684 (This means that from now on resource files can only *temporarily*
1685 overwrite command line arguments.)
1687 2. The -I and -T command line arguments have been dropped.
1688 It seems Gunnar Ritter stopped developing nail/Heirloom mailx once he
1689 started implementing Newsreader functionality. It'll take a long time
1690 until we get there, so for now drop all the Newsreader stuff.
1692 3. Handling of -r has been changed. E.g.:
1694 s-nail -A test -Snoeditalong -r 'La mort est <fem@me>' -d
1695 ? set from=bummer@m1.com
1699 Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t1"
1700 ? set from=bummer@m2.com
1703 Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t2"
1707 s-nail -A test -Snoeditalong -r '' -d
1708 ? set from=bummer@m1.com
1712 Sendmail arguments: "sendmail" "-i" "-r" "bummer@m1.com" "t1"
1713 ? set from=bummer@m2.com
1716 Sendmail arguments: "sendmail" "-i" "-r" "bummer@m2.com" "t2"
1718 [*main-fun-cleanup* topic branch]
1720 - *smime-sign-include-certs-** stuff works again, oops.. [9a8597c6]
1722 - A whole lot of smallest and small fixes due to registration at
1723 Coverity Scan, as project 444. Error handling in S-nail is ridiculous.
1724 [*coverity-444* and *coverity-444.2* topic branches. The sheer number
1725 of fixes was the reason to sit down and go for unplanned S-nail v14.3]
1727 - *idna-strict-checks* has been dropped. It's silly to have in a MUA,
1728 especially given that GNU LibIDN doesn't ship with a lot of rules.
1729 We were able to drop quite some code (and a use-after-free, too :().
1732 - The ~p tilde command displays attachments more verbose.
1733 Until the big big MIME and send layer rewrite :) this is intermediate
1734 since until then we do not really know neither MIME type nor charset
1735 of an attachment at the time this is displayed (for sure). Yet
1736 i think it's nicer to show what we have than keep it the way it was.
1739 - @ and @& shell command prefixes have been added for the pipe-MIMETYPE
1740 mechanism. The former suppresses filters if multiple messages are
1741 displayed at once, the latter adds asynchronous program execution on
1742 top of that. E.g., to display PDF documents, but only if you
1743 *explicitly* address the message *alone and by itself*, and without
1744 blocking S-nail and the $PAGER, do:
1746 set pipe-application/pdf="@&cat >"${TMPDIR}"/s-nail${$}.pdf;\
1747 mupdf "${TMPDIR}"/s-nail${$}.pdf; rm "${TMPDIR}"/s-nail${$}.pdf"
1749 (Inspired by Gavin Troy.) [a8d724b3]
1751 Note: most of that had been posted to nail-devel@ already, but it was
1752 tweaked ([251b636]) so that you now *really* have to say `p MSGNO' to
1755 - The NETLESS CONFIG= has been removed; it is almost identical to
1756 MINIMAL now (i.e., without WANT_JUNK and WANT_SCORE).
1758 - WANT_JUNK and WANT_SCORE have been disabled by default.
1759 They don't seem to be too useful; i hope i can implement
1760 a SpamAssassin hook for (downloaded) mail messages for v14.4.
1761 If so, expect these two "modules" to become removed completely.
1766 Another unplanned (minor) bugfix release after Gavin Troy (gavtroy AT
1767 gmail DOT com) pointed out that MIME CTE decoding was broken, who
1768 i therefore want to give a lot of prominence right here.
1770 - Fix MIME content decoding which has been broken by [01c0e135].
1777 An unplanned (minor) bugfix release after i've found two bugs today and
1778 heard from Jérémie Courrèges-Anglas (jca+nail AT wxcvbn DOT org) that
1779 there exists a S-nail OpenBSD package.
1781 I want to give prominence to the following people that helped to
1782 improve S-nail(1) during this development cycle, in order of
1783 appearance: Dirk Peters (peters AT schwertfisch DOT de).
1785 Thank you very much, and best from Germany!
1787 - Some warnings of newer clang(1) versions were silenced, including yet
1788 another alloca(3) problem (see *memtracer* topic branch in v14.0
1791 - Tweaking the MIME boundary detection left a little hole that could
1792 cause boundaries not to be detected, as has been shown by a Microsoft
1793 Word generated mail on the ICU list. [11e5fb5b]
1795 - A format string could overflow bounds if unrealistic
1796 (18446744073709551615) line numbers or message sizes would have been
1797 produced. [faa65c40]
1799 - An algorithmic error could cause overlong lines which wrapped around
1800 to the next display line. [ade52660]
1803 v14.2, 2013-03-15 [v14.1, 2013-03-12]
1804 -------------------------------------
1806 I want to give prominence to the following people that helped to
1807 improve S-nail(1) during this development cycle, in order of
1808 appearance: Martin Neitzel, Christos Zoulas, Stephen Isard, jgw@txo.org
1811 Thank you very much, and best from Germany!
1813 + v14.2 differs from v14.1 only by one commit, one that fixes
1814 (mime_fromhdr(): partial rewrite using n_iconv_str(), 2013-03-12),
1815 which i hastily implemented just hours before the release of v14.1,
1816 and simply shouldn't have made it (into there).
1817 The v14.1 tarball has been removed from the server.
1819 - A fix for the quoted-printable codec: "message truncation" occurred
1820 when a mail maliciously used a soft linebreak to escape the linebreak
1821 of a completely empty line.
1822 (That resulted in 0 written and 0 leftover bytes, a condition that was
1823 declared erroneous back in november 2012 when i started handling I/O
1826 - The "folders" command will work again when given an argument.
1827 A fault of mine introduced in (cmd1.c: expand() may fail, 2012-10-23).
1829 - The Base64 codec has been touched again, and we are finally capable to
1830 perform sequential decoding; this was targeted for the MIME/send layer
1831 rewrite, but it actually was possible today.
1832 The result as seen in ps(1), running on the Base64 encoded HTML5
1833 standard (4622545 bytes HTML, with a NUL appended to force Base64
1834 encoding, resulting in a 6244793 bytes email):
1836 7420 s006 S+ 2:22pm 0:10.65 plain-nail -f HTML5
1837 1440 s006 S+ 2:23pm 0:00.36 ./s-nail -f HTML5
1839 (So the only thing that is left for a good throughput is sequential
1840 decoding of quoted-printable encoded parts that maliciously use soft
1841 linebreaks to convert an entire part to a single line. And i've seen
1842 that from Apple Mail.)
1844 - New option: *mime-allow-text-controls* (rather long manual entry).
1846 - *smtp-auth-password-user@host* and *smtp-auth-user-user@host* will
1848 (Reported by jgw@txo.org in November 2011, fixed by Gavin Troy in
1851 - Most *headline* formats now do support the '-' left-alignment flag.
1852 Note that you most likely have to change your *headline* accordingly.
1853 (The still missing %n format is one reason why there will be v14.2.)
1855 - *datefield* and *datefield-markout-older* can now be set to
1856 strftime(3) format strings (except %n).
1857 (From Stephen Isard's wishlist.)
1859 - A possible SEGV has been found and also fixed by Stephen Isard.
1860 (The "legendary" cross-world stereo fix!)
1862 - Wow! S-nail will finally compile on GNU based Linux systems like
1863 Slackware 14 etc. (Found while hunting bug reported by
1866 - New option: *datefield-markout-older* can be used to choose
1867 a different date display for mails that are older than six months,
1868 in equal spirit to what POSIX describes for the -l option of the ls(1)
1869 command (Stephen Isard).
1871 - (Exotic) Years are (would) now (be) interpreted correctly according to
1874 - CRAM-MD5 usage has been fixed.
1876 - *folder* updates are now tracked when set, and we will show the
1877 realpath(3) name of it, showing PREFIX..SUFFIX if that wouldn't fit on
1879 Tracking updates made it also possible to perform other more expensive
1880 tasks when setting *folder*, so that it is now possible to do
1886 et cetera (both ideas by Christos Zoulas).
1888 - Bugfix for the ~@ tilde-escape in non-interactive mode.
1889 (readtty(): quick shot: work in pipelines (on non-TTY).., 2013-01-25)
1890 introduced the possibility to "read data from the terminal" (STDIN
1891 that is) in non-interactive mode.
1892 The manual documents that attachment input must be terminated with an
1893 empty line, but if that had been omitted, as in the example below, we
1894 would have yet entered an endless loop.
1896 $ cat <<_EOT | /s-nail -~ -s boom ./OUT
1902 - Alias expansion will now be performed for members of Reply-To: fields
1905 - Decoding quoted-printable will now be more relaxed.
1906 (Even though the standard says that users should be given a hint when
1907 input is not absolutely clean; a possible warning will be added later,
1908 when we have an error message ring.)
1910 - New option: *mimetypes-load-control* can be used to control which of
1911 the mime.types resources will be loaded.
1913 - The builtin default mime.types have been extended a bit.
1918 I want to give prominence to the following people that helped to
1919 improve S-nail(1) during this development cycle, in order of
1920 appearance: John Dodson, Gianluca Ramunno, and Anon Ymous from the
1926 - Encoding defaults to *quoted-printable* not *8bit*.
1927 This has no technical background except that i think it's the better
1930 - Small progress for the "getting stuck due to the current folder
1931 becomes inaccessible due to whatever reasons" problem.
1932 (schdir(): realpath() local files before leaving CWD.., 2013-01-08)
1934 - The names of temporary files have changed. Whereas not all uses of
1935 temporary files already use really meaningful names, it has yet become
1936 possible to use the pattern "*mail-*"; or, to be compatible with
1937 NetBSD Mail(1) in one go, "*mail*". (E.g., in my ~/.vimrc you'd read:
1938 :au BufRead,BufNewFile *mutt*,*mail* setl fenc= | setf mail
1939 [the *mutt* is a leftover from times when i've used MUAs that suck].)
1944 - The Quoted-Printable MIME handling has been rewritten completely.
1945 We now correctly encode files with the MS-DOS newline sequence (CRLF).
1946 (Part of the *mime-cte* topic branch.)
1948 S-nail(1) continues to be able to handle text messages and text
1949 attachments without a trailing newline, but because these
1950 Content-Transfer-Encoding related things are now handled by the C-T-E
1951 layer instead of by sendout.c a text message body that comes in as
1952 part of a complete message via the -t command line option will loose
1953 the missing final newline (i.e., it'll gain one).
1954 This problem does *not* occur when *only* the message body comes in
1955 via STDIN, as in 'cat FILE | s-nail', but *only* when the -t option is
1957 (sendout.c: does no(t/ longer) know about CTE internals!, 2013-02-09)
1959 - Filename arguments for -a are now processed *after* all the resource
1960 files have been loaded etc., so that the usual "folder" specifics can
1961 be used (provided that proper care for shell quoting was taken).
1962 ((main(): delay -a processing.., 2013-01-10), as a part of the
1963 *mainaflags* topic branch.)
1965 - (d38c5bd, When the write command asks.., 2004-11-23) added support
1966 for pipes when saving attachments during a "write" command.
1967 It however used the wrong SIGPIPE signal handler; e.g.:
1969 Enter filename for part 2 (application/x-gzip): |exit
1972 Of course, it still performs a jump and that most likely leaves memory
1973 chunks behind, thus causing some memory leaks. This will be
1974 a long-term problem (you may want to read [mime.c:fwrite_td(): TODO
1975 notes on unfixable leaks, 2013-01-14] for more).
1976 (send.c:sendpart(): fix longjmp() SIGSEGV.., 2013-01-29)
1978 - Fixed a name quoting regression that i've introduced in
1979 (Rewrite *extract().., 2012-10-20), that would have caused
1980 "x \"y\" z" to become "x"y" z" instead of "x "y" z".
1981 (S-nail still does not really have RFC compliant parsers, just as
1982 NetBSD Mail(1) has, i.e., there are structured and unstructured fields
1983 etc... I hope i can provide them in v15.0.)
1984 (names.c:yankname(): fix quote regression.., 2013-01-29)
1986 - The IDNA conversion now assumes domain names are specified in
1987 *ttycharset*, rather than in the LC_CTYPE locale charset.
1988 I.e., it integrates into the usual character set specifications.
1989 (IDNA: honour *ttycharset* for domain names, 2013-01-18)
1991 - The new *editalong* variable will automatically spawn an editor when
1992 composing a mail in interactive mode, just as if `~e' was given.
1993 (Add new *editalong* variable, 2012-01-07)
1995 - The manual has been converted to mdoc.
1996 (The manual has been converted to mdoc, 2012-12-28)
1998 - The ~@ tilde escape, when given filename arguments, will treat the
1999 arguments as a comma-separated instead of a whitespace-separated list.
2000 (collect: change separator of ~@ tilde escape.., 2012-12-28)
2002 The interactive mode of ~@ has also been changed, rather massively.
2003 Please do reread what the manual says.
2004 ((collect: support multiple attachment charsets.., 2013-01-23), as
2005 part of the *attach* topic branch.)
2007 - Thanks to Gianluca Ramunno (ramunno DOT gianluca AT gmail DOT com)
2008 S-Nail will no longer try to issue a STARTTLS command when it is about
2009 to establish a SMTPS connection, a task that logically fails since the
2010 connection is already secured.
2011 (Interestingly the nail codebase performs the necessary test for IMAP
2013 While here the undocumented nail v11.0 *smtp-use-tls* legacy option
2015 (Fix SMPTS with a set *smtp-use-starttls*.., 2012-12-22)
2017 - The RFC 4155 compliant MBOX quoting is now exclusively used, the
2018 shitty *posix-mbox* variable has been removed again.
2019 (Shitty because i've implemented RFC 4155 compliant MBOX quoting and
2020 tested it, then added *posix-mbox* for those who liked the old
2021 behaviour and did not re-test -- the final code path was buggy.)
2023 In mails newly created and saved by S-nail(1) no From_ quoting at all
2024 will be used no more, but instead the rewritten MIME file classifier
2025 will detect unquoted From_ lines and enforce quoted-printable encoding.
2026 (This is an approach that is S/MIME compatible all through the way as
2027 the file data is not modified at all, but only encoded, so that the
2028 data checksum is not changed.)
2030 In yet existent mails that S-nail copies or moves around without
2031 reclassification an RFC 4155 compliant From_ line detector will apply
2032 MBOXO quoting (prepend a single '>') as necessary.
2033 Different to the old MBOXRD behaviour S-nail will neither quote yet
2034 quoted From_ lines ('>>From xy' -> '>>>From xy') nor will it unquote
2035 one quote level when reading etc. mails ('>> From xy' -> '>From xy').
2036 As a result the code could be simplified.
2038 This changeset also incorporates a fix for NetBSD PR bin/47453, as
2039 reported by Martin Brandenburg. I.e., some mailers, noticeably
2040 UW-imap (with MBX format only?), use non-compliant From_ lines with
2041 RFC 822 date specifications. Be aware of 'em.
2042 (RFC 4155 MBOX, and drop *posix-mbox* and foldergets().., 2013-01-06)
2044 - *rfc822-show-all* has been removed.
2045 It didn't work properly for more complex MIME structures, like
2046 message/rfc822 messages with attachments etc., just as i've seen today
2047 on the file(1) mailing list.
2048 So, instead of hacking it now i've dropped it and will come back with
2049 a better solution when the MIME and send layers have been overhauled.
2050 I.e., the real intent was to be able to specify that an embedded
2051 message/rfc822 is treated as a *unity*, and that's the goal.
2052 (Drop *rfc822-show-all*, 2013-01-23)
2053 [The manual will be adjusted in a different commit.]
2055 - *rfc822-no-body-from_* has been renamed to *rfc822-body-from_*.
2056 It thus must be set explicitly.
2057 On the other hand it now catches all cases...
2058 (*rfc822-no-body-from_* -> *rfc822-body-from_*, 2013-01-23)
2059 [The manual will be adjusted in a different commit.]
2061 - The new *charset-7bit* (defaults to US-ASCII) and *charset-8bit*
2062 (defaults to UTF-8) have been introduced.
2063 These are used if seven bit clean data is to be sent, and no
2064 *sendcharsets* are set or the convertion of all of them failed,
2067 - There is no functional change unless there is iconv(3) support.
2068 - There is no functional change unless you set them.
2069 (Introduce *charset-8bit* and *charset-7bit* variables.., 2013-01-18)
2070 [The manual will be adjusted in a different commit.]
2072 In addition the new *sendcharsets-else-ttycharset* variable can now
2073 be used to automatically use *ttycharset* as a *sendcharset(s)*,
2074 regardless of the new *charset-8bit* variable.
2075 (Add *sendcharsets-else-ttycharset* variable, 2013-01-24)
2076 [The manual will be adjusted in a different commit.]
2078 NOTE: before we apply charset conversion we now perform a string
2079 comparison to see wether character sets are identical. If the strings
2080 match (case-insensitively), then *no* conversion is performed.
2081 This means that code like
2083 $ printf "LATIN1: \0376" | s-nail -Ssendcharsets= -s boom ./out.txt
2085 *succeeds* in an UTF-8 environment now, whereas older versions would
2086 fail with an "illegal byte sequence" error (unless the iconv(3)
2087 library of the system would not perform any conversion that seems
2088 superflous, of course).
2090 I thought about making this optional, but, in fact, if this would be
2091 done in an environment without iconv(3) support then the result would
2092 be equally corrupt. And the way it is now we save the expensive and
2093 superflous conversions. (See TODO for more.)
2095 Please *do* reread the manual section "Character sets".
2096 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2098 - An attempt was made to improve MIME Content-XY: detection.
2099 It should be more RFC compliant, and just overall better :);
2100 a simple one-pass classifier cannot match libmagic(3), of course.
2102 This changeset removes support of the long obsoleted (4fee1ef,
2103 2005-01-06) *charset* variable, as well as for the
2104 *maximum-unencoded-line-length* variable that has been introduced in
2105 (48a652bd, 2005-07-26).
2107 For S-nail v14.0 it'll be no longer necessary to do
2109 $ tr -d '\015' < input | s-nail ...
2111 to transport files which use the $-DOS (terminal) newline (sequence).
2112 We still depend upon *sendcharsets* for a while, though.
2113 (Rewrite file-content classification.., 2013-01-02)
2115 - The new *mime-counter-evidence* variable can be used to force
2116 a classification of non-text MIME parts (attachments) by their
2117 filename, i.e., a "reverse-classification" just as would be performed
2118 if S-nail(1) would itself *send* the file(name). This can help
2119 against some stupid MUAs (Apple Mail?) that send .diff etc. files as
2120 `application/octet-stream' parts etc.
2122 At a later time this may become a valued option, causing a temporary
2123 save of unnamed attachments followed by a MIME classification of the
2124 file contents, followed by forced treatment as plain text if it seems
2125 to be human readable. But not yet. Just to warn you.
2126 (Add *mime-counter-evidence* variable.., 2012-12-29)
2128 - The special "pipe-" command "@" can be used to force treatment of
2129 a MIME message part as plain text (e.g.,
2130 'set pipe-application/pgp-signature=@' will henceforth print those
2131 signatures inline and as plain text).
2132 (Introduce the special "@" "pipe-" command, 2012-12-27)
2134 - The MIME types (as from mime.types(5)) will now be cached. Before
2135 all possible sources would have been opened, read and parsed for each
2136 and every message part that required detection of the MIME
2138 The new "mimetypes" command can be used to show or clear that cache.
2139 (Add mime.types(5) cache.., 2012-12-27)
2141 - A small set of MIME types (template: ./mime.types) will now become
2142 compiled into S-nail(1), and be used as a fallback if there are no
2143 ~/.mime.types and/or no /etc/mime.types, or those didn't contain
2144 a matching type. E.g., NetBSD 6 doesn't ship a default database.
2145 Also, file extensions will be matched case-insensitively (case of
2146 attribute values is not specified afaik?).
2147 (Introduce compiled-in mime.types(5).., 2012-12-21)
2149 - The undocumented *charset7* variable was removed.
2151 - The "Message X:" display leader has been changed and will henceforth
2152 be matchable via "^[-- Message \d+ -- \d+ lines, \d+ bytes --]:$".
2153 These lines can no longer be suppressed by setting the *quiet*
2154 option (which was yet possible for print and top, though undocumented).
2155 (Change "Message X:" display message.., 2012-12-20)
2157 - When displaying multipart messages the "Part X:" introductional string
2158 has been changed; if the Content-type: header is not *retain*ed, then
2159 this string will include the part's type and size. Ditto for
2160 Content-disposition: and a mentioned attachment filename.
2161 This is a first step only, for the final version the MIME and send
2162 layers will have to be adjusted. But the string will be matchable via
2163 a "^[-- #.* --]$" regular expression from now on.
2164 (Change "Part X:" display message.., 2012-12-20)
2166 - MIME boundaries in multipart messages are now handled better in that
2167 no boundary string should get through to the display.
2168 (Tweak MIME boundary detection.., 2012-12-20)
2170 - A couple of long standing, even pre-Heirloom mailx(1) memory leaks and
2171 segmentation violations, most of them related to configurations
2172 without alloca(3) support, as well as one leak that i have introduced
2173 when i implemented RFC 4155 MBOX handling, have been fixed.
2174 But S-nail should now survive non-alloca(3) configurations.
2175 (*memtracer* topic branch.)
2177 - The Base64 MIME handling has been rewritten completely.
2178 This was an urgent topic, because the old implementation (a) read in
2179 all lines of a base64 encoded text part, repeatedly resizing a string
2180 storage and repeatedly decoding that string until all the lines have
2181 been swallowed (i.e., or by accident the last decoded byte was
2182 a newline character, and that in turn may of course have fucked up for
2183 multi-octet encodings, dependent on the actual byte-order), (b) used
2184 function local static data to keep state in between multiple
2185 invocations, which messed up multi-byte/-octet encodings like this
2187 �5��ɽ���Aɥ����́��٥��������[lots of data follows]
2189 and (c) did not perform any error checking at all.
2190 The new one does not run into the problem that (a) tried to circumvent
2191 since leftover decoded data (as opposed to leftover *encoded* data) is
2192 transported along the call-chain for later use. It adds a minimal set
2193 of error handling ('may now see "[Invalid Base64 encoding ignored]"),
2194 with more to become possible in later S-nail versions when the entire
2195 layers are reworked. (Until then DOS newline sequences [CRLF]
2196 embedded into base64 will no longer be decoded to Unix LF newlines.)
2197 Base64 encoded lines will now be 76 characters long, as stated (as
2198 a maximum value) in RFC 2045, not 72 as before.
2200 The Base64 code core has been shamelessly stolen from NetBSD's
2201 Mail(1), and i guess it was the second time that this happened :=).
2202 (*base64-rewrite* topic branch; and reworked later on the *mime-cte*
2205 - The string allocation strategy has been tweaked some more to, i think,
2206 a final version (regarding algorithm).
2207 In normal non-interactive send mode it should now no longer need any
2208 dynamic memory at all (unless some dozen recipients are specified).
2209 (Several other places still use normal dynamic memory, of course.)
2210 (*dope-stringdope-again* topic branch.)
2212 - Support for NSS (Network Security Services) has been removed.
2213 I've never worked with it and are, regarding the complexity of
2214 network security, not willing to spend any time on it.
2215 SSL is installed on all systems i'm using and/or testing on by
2216 default, and so i've choosen to go this way.
2217 (It may be that sometime in the future S-nail will add support for
2218 libcurl(3) connectivity, and then it may happen that not only NSS
2219 support is reintroduced again, but also GNU TLS. All of that applies
2220 to network connectivity only, however, not to S/MIME afaik.)
2221 (*drop-nss-support* topic branch.)
2223 - I finally got a glue and understood that Sourceforge does (a) not
2224 support symbolic links and (b) doesn't like dots as regular parts of
2225 filenames. This means that all this time the promised s-nail.tar.gz
2226 symbolic link did not work, and that s-nailv13.3.tar.gz wasn't
2227 accessible either (via the web interface).
2228 In the future S-nail(1) will not provide any more symbolic links (the
2229 Sourceforge website offers a "download latest" thing which seems to
2230 work), and use underscores in filenames -- s-nailv13.3.tar.gz has been
2231 renamed to s-nailv13_3.tar.gz. The tags continue to use dot notation.
2234 - The *heirloom-plus* support branch has been removed.
2235 The code bases diverged a lot and even more to come.
2236 It doesn't make sense to put any effort in that.
2241 - Configuration on UnixWare 7.1.4 will succeed (shell issue fixed).
2243 - Even on DragonFly BSD the IMAP GSSAPI is now found
2244 (in /usr/pkg/include/krb5/gssapi/gssapi.h).
2246 - Support for pkgsrc(7) systems and automatic integration of
2247 C_INCLUDE_PATH and LD_LIBRARY_PATH path configurations.
2250 - Fixes a mortally embarassing regression that the current maintainer
2251 introduced before i really knew what i was doing, in (If *record* is
2252 set, avoid writing dead content twice.., 2012-09-14).
2253 It hit users that send through a MTA and have *record* set; in this
2254 combination data would not have reached the MTA.
2255 Interested parties may read the comment in savedeadletter() (part of
2256 the changeset) or the (Fix MTA/*record* descriptor clash..,
2257 2012-11-10) commit log.
2259 Deepest apologies to tortured users from the current maintainer!
2261 - RFC 4155 compatible MBOX file handling has been introduced, and so
2262 S-nail is now on par with (at least) NetBSD Mail in respect to this.
2263 It can be turned off with the new *posix-mbox* variable, which you may
2264 need to use since not all MUAs are capable to dig those MBOX files.
2265 E.g., less cutting-edge (.-) MUAs fail for this:
2267 |From - Thu May 10 20:40:54 2012
2268 |Date: Wed, 07 Nov 2012 11:48:30 +0100
2269 |To: super@duper.com
2274 |From - Thu May 10 20:40:54 2012
2275 |Date: Wed, 07 Nov 2012 11:48:30 +0100
2276 |To: super@duper.com
2279 |>From - Thu May 10 20:40:54 2012
2280 |From - Thu May 10 20:40:54 2012
2282 I'm not completely happy since S-nail *does* still quote those lines,
2283 how rare they may be -- it *does* modify message content. mutt(1)
2284 implements something more clever and that is quoted-printable encoding
2285 of the "F" from "From", when seen at the beginning of a line.
2286 This, when applied to just *any* "^From", will be a non-modifying and
2287 all-compatible solution.
2289 - SEND_MBOX handling has been changed to discard any Content-Length: and
2290 Lines: headers when it rewrites a message by default.
2291 I know that mutt(1) generates them (why, after
2292 http://www.jwz.org/doc/content-length.html?).
2293 Anyway, S-nail does neither use nor manage them, so that any
2294 modification renders those fields invalid, and then it seems best to
2295 discard them anyway.
2296 You may turn the new behaviour off with *keep-content-length*.
2301 The problem was that i really wanted to release on a 25th.
2302 But i have been able to improve S-nail(1) some more, so that this is
2303 possibly the first real release of it. So i'll add only things that
2304 have changed since v13 -- please see below for the complete picture.
2306 - A new CONFIG=CUSTOM make directive was added, and the new user.conf
2307 variables WANT_SCORE and WANT_DOCSTRINGS have been added. It is
2308 possible to create a floating-point free S-nail(1) now.
2311 - If a feature is disabled not even functions stubs should remain now.
2313 - Many places which will work only with local filenames do now actually
2314 check that the target is a local filename.
2316 - Space-separated lists should work again, at a few places at least.
2318 - Tilde commands will be possible, even with -r.
2320 - The *sendmail-progname* has been added after NetBSD 6 dropped the
2321 send-mail entry in mailer.conf(5), which broke S-nail(1). Now users
2324 - When editing messages via ~e or ~v file and pipe addressees will no
2327 - If recipients occur multiple times spread over lists, i.e., To:, Cc:,
2328 Bcc:, then only one occurrence remains, and in the "highest-order"
2331 - The "list" command prints the list alphabetically sorted (somewhat).
2333 - The "help" and "?" commands take an optional argument that shows
2334 a synopsis string for the given command (unless WANT_DOCSTRINGS was
2337 - String allocations are now more efficient. The situation can still be
2338 improved. However, for the first time Berkeley Mail(1) integrates
2339 harmonically into the system allocator, which may madvise(2) unused
2340 memory to the operating system as necessary and/or possible!
2345 Well, a version number 13 is anyway an ugly thing...
2347 commit 4f534bb33b7c911272cc66a0e3a9e47b73ad8deb
2348 Date: 2012-10-25 20:46:07 +0200
2350 FIX MIME quoted-printable encoding (char cast)..
2355 Well, one of the things that have already been started in v13 is
2356 the turn from using "int" when working with 8-bit characters to
2357 "unsigned char" (and as long as we do not support wide
2360 Unfortunately one very important piece of code, that is handling
2361 encoding to quoted-printable, still used integer instead of
2362 unsigned char, which caused an automatic extension cast to take
2363 place, and that resulted in a messed up output.
2369 I want to give prominence to the following people that helped to improve
2370 S-nail(1) during this development cycle, in order of appearance: Martin
2371 Neitzel, Ezequiel Garzón, Björn Persson, Paul Vojta, and, especially,
2372 John Dodson for warm words from beautiful Australia! Many thanks also
2375 After i've officially forked nail(1) aka Heirloom mailx(1) as S-nail(1)
2376 on 2012-09-18 i have been able to work five weeks almost fulltime on
2377 S-nail(1) development. The first three weeks can be characterized as
2378 hectic fireworks here and there, but then it got better and i was able
2379 to work more or less topic-centric. In the meanwhile S-nail(1) is more
2380 than 230 commits away from the Heirloom base--and drifting further apart.
2382 S-nail(1) v13 is the first release of S-nail(1), but it was forked from
2383 Heirloom mailx(1) 12.5 7/5/10 that arose from Berkeley Mail 8. unless
2384 i'm mistaken. What characterizes S-nail(1) v13?
2386 - The build system has been reworked almost completely.
2387 It is possible to fine-tune which features should be present in the
2388 binary and which don't. The name of the binary can be chosen, and
2389 that choice is reflected all through the manual and the template
2390 resource file. The manual is always complete and thus may document
2391 features that are not supported by the actual binary, though.
2392 Please see INSTALL for more.
2394 - Compiler warnings can now be used. Please see the example WARN= flags
2395 in the Makefile, but '-Wall -Wextra -pedantic' should be silent though
2396 certainly insufficient to reflect the complex work of modern compilers.
2398 - The following recipient address list combines some of the major
2399 improvements that have been made:
2401 <addr1@cdröm.de> (bier) , ./file1,
2402 Steffen Smöregäs (Humbabä) <sauer@bäüer.de> (Hummpäa) ,
2403 sabberlot@träbbel.de , (bier2) <a2@bür2.de> ,
2404 a3@b3.de (bier3) , <a4@b4.de> (bier4, und \"bier5\") ,
2405 |cat > pipe1 , (bier 6) <a6@bür6.de> , ./file2 ,
2406 (co\$mm1) abc1@düf.de (cö,bmm,2) (co\"m\"m.3) ,
2407 co\$bmm1 \"c,ömm2\" co\"m\"m.3 <abc2@däf2.de> , |cat > pipe2 ,
2410 That, on a single line, may be given to ":m" or (quoted) on the
2411 command line, or to "~c" or whatever, and it will work as expected
2412 (well, everything else would be a bug..) and result in the following
2413 sendmail(1) invocation:
2416 <-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>
2418 Date: Thu, 25 Oct 2012 17:12:15 +0200
2420 Cc: Steffen =?utf-8?Q?Sm=C3=B6reg=C3=A4s?=
2421 =?utf-8?Q?_(Humbab=C3=A4)?= <sauer@xn--ber-qla4j.de> (=?utf-8?Q?Hummp=C3=A4a?=),
2422 sabberlot@xn--trbbel-cua.de, moppel@xn--hppel-jua.org,
2423 <addr1@xn--cdrm-7qa.de> (bier),
2424 co$bmm1 =?utf-8?Q?"c,=C3=B6mm2"?= co"m"m.3 <abc2@xn--df2-qla.de>,
2425 (co$mm1) abc1@xn--df-xka.de (=?utf-8?Q?c=C3=B6,bmm,2?=) (co"m"m.3),
2426 (bier 6) <a6@xn--br6-hoa.de>, <a4@b4.de> (bier4, und "bier5"),
2427 a3@b3.de (bier3), (bier2) <a2@xn--br2-hoa.de>
2428 Subject: Re: SubjectTest
2430 Content-Type: text/plain; charset=us-ascii
2431 Content-Transfer-Encoding: 7bit
2436 So list parsing has been fixed, IDNA support has been added, and it is
2437 possible to mix pipe and file recipients *and* multiple thereof, and
2438 the result is still correct for *all* of them.
2439 I think this kind of list can be given wherever a user can directly
2440 enter such a list. And i think all that is unique to S-nail(1).
2442 - When writing back edited messages the target MBOX mailbox can no
2443 longer become "corrupted" when the trailing newline was removed during
2444 the edit. Also affected FreeBSD and NetBSD mail(1).
2446 - A security fix for CVE-2011-2895 was applied.
2448 - The generated Message-Id: is now more human-friendly.
2450 - The -h command line option has been dropped. Use "-O -h XY" if your
2451 MTA really supports that.
2453 - The -O and -r command line options no longer enforce a one-shot send
2454 mode, and instead persist for the duration of the entire session.
2456 - Variables set via the -S command line option are now (un)set twice;
2457 immediately and after all the resource files have been loaded.
2459 - Other new or changed options/commands, in order of appearance:
2460 recipients-in-cc, smime-sign-include-certs, quote-fold, stealthmua,
2461 add-file-recipients, write, rfc822-no-body-from_, rfc822-show-all,
2462 mail/Mail, idna-disable, idna-strict-checks, ??
2464 - In the codebase itself an effort to reduce duplicate work and
2465 introduce caching, and to minimize the use of local variables, was
2466 started, but that is long term. A lot of improvements here and there,
2467 too, like using the well MD5 optimization from Wei Dai, Chris Torek's
2468 hash algorithm for hash tables etc.
2470 - Incredibly important: an heraldic animal was found: snailmail.jpg!
2472 The full history can be inspected by issuing the git(1) command
2474 $ git log --reverse s-nail..s-nailv13
2476 A new TODO has been introduced, and it is getting longer and longer.