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