Review: list.c
[s-mailx.git] / NEWS
blob25be9a90f5a0d337181737c1c00cc10134bffc8c
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.5.2 and v14.6:
8   # All commits:
9   $ git log --reverse --topo-order OLD..NEW
10   # Only topic branch headers:
11   $ git log --oneline --merges --reverse OLD..NEW
12   # Same, but truly accessible:
13   $ git log --oneline --parents --merges --reverse 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.6, 2014-02-15
19 -----------------
21 + With this release the S-nail codebase has been converted to my usual
22   style of function-code-flow and notation.
24   ?0[]$ git diff --shortstat v14.5.2..HEAD
25    55 files changed, 28065 insertions(+), 25356 deletions(-)
26   ?0[]$ git diff --ignore-all-space --shortstat v14.5.2..HEAD
27    55 files changed, 14664 insertions(+), 11955 deletions(-)
29   Maildir and S/MIME support have been restored, and a MIME bug that
30   could have led to missing data in header display+ has been fixed.
31   Ah, and users of compressed boxes should now feel luckier, too --
32   at least once they've realized that the compress extension is no
33   longer appended automatically, but must be given explicitly.
35   Thus: i hope that all those i-am-new-to-the-codebase bugs i've
36   introduced over a year ago have been found and fixed, and that
37   v14.6 is the true "sweet sixteen" (months of maintainership).
39 ChangeLog (packager-affine)
40 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
42 - If WANT_AMALGAMATION is set, `-pipe' will be added to our CFLAGS
43   (which are only honoured with WANT_AUTOCC, of course).  [1330411]
45 - New configuration option: WANT_IMAP_SEARCH, enabled by default.
47   The regular expression support for IMAP-style search expressions has
48   been removed again: it changed the IMAP search semantic in that it
49   couldn't be executed on the server, but only local, and the syntax
50   sucked, too.  (And we have a new `?' search expression.)  [402b7c6]
52 - CONFIG=MEDIUM and CONFIG=NETSEND now both WANT_REGEX.  [dee954e]
54 - The `make test' target should *really* work gracefully, now that usage
55   of the `-#' command line option also sets the folder to be opened to
56   `/dev/null'.  (Still no `void' box in sight.)  [0119d514]
58 - All published patches may also be found in a new [patches] branch.
60 ChangeLog
61 ^^^^^^^^^
63 - Several fixes that saw published patches (with equivalent
64   functionality), and are thus described in NEWS, are included:
66   . s-nail-14.5.2-sort-alt.patch
67     Fixes a hasty commit that introduced string relaxation in a faulty
68     way.  [5e75529]
70   . s-nail-14_5_2-mimeheader.patch
71     Fixes data loss if multiple MIME encoded-words follow each other in
72     header bodies.  [c81afce]
74   . s-nail-14_5_2-maildir.patch
75     Effectively restores proper maildir support.  [1c2563b, 13f325f]
77   . s-nail-14_5_2-smime.patch
78     Fixes an off-by-one error and, in effect, restores S/MIME sign and
79     encryption etc. support.  [e759f75]
81 - The `screen' terminal type is by default recognized as being
82   colour-capable.  [e759f75]
84 - With the NCL command line editor and WANT_TABEXPAND hitting <TAB>
85   should now act as if an "implicit asterisk" had been given in case
86   there was no expansion of the original user input; e.g., '? ls <TAB>'
87   may exceed your line limit now ;).  [0910a8f]
89 - The S/MIME cipher list was outdated, RFC 5751 requires AES-128 as
90   the default, the RC2 ones are long obsoleted (etc.).  Also we now
91   should handle that OpenSSL may not support individual algorithms.
93   Note: we use the option value `des3' for `DES EDE3' from now on!
94   (Maybe see *smime-cipher-user@host* manual entry.)
96   *ssl-method* may now also be assigned the new (default) method `auto'
97   explicitly.
98   [2472670]
100 - Messages will now be stored in a set *record* even if only file or
101   pipe addressees were given.  [a11935b]
103 - Support for xz(1) compressed mailboxes has been added.
104   (The `Can't canonicalize' warning for compressed boxes had the same
105   cause that made maildir usage impossible, but i don't feel _too_ bad
106   because looking into the code a bit revealed that the *newmail*
107   mechanism never worked for such boxes anyway.  And will for a while.)
108   [7fd9979]
110 - S-nail now supports nested if..else..endif conditionals.  [3c22c04]
112 - The NCL command line editor now locks its' history file when it reads
113   and writes it, so as to protect against concurrent usage.  [c3a39ce]
115 - You can now say 'fi%', 'fi&', 'p&10' and `ghost ps '!ps axu'' followed
116   by 'ps|grep nail'.  [c3266c6]
118 - Invocation cleanup: usage of -f and -u is mutual, -H and -u is ok, -u
119   in send mode not.  [fa0a0aa]
121 - New message specification: `[?name-list]?search-string' will search
122   in locally available messages.  If the optional `?name-list' part is
123   given, that specifies the (comma-separated list of) header fields to
124   search in.  The special names `body' and `text' can be used to search
125   in message bodies alone and bodies including the headers fields,
126   respectively.  Note that "message bodies" unfortunately still means
127   "including headers of attachments and attachments themselves", and
128   until some later time.  [61bb460]
130 - The new command line option `-L spec-list' prints a header summary of
131   only those messages that comply to the specification list `spec-list'.
132   If -L and -H are used in combination, no summary is printed at all,
133   but the exit status reports wether `spec-list' would have matched some
134   messages or not.  [934e12c]
136 ChangeLog (purely technical)
137 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
139 - Most of the work was changing the code-flow of the entire codebase to
140   my usual style of programming, with a single function entry and
141   a single function exit, including the addition of N(ot) Y(et) D(ead)
142   points of interest, which finally enabled me to get rid of (sic!)
143   using a debugger for S-nail development.  Just compile via 'make
144   devel', and in case of a crash you should get a nice backtrace
145   listing.  (You use IMAP, do you?)
147   However, because practically every line of code has been touched, this
148   caused some other changes along the way, e.g., the handling of
149   temporary files was changed completely (the formerly used Ftemp()
150   function has been replaced with a new Ftmp(), which handles unlinking
151   itself as necessary etc.), it was detected that the S/MIME support was
152   no longer compliant to any RFC, some resource leaks have been
153   eliminated...  It is likely that a change so large introduced some
154   other flees and flaws, however.  But it looks good so far.
155   Thank you.
157 v14.5.3, 2014-02-15
158 -------------------
160 + No official release, only exists as git(1) tag.
162 v14.5.2: fix 4: 2014-02-15 (2014-02-14)
163 ---------------------------------------
165 - s-nail-14_5_2-smime.patch
166   Fix a very stupid off-by-one error that i've introduced
167   in [7bdf330] (OpenBSD 5.3: sigh, address strcpy(),strcat()
168   etc., 2013-06-01).
169   Until we've changed the used data from string to something
170   line-wise, use strcat(3) again.
172 v14.5.2: fix 3: 2014-02-10
173 --------------------------
175 - s-nail-14_5_2-maildir.patch
176   maildir folders would have caused problems in environments which
177   provide the realpath(3) function: beside a "cannot canonicalize PATH"
178   warning the finally used path would be wrong (`test3' would end up as
179   `test3/test3'), so that any further access would try to use the wrong
180   path.  Please read the description of this patch and/or the commit
181   logs of the commits [1c2563b] and [13f325f].
183 v14.5.2: fix 2: 2014-02-05
184 --------------------------
186 - s-nail-14_5_2-mimeheader.patch
187   A header like
189     Subject: ehm, .getElementById("blink") needs <span
190      =?US-ASCII?Q?id=3D"blink">,?= not =?US-ASCII?Q?class=3D"id"?=
192   would yet be displayed without the " not " in between the two encoded
193   words because of faulty "encoded-word-continuation" detection (note
194   the quotation marks).  The error path could also have been seen in
195   mail forwarding and in faulty searching etc.
196   This patch is in a row of fixes for my hasty [0f9ad93] from 2013-03-12
197   that already caused the v14.2 minor release (because of [b608c6b] from
198   2013-03-14).  Those with mercy may read the commit message of [c81afce].
200 v14.5.2: fix 1: 2014-01-30
201 --------------------------
203 - s-nail-14_5_2-sort.patch
204   Reverses (sort(),thread(): use srelax()!, 2014-01-18, [a9b67e9]),
205   which was a hasty commit of an untested diff that i've added few
206   minutes beforehand:
208     As a rather careless last-minute change i've added string relaxation
209     to threaded and sorted display, but it's really one more step towards
210     lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
212   An alternative, forward-heading patch that keeps string relaxation has
213   been pushed to [master] as [5e75529] and is also available as
214   s-nail-14_5_2-sort-alt.patch.
216 v14.5.2, 2014-01-18
217 -------------------
219 Thanks to Ypnose, Sunil Nimmagadda and Gavin Troy.
220 Gavin Troy *really* deserves special thanks for facing [next]!
221 And i want to dedicate the new coloured message display functionality
222 to John Dodson and Ypnose.  Thank you.
223 (And best wishes to beautiful Australia!)
225 ChangeLog (packager-affine)
226 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
228 - All utilities can now be overwritten during configuration so that
229   their values are fixated in the generated makefile (`mk.mk').
230   I.e., talking about MAKE=, STRIP=, awk=, cat=, chmod=, cp=, cmp=,
231   grep=, mkdir=, mv=, tee=.
232   rm= and sed= have to be overwritten from the command line, they're
233   needed before `conf.rc' is read.
234   [5c03347, 072ec65, 39a00ab, 23a1245, ?]
235   (Ypnose)
237 - The release tarball is now also available in a xz(1) version.
239 - New configuration option: WANT_COLOUR, by default enabled.
241 - 'make test' should now really work, even if the running user has
242   a mailbox with content. [f223a91]
244 - WANT_AUTOCC is now by default enabled, so as for normal users which
245   don't have the need to embed into a defined packaging environment.
246   [d7e4e31]
248 - Installation no longer strip(1)s away debug symbols if WANT_DEBUG was
249   enabled. [6d075c6]
250   (Gavin Troy)
252 ChangeLog
253 ^^^^^^^^^
255 - Fixes to some bugs that are present since the first cvs(1) commit of
256   Heirloom mailx(1); includes that *ssl-key-user@host* should now work.
257   [4405a2cc, 9770c26f, 692976b9]
259 - Some off-by-XY fixes, thanks to the debug memory canaries.
260   [19b2b0d, 202506e, 43df6e4]
262 - Fixes for (other) stupidisms (of mine): [1c2161f]
264   This includes true implementation of in-memory history limit for the
265   NCL, which was the final and real solution to a segmentation fault
266   that Gavin Troy had to deal with on [next]. [1089f2b]
267   (Gavin Troy)
269 - For completeness: new command `var-inspect' shows information about
270   all given options.  Mostly ment for implementing future tests.
271   [topic/okeys]
273 - The `pipe' command no longer embeds message information into the
274   data passed through to the command (when *piperaw* is set).
275   [ef5ecc6 (part of topic/colour)]
277 - Simple coloured message (header) display is now possible.  Please
278   read the new manual section "Coloured message display", use
279   *colour-disable* to turn it off.  (It is enabled by default if it
280   knows the terminal is capable and, if used, the pager can, too.  Note
281   we now set LESS=FRXi when starting PAGER and no LESS= is in the
282   environment.)
284   Dedicated to John Dodson and Ypnose.
285   [topic/colour, c6e84c7]
287 - The `if', `else', `endif' syntax has been extended.
288   You can now "if 0" (never), "if 1" (always), "if $OPTION" (boolean
289   check for OPTION) and "if $OPTION == 'VALUE'" as well as "if $OPTION
290   != 'VALUE'".  Unfortunately it is still not possible to use
291   conditionals inside conditionals. [0fb2ae7]
293 - -# now also sets MBOX=/dev/null. [4be2f1e]
295 - The NCL command line editor now supports cursor keys when the terminal
296   produces xterm(1)-compatible keycodes ('ESC' + '[' + [DACB] for left,
297   up, right and down, respectively).  What a thrill, yay!!! [0cbf672]
299 - New (optional) command: `history': show or clear command line history,
300   or select a specific command line from in there.
301   History works a bit different now, and should no longer include
302   command lines which include specific message numbers; more to come.
303   [59c6195, topic/hist2]
305   I plan to join all the history management and use only the one that is
306   part of NCL now, hooking it into editline(3) and readline(3).  That
307   would shrink tty.c a bit and also introduce duplicate elimination for
308   readline(3).
310 - The new ~u and ~U tilde escapes work like ~f and ~m, respectively, but
311   don't include any header lines.  Inspired by a patch from
312   Sunil Nimmagadda on openbsd-tech@.  [c37b8b3]
314 - The `|' command should work again -- it has stopped working on
315   2013-09-09 when i've accidentally changed the command name from `|' to
316   ` | '. [5a8378d]
317   (Gavin Troy)
319 - As a rather careless last-minute change i've added string relaxation
320   to threaded and sorted display, but it's really one more step towards
321   lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
322     ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
323       Buffer allocs ever/max simultan. : 14/14
324       Overall alloc count/bytes        : 17165/881088
325       Cycle maximums: alloc count/bytes: 16906/876984+0
326     ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
327       Buffer allocs ever/max simultan. : 0/0
328       Overall alloc count/bytes        : 16515/841816
329       Cycle maximums: alloc count/bytes: 16256/837712+829560
331 ChangeLog (purely technical)
332 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
334 - We now have debug canaries for all memory sources now that [8419d44]
335   added them to the "string dope".
337 - The most work has been done on our value system, which manages the
338   binary and value options, like *folder* etc.
339   It is now based on enumerations, i.e., constant integers, not on
340   strings.  This of course only relates to non-dynamic options.
341   Anyway, this saves us key hashing and allows more compact data
342   representation in general (see the new header `okeys.h' for more).
343   [topic/okeys]
345 v14.5.1, 2013-12-27
346 -------------------
348 ChangeLog (packager-affine)
349 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
351 - The build system *only* uses the automatically detected $CFLAGS and
352   $LDFLAGS if WANT_AUTOCC=1.  I.e., even unset or empty $CFLAGS and
353   $LDFLAGS are not touched until then.
354   (We do however still set $CC if that is unset or empty or set to the
355   plain string "cc".) [856625f6]
357 ChangeLog
358 ^^^^^^^^^
360 - Fixed segmentation faults / bus errors when setting *nofolder*
361   / *line-editor-cursor-right* to the null string (only with WANT_NCL),
362   respectively. [d1f1a19b, 21e5c285, 9f6ff25d]
364 - *prompt* handling is now really POSIX compliant (thus no prompting
365   occurs not only for 'set noprompt', but also for setting *prompt* to
366   the null string).
368   This was indeed a rather large changeset that also introduced the new
369   *prompt* escape character \&, which expands to `?' by default and to
370   `&' if *bsdcompat* is set.
372   Like that we now can simply assign "\& " to *prompt* at program
373   startup, which (a) allows to do 'set noprompt' without error (once)
374   and (b) allows for POSIX compliance in respect to prompt handling
375   without any complicated conditional code, but (c) gives us the
376   opportunity to continue to support BSD prompts.
377   [0dfe53db]
379 - For completeness: new command: `features'.  (Rather useful for being
380   able to implement more tests in the future, and act according to what
381   is really compiled into the tested binary.
383 - The `-#' command line option now also sets *quiet* by itself.
384   [7b5a5c87]
386 - nail.1: a newly introduced empty line in the manual produced error
387   messages on some systems.  Fixed.
389 - The return value of the `mimetypes' command has been reversed and
390   should now be fixed. [acf56ac52]
392 - In threaded display the Subject: followup suppression no longer
393   takes into account invisible messages.
394   Also, rudely hack in a messages-already-written-in-this-round counter,
395   so that the followup suppression knows when "the top of the screen" is
396   reached, which (seems to) help(s) against missing subjects up there as
397   well as after a `newmail'. [topic/subject]
399 - Added a WANT_REGEX=1 toggle in `conf.rc'.
400   When we find regular expressions then a new regex-enabled IMAP-style
401   search is available (see the manual for more) [1ec8fe68]
403     ? f (/or subject ^\[S-nail (subject ^\[nail-devel))
404     ? f (/subject ^\[S-nail) (/subject ^\[nail-devel)
405     ? f (/subject "^\\[(S-nail|nail-devel)")
407   I'm looking forward for being able to add another, simplified, syntax.
409 ChangeLog (purely technical)
410 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
412 - The cc-test.sh has seen some tweaks, for easier future extension, and
413   for adding a test for [d1f1a19]. [several, mentioned: 21e5c285]
415 - On systems without a real wordexp(3) implementations deadlocks could
416   occur because we sometimes hold_all_sigs() to avoid longjmp(3)s away
417   (and will do so for quite some time, still), and that resulted in the
418   SIGCHLD that reported the exit of the started subshell to be blocked,
419   too (e.g., after '? *.h<Tab>': endless hang).  Fixed.
421 v14.5, 2013-12-19
422 -----------------
424 Many thanks: Gaetan Bisson, William Yodlowsky, Gavin Troy,
425 Thomas (wasd AT gmx DOT net), Ypnose.
426 And Gavin Troy definetely deserves a very special credit.
427 But thank you all, and very much indeed!
429 ChangeLog (packager-affine)
430 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
432 - The `test' make target has been fixed. [f0991e14]
433   (Gaetan Bisson)
435 - It is possible to gain a different kind of make(1) verbosity by
436   using a VERBOSE=1 command line argument (this knob is not taken into
437   account when deciding wether a rebuild is needed). [498e4ad0]
438   (William Yodlowsky)
440 - On Crux 3 Linux and OpenBSD the readline(3) and editline(3),
441   respectively, libraries will now be found when desired. [a7d1aa78]
442   (William Yodlowsky)
444 - WANT_LINE_EDITOR has been renamed to WANT_NCL, *plus*.
445   So now there are WANT_READLINE, WANT_EDITLINE and WANT_NLC, each of
446   them can be set individually, and they are tested in the shown order.
447   Also, WANT_TABEXPAND and WANT_HISTORY have been introduced and can be
448   used to fine-tune functionality. [ae4e01e1, b2635feb, 9742bf40]
450   (While here, i've fixed WANT_TABEXPAND code so that it is more
451   sensitive to line excess; on Linux etc., where MAX_INPUT is 255,
452   strange behaviour could be seen because we didn't take into account
453   the length of the prompt at all.  The NCL is assumed to have only
454   one remaining, but unfixable problem: backspace often is incapable
455   to cross visual line boundaries; use ^A/^E + ^L, then. [e832c04a]
457   Also, cursor (now ^B and ^F) and history movement (now ^P and ^N) of
458   the NCL have been changed. [d7d928da])
460 - WANT_QUOTE_FOLD is now enabled by default.  And WANT_ASSERTS has been
461   renamed to WANT_DEBUG. [1e10da1f]
463 - The build system has seen yet another overhaul in general.  CC, CFLAGS
464   and LDFLAGS plus are now tracked and changes will force rebuilds.
465   The new WANT_AUTOCC option can be used to let the build system figure
466   out a compiler and choose known-to-work flags.  Use the new ADDCFLAGS=
467   and ADDLDFLAGS= command line arguments to add your specific flags on
468   top of those -- the final CFLAGS etc. are what is change-tracked.
470   This rather massive internal rework revealed that old Bourne shells
471   were yet not supported by the new build system, and so did testing
472   that UnixWare installation was yet impossible due to tool
473   incompatibility. [75c4b74e]
475 - The new WANT_AMALGAMATION option will force compilation of all the
476   sources in a single compilation unit.  This requires a rather large
477   amount of memory, but may produce a more compact, maybe more optimized
478   binary.  (Implementing this revealed quite some bugs which could
479   therefore be fixed.) [topic/amalgam]
481 - `nail.rc' has been pimped a bit (mostly comments, but
482   *mime-counter-evidence* is now always set). [e3094ba7]
484    That changeset was however buggy. [f3dcb46]
485    (Gavin Troy)
487 - We no longer use install(1) for `install'ation make rules. [80b02cd9]
489 ChangeLog
490 ^^^^^^^^^
492 - Even '$ s-nail & fg $!' will now work with the NCL. [2a8b5c55]
494 - Several off-by-one (off-by-two) fixes. [32ce9836, 71e6d013, f139dc36]
495   (Gavin Troy, Thomas)
497 - Setting *noprompt* now prevents prompting, as per POSIX. [ecefaf63]
499 - *prompt*: new \$ (exit status of last command) and \@ (name of
500   currently active mailbox) escape sequences. [6f652046]
502 - One may now omit the space in '? unc' ('?unc') [05fcb383]
504 - New commands: `ghost' and `unghost' define command aliases (since
505   `alias' is taken for a different purpose) [topic/commands]
507     ? ghost ps '!ps axu'
508     ? ps |grep nail
510 - There is now a pseudo account `null' (case-insensitive).
511   Also a new `localopts' command exists; when used from within an
512   `account' block, options changed will be reverted back to its former
513   value when the account is left (e.g. by switching to `null'):
515     define sdn_ {
516        alternates sdaoden@users.sf.net sdaoden@users.sourceforge.net \
517           sdaoden@googlemail.com sdaoden@gmail.com
518        set Sign="\n--steffen\nForza Figa!" sign="\n--steffen"
519        set smtp=smtp.gmail.com smtp-auth=plain smtp-use-starttls
520        #..
521     }
522     account sdn_gm {
523        localopts 1
524        call sdn_
525        set from="Steffen \"Daode\" Nurpmeso <sdaoden@gmail.com>"
526     }
527     account sdn_sf {
528        localopts 1
529        call sdn_
530        set from="Steffen \"Daode\" Nurpmeso <sdaoden@users.sf.net>"
531     }
533   E.g., after
535     ? acc sdn_gm
536     ? acc null
538   neither of *Sign*, *sign*, *smtp** nor *from* should be set.
539   Please see the manual for more.
540   TODO - neither command-ghosts nor alternates etc. are yet tracked
541   TODO - we should have a boolify() so as to say 'localopts yes' etc.
542   [topic/acmava]
544 - New command: `cwd' (print current working directory).
545   Also fixing the `chdir' return value. [eff4397c]
547 - The *ssl-method* now allows explicit setting of 'tls.1.1' and
548   'tls1.2' values. [c66b4196]
550 - When sending to display, be aware that filenames in MIME parts may of
551   course be MIME-encoded! [1454be03]
553 - *hostname* is now honoured even if *smtp* is not set.  (We always
554   supported *from*, so why not *hostname*?)
556 - The `-u user' option now acts identically to setting the $USER
557   environment variable and both now tend to mean something like
558   "impersonate as user in some aspects".  Note that we have always used
559   the latter in one or the other way, and `-u user' always ment more
560   than just "open mailbox of user", so i think this change sharpens the
561   edge in the right direction. [09632731]
563 - Filename argument quoting has been tweaked for (some) function(s which
564   take a filename argument last).  The following snippet as reported by
565   Gavin Troy should work now: [2bb9b80e]
567     ? mv +inbox.Junk\ Mail
569 - The GNU implementation of wordexp(3) is also (i've added a workaround
570   for the very same bug for Mac OS X in S-nail v14.3 [63273772]) buggy,
571    which causes segmentation faults when expansions failed (`fi &VOID').
572   [470527b7]
573   (Gavin Troy)
575 - The `fi' command no longer uses the (possibly truncated) display
576   version of a filename, but the full path. [5cd85b07]
578 ChangeLog (purely technical)
579 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
581 - Large rework of internal structure: bundle inclusion of most of the
582   external and the content of most of the internal #include files in the
583   new nail.h.  If that would have been done very first bugs like the
584   infamous MAXPATHLEN bug as reported by Paul Vojta (see v14.4.2) would
585   never have occurred. [21f3155b]
587 - Support for -fstrict-overflow cc(1) flags. [topic/strict-overflow]
589 - Fixed the quotation filter which yet allocated memory even if not
590   used. [c98cdaf5]
592 - String relaxation reduces memory pressure rather drastically when
593   working with many (especially MIME) mails at a time, e.g., when
594   writing a modified mailbox.  Before all messages of a mailbox had to
595   be worked without releasing any memory in between, now we give back
596   memory (to our pool, not the system) after each and every message.
597   [topic/srelax]
599 - The other memory source now uses bound canaries, which also found some
600   errors. [3d9fe741]
602 - We now use the EL_PROMPT_ESC editline(3) mode for prompting, which
603   should offer the possibility to use coloured prompts etc. with
604   (even those) editline(3) (versions which do offer it -- older versions
605   should just do fine by themselves).
606   S-nail uses the special trigger control character \1. [ea30d818]
607   (Ypnose)
609   Note however that all tested editline(3) versions are buggy and
610   either don't get it right (`\1COLOR-ON\1stuff\1COLOR-OFF\1') or are
611   incapable of proper repainting (`\1COLOR-ONstuffCOLOR-OFF\1').
613 - We now use the MD5 digest code from the OpenSSL library if that is
614   usable. [893b16c0]
616 v14.4.5, 2013-10-19
617 -------------------
619 Many thanks: Gaetan Bisson, Stephen Isard, Jérémie Courrèges-Anglas,
620 William Yodlowsky, and Adam Sjøgren from GMANE.org!
622 ChangeLog (packager-affine)
623 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
625 - The packager-install: target has been fixed. [a8c1b0b]
626   (Gaetan Bisson and William Yodlowsky)
628 - As suggested by Gaetan Bisson the several build system tasks are now
629   individually addressable, i.e., 'make [OPTIONS] config', 'make build',
630   'make test', 'make packager-install'); nothing changes unless you want
631   to, in which case: please see INSTALL. [4d3b799]
633   The new target 'test' will call cc-test.sh with its new --check-only
634   option which will only perform the (too few) function tests on the
635   ready binary.
636   And cc-test.sh will no longer create output files, but simply echoes
637   to STDOUT and STDERR. [629e1ee, 786f219]
638   (Gaetan Bisson)
640 - The default configuration file now sets *bsdannounce* and *bsdflags*,
641   all in one line, as suggested by William Yodlowsky.
642   (If *header* is disabled, *bsdannounce* is ignored, but *header* must
643   be enabled by default according to POSIX, and *bsdannounce* is just
644   the same as *header*, but for the folder-switched event.  Thus setting
645   *bsdannounce* is the more sane default, imho.) [6161f10]
646   (William Yodlowsky)
648 - Announcement messages are now tagged '[ANNOUNCE]'. [26e1b35]
649   (Tagging suggested by Stephen Isard and Jérémie Courrèges-Anglas)
651 - The manual NAME now includes the version (but it's somewhat ugly).
652   [8adcca4]
654 ChangeLog
655 ^^^^^^^^^
657 - When switching folders when in compose mode, message attachments
658   become invalid.  For v14.4.5, at least warn when this happens.
659   [47eb1ab]
661 - When reading multipart/alternative messages which do not contain
662   a text/plain part, the (most likely HTML) part is not displayed (even
663   if S-nail is configured to display HTML).  The reason is a bug i've
664   introduced with [0d43a999] (Change "Part X:" display message..,
665   2012-12-20).  (Note that the committed fix i've posted to the list was
666   not correct either and has been fixed itself.) [225c02b, ecfa149]
668 v14.4.4, 2013-10-03
669 -------------------
671 Thanked, Gavin Troy, Gaetan Bisson.
673 - Fix output buffer confusion that would have occurred when parts of
674   a multipart mail had a pipe command set.  Longer story in [e75d16dd].
675   (Gavin Troy)
677 - The makefile now supports a `packager-install' target that bypasses
678   the reevaluation of the configuration (after checking that there is
679   one) and directly steps ahead to the install process.
680   (Gaetan Bisson)
682 - Notes in INSTALL that CFLAGS and LDFLAGS need to be overwritten from
683   within (conf.rc or) the command line.
684   (Gaetan Bisson)
686 v14.4.3, 2013-10-02
687 -------------------
689 I convey special thanks to Karol Błażewicz and Gaetan Bisson.
691 - The new build system didn't allow to overwrite CFLAGS= when used in
692   conjunction with GNU make(1).  To make a long story short, removing
693   a `.POSIX:' directive from the makefile fixed the problem.  Luckily.
694   [e6b26526]
696 - More INSTALL notes for UnixWare 7.1.4, which suffers from the same
697   problem: here the fix is to use the -e option of make(1).
699 - Karol Błażewicz reported a segmentation violation he got when using an
700   Arch Linux S-nail test package, and Gaetan Bisson informed me about
701   that.  The problem was that we didn't assign the resulting default
702   address (which gets used when *from* is not set) to the result which
703   gets used, effectively resulting in a NULL dereference. [cfd60479]
705 v14.4.2, 2013-09-21
706 -------------------
708 Many thanks to Paul Vojta.
710 - On GNU/Linux there is no MAXPATHLEN constant defined by default, as
711   this is a non-standard legacy constant.  Mozilla ran into this some
712   time ago, though a bit different [1].  It made it easier for S-nail.
714     [1] <https://bugzilla.mozilla.org/show_bug.cgi?id=412610>
716   We could include `sys/limits.h' to get at MAXPATHLEN, there it is
717   defined to be PATH_MAX, but let's just include the standard `limits.h'
718   and ensure MAXPATHLEN ends up >= PATH_MAX.  With this condition being
719   true even FORTIFYd sources won't bail with reported buffer overflows
720   because realpath(3) expects a buffer of PATH_MAX bytes. [bee5e57c]
721   (Paul Vojta)
723 - With the builtin LINE_EDITOR, ensure proper interaction with GNU
724   rlogind(8), which is alone in its quest to set the ISTRIP termios(4)
725   flag. [61e00f2d]
727 - Bugfix a codepath that would have prevented compilation when
728   HAVE_ICONV is not set.
729   While there, allow to unselect message attachments when using the `~@'
730   tilde command interactively, which i mysteriously had forgotten when
731   allowing selection of 'em.  (oops?) [4f58ffea]
733 - It's now easier for packagers to get at debug-enabled CFLAGS; simply
734   use WANT_ASSERTS=1 (should not be enabled in shipouts, please).
735   [d8663406]
737 - Fixed a terrible bug that i've introduced in november 2012, that would
738   have corrupted MBOX files when using the `resend' command.  (The
739   so-called "From_ line" would have been quoted to ">From_ line" instead
740   of simply being stripped.) [19d449e2]
742 - Fixed a SIGSEGV for the builtin LINE_EDITOR, that would have occurred
743   if a history traversal (^B or ^F) would have been continued by
744   a reverse history completion (^R).
745   While there, avoid some multiple-beeps-in-a-row that yet occurred due
746   to code reuse, and document that ^G etc. reset the multibyte state
747   machine. [003d9f6f]
749   Also, the expand-on-tab code could have excessed line input maximums,
750   e.g., after `? /usr/bin/*<Tab>'.  This was of course known, but
751   i wanted to keep it because all tested (modern) terminals "mess up but
752   won't break", and thus made it possible to use the data, even if it's
753   visual representation was messed up.  The real solution will be much,
754   *much* more complicated, i.e., show possible *completions*, page-wise,
755   etc., i.e., just like is known by tab *completion*.  This will need
756   far more time because it doesn't make sense to embed such complicated
757   code into the current bed.
758   Now i've chosen to simply don't display excess, but replace the
759   content with a message that says that there was excess.  It simply
760   looks better. [0320c8ba]
762 - I've changed the use of `[?]' as a replacement sequence for invalid
763   / non-displayable characters to `?' (again).  There are still code
764   paths (from the original codebase) which use the real Unicode
765   replacement character instead, so our display is still not unique.
766   On the long term the codepath can anticipate in all levels wether
767   use of Unicode is possible, so that, then, we will be unique again,
768   using either only `?' or the Unicode replacement character. [faf6380]
770 - I've anticipated in v15.0 and implemented *quote-fold* as a stream
771   filter.  It is now multibyte safe and takes into account the visual
772   width of characters, i.e., ideographs etc.  It is working almost as
773   good as an algorithm can work that looks at data linewise, but is yet
774   experimental and incomplete in that it will break lines even if only
775   whitespace or a backslash escape follows.  It is code that is only
776   a few hours old, which is why it is not enabled by default. [
778 v14.4.1, 2013-09-14
779 -------------------
781 How terrible.
783 - Fix some harmless stylos and typos in the manual and `conf.rc'.
784   [1a6b880, 417b066]
786 - Ensure *complete* proper cleanup on signal-caused configuration run
787   aborts. [7a08bda]
789 - Bugfix: reenable empty configuration variable overrides, as in
791     $ make install SID= NAIL=mailx ...
792   [171861d]
794 - Bugfix: rename the `conf.rc' variables SHELL, LISTER and PAGER because
795   they clash with the POSIX standard variables of the same names, which
796   hurts now that the configuration is run through the shell itself.
797   The configuration names are now XSHELL, XLISTER and XPAGER (ouch).
798   [ef93c4e]
800 - nail.rc: comment out some non-portable S-nail(1) specifics, for those
801   who install this file as mailx.rc or so, somewhere. [3f14b01]
803 - From now on S-nail will use simple version tags, as, e.g., `14.4.1',
804   i.e., no more `s-nail-14.4.1'. [a75437d, 183d59c] (Jürgen Daubert)
806   Also move UAGENT out of `version.h' [f7be5be]
808 Uh! v14.4 must have originated in a bad dream; good it's vanished.
810 v14.4, 2013-09-13
811 -----------------
813 Thanks to the entire vivid and virile S-nail(1) user community is
814 proper, especially Stephen Isard, Gavin Troy, Martin Neitzel.
815 Not to forget Ryan Kavanagh and Ayan George.
817 Note this time the changes are in reverse order, i.e., oldest first.
819 Topic Branches
820 ^^^^^^^^^^^^^^
822 15fbe09 ^bf9173f 'topic/varmac-unite'
823   Simplification and unification of variable and macro handling
824 40f6f58 ^15fbe09 'topic/cledit1'
825   Command line editor; new manual section `Line editor'
826 ad28a32 ^40f6f58 'topic/termsize'
827   Honour POSIX mailx(1) and respect $COLUMNS and $LINES on startup
828 dc3cd49 ^a446fd8 'topic/qf'
829   You don't wanna know
830 b8738f7 ^0651fd0 'topic/spam1'
831   Interaction with SpamAssassin; new manual section `Handling spam'
832 5419d6f ^b8738f7 'topic/make1'
833   Reworked build system; please read `INSTALL' and `conf.rc'
834 9ab4d6b ^5419d6f 'topic/list1'
835   Slightly tweaked message thread display, fix `:u :r' to mean it
837 ChangeLog
838 ^^^^^^^^^
840 - The default PAGER is now more(1).  (But read on.)
842 - The `echo' command is now compliant, and fully supports XSI.
844 - The `group' and `ungroup' command aliases have been removed, they are
845   `alias' and `unalias'.
847 - We now have the capability of line editing and history.
848   One may choose from not less than three different implementations:
849   a builtin editor as well as possible linkage against BSD editline(3)
850   and also a GNU readline(3) compatible layer.
851   Please read the new manual section `Line editor'.
853   Input is now compliant in that an interactive line may be continued
854   after escaping the newline character with a backslash.
855   [topic/cledit1]  (all of them)
857   The *prompt* variable may now contain shell escapes, just like the
858   `echo' command. [0938d8a]
859   As a special extension the new \? escape, when used within *prompt*,
860   will expand to the exit status of the last command. [41076d2]
862 - The POSIX standard environment variables $COLUMNS and $LINES are now
863   honoured upon startup. [topic/termsize]
865 - The `help' / `?' commands now support abbreviation, i.e.,
866   ``$ ? unc'' should now find `uncollapse'. [7b86195]
868 - The `~' abbreviation that has been introduced as an alias for `call'
869   is now a real command, not a magic shortcut. [9987289]
871 - The new variable *quote-as-attachment* can be used to additionally
872   embed the quoted message as a `message/rfc822' MIME attachment.
873   [topic/qf]
875 - The compose-mode command `~@' will now attach messages from the
876   current mailbox if given a filename of the style `#NUMBER'.
877   Please read the corresponding manual section `Tilde escapes', though.
879 - The `WANT_JUNK' and `WANT_SCORE', as well as Gunnar Ritters junk mail
880   management have been removed.
882   Instead S-nail(1) can now support interaction with SpamAssassin, but
883   sofar only via the spamc(1) / spamd(1) client / server pair of
884   programs that ships as part of SpamAssassin.  The new configuration
885   directive `WANT_SPAM' controls wether this feature is desired.
887   Please read the new manual section `Handling spam'.
888   [topic/spam1] (Martin Neitzel)
890   (S-nail(1) is now *definitely* floating-point free.)
892 - The configuration and make system have been overhauled / reorganized.
893   The configuration is now in `conf.rc', also contains directives like
894   `PREFIX' etc, and is always read in.  However, only those directives
895   which are not yet set (via environment or command line overwrites) are
896   incorporated into the set of configuration options.  Therefore
898     $ make WANT_IMAP=0
899     $ make WANT_IMAP=1
901   will now build S-nail(1) twice, because of the changed configuration.
903   Note that `WANT_GSSAPI' is now by default disabled, which shrunk
904   a freshly started s-nail image by more than 30 percent.
906   We're not finished yet in that there is no dependency graph etc.
907   Please do read `INSTALL' and `conf.rc'.
908   [topic/make1]
910 - Message selection has been slightly bugfixed in that `:u :r' really
911   means `:u' AND `:r'.  Compared to NetBSD Mail(1) it's still a shame.
913   Threaded message display has been slightly changed in that within
914   a thread identical Subject: lines are not repeated.  It may not be
915   perfect yet due to the general list / thread state. [topic/list1]
917 - If, upon startup, the environment variable `NAIL_NO_SYSTEM_RC' is set,
918   then the system wide initialization file isn't read, just as if the
919   `-n' option had been given. [1b31535]
921 - It is now possible to use CTRL-C during connection hangs.  (But in
922   general error recovery capabilities of the socket related
923   infrastructure is non-existent, practically speaking.) [45a9f36]
925 - *quote-fold* has been temporarily disabled, as it is not multibyte
926   safe.
928 No review for v14.4.  And today is Friday, the 13th.  Ouuuh!
930 v14.3.2, 2013-06-21
931 -------------------
933 I should *maybe* should have and want to give prominence to
934 Martin Neitzel for this, i maybe have misunderstood.
936 - Bugfix *synchronous* *pipe-** execution..
938   Well, unfortunately yet another newly introduced bug slept in
939   S-nail v14.3[.1] -- [a8d724b3, Add @ and @& shell command prefixes
940   for pipe-MIMETYPE, 2013-05-03] falsely changed the waiting state
941   for subprocesses, as has shown up by a HTML-only mail on the
942   Unicode list today.
943   'Seems i'm collecting one line fixes in this codebase; this needs
944   to change in the future.
946 v14.3.1, 2013-06-08
947 -------------------
949 I want to give prominence to Juergen Daubert (jue AT jue DOT li), who
950 reported that i've broken plain-old unfancy send mode in 14.3.
952 + Ok, i'll hope we're out of new errors for the v14.3 series with that.
954 - New variable: *batch-exit-on-error*.
955   Only works if the new -# command line option has been given, and will
956   check the "current" exit status whenever one operation completes
957   (S-nail returns to the command prompt).
958   If the exit status implies error (e.g., sending the last message
959   failed) then we exit forcefully with that error status.  (The normal
960   behaviour is that the status is reset when the command loop ticks.)
961   [4cddd55]
963 - While here again, i've added the new -# command line option.
964   This is the first step to implement a reliable batch mode;
965   unfortunately it still selects the users system mailbox on startup,
966   because we simply cannot go to "no" mailbox for quite some time -- at
967   some future time we will be able to go to some VOID thing, and then
968   this will end up as a rather efficient batch mode.
969   For now it sets *dot*, *emptystart*, *noheader* and *sendwait*, and
970   also implies the -~ command line option.  [7549569]
972     (
973       printf "m ${MBOX}\n~s subject1\nE-Mail Körper 1\n.\n" &&
974       printf "m ${MBOX}\n~s subject2\nEmail body 2\n.\n" &&
975       echo x
976     ) | MAILRC=/dev/null "${NAIL}" -n -#
978 - Also, -N set *header* instead of *noheader*.  [7b4a13f6]
979   (Juergen Daubert.)
981 - Plain old unfancy invocations like
983     $ s-nail user@host
984     $ echo bla|s-nail ./FILE1
986   had been broken (by [522cb3ec]).  [260e19d]
987   (Juergen Daubert.)
989 v14.3, 2013-06-03
990 -----------------
992 Thanks to Gavin Troy (gavtroy AT gmail DOT com) who inspired the @ and
993 @& pipe-command prefixes.
995 Random notes
996 ^^^^^^^^^^^^
998 - S-nail has been registered at Coverity Scan, and the third build
999   (after topic branches *coverity-444* and *coverity-444.2*) produced no
1000   more errors.  (<http://scan2.coverity.com/projects/444>.)
1001   (Then i used POP3 and IMAP and fixed some SIGSEGV. ;)  Still didn't
1002   look at S/MIME, Maildir, caches etc... o()
1004 - S-nail v14.3 doesn't produce any spurious linker warnings on
1005   OpenBSD 5.3; all (correct!) use cases of strcpy() and strcat() have
1006   been replaced.  [7bdf330, 2c8d7cb]
1008 - This is the first release with a (though very short) review -- i'm
1009   slowly getting comfortable with the code.  (But i'm too stupid to
1010   perform reviews on patches, 'always did reviews on C++/Perl/xy
1011   classes.  Aaah, how beautiful ... objects.)
1013 ChangeLog
1014 ^^^^^^^^^
1016 - It is now possible to "call" macros without using the `call' command
1017   by prefixing them with a tilde, as in
1019     ? define au {
1020       echo auau
1021     }
1022     ? ~au
1023     auau
1024   [93ea8acd]
1026 - Added the *pop3-bulk-load* option.
1027   Yes, there are mailing lists etc. which use plain text email, and,
1028   there, headers are often more data than the body, so it doesn't make
1029   sense to download the headers twice (unfortunately POP3 doesn't
1030   support a BODY command; if only it would support a RETRDELE command..)
1031   [978e13a7]
1033   And yep, from this changeset on i personally use S-nail even over the
1034   network, no longer my stale and incomplete S-Postman.  And i can tell
1035   you, this damn thing is so silent, i always set *verbose* not to go
1036   grazy ... but .. i hate to say it .. the healing will take time.
1038 - POP3 will now try to use APOP authentication automatically; thus the
1039   *use-apop* stuff has been replaced by *pop3-no-apop* options (just in
1040   case there are POP3 servers which advertise they support APOP but in
1041   fact fail to do so; anyone?)  [6c3c5575]
1043 - Some IMAP segmentation violations have been fixed:
1045     ? fi imaps://user1@localhost
1046     Password:Interrupt            <- CNTRL-C
1047     ? set imap-auth=cram-md5      <- hey, 'forgot to set correct auth
1048     ? fi imaps://user1@localhost
1049     IMAP write error: error:140D00CF:SSL routines:SSL_write:protocol is shutdown
1050     Segmentation fault
1052   And also, when *folder* was set to an IMAP account but hasn't been
1053   opened yet, and no IMAP account ever has been opened, a string
1054   comparison against a NULL pointer yet caused a SIGSEGV, too.
1055   [417c01f, 413c23d9]
1057 - `set folder=' now tolerates `%:' and expands PROTOs stuff etc.:
1059     ? short xp %:imaps://user1@localhost
1060     ? set folder=xp
1062   Pure convenience so that it doesn't need to be typed twice (still no
1063   completion in sight...).  Note that setting *folder* to a POP3 box
1064   will now be actively rejected.  [b12b17f5]
1066   NOTE: while implementing this i've detected another dead-end
1067   miscondition in S-nail -- you really should ensure that your target
1068   folder/box is connected before you leave your current POP3/network
1069   based folder, if there is data to be moved to the target (i.e.,
1070   mbox).  This problem will persist for a long time due to the way the
1071   entire codebase functions; i hope i can find a short/mid-term
1072   solution, but the real healing will take years.  The mentioned
1073   solution would at least make S-nail interruptable, currently we get
1074   stuck and interrupts are blocked...
1076 - If you're using S-nail on Mac OS X and have seen some segmentation
1077   faults when expanding shell stuff then you may be pleased to hear that
1078   S-nail now works around an Apple bug.  [63273772]
1080 - The builtin mime.types have been corrected and a lot of new ones have
1081   been added.  New data from
1082   <http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/\
1083   org/apache/tika/mime/tika-mimetypes.xml>, thanks!  [8072fcb6]
1085 - BEWARE: handling of command line arguments has changed a bit!
1087   1. The -D, -d, -E, -i, -N and -v command line options are now
1088   implemented by means of setting the respective option, as via -S.
1089   (This means that from now on resource files can only *temporarily*
1090   overwrite command line arguments.)
1092   2. The -I and -T command line arguments have been dropped.
1093   It seems Gunnar Ritter stopped developing nail/Heirloom mailx once he
1094   started implementing Newsreader functionality.  It'll take a long time
1095   until we get there, so for now drop all the Newsreader stuff.
1097   3. Handling of -r has been changed.  E.g.:
1099     s-nail -A test -Snoeditalong -r 'La mort est <fem@me>' -d
1100     ? set from=bummer@m1.com
1101     ? m t1
1102     Subject: s1
1103     .
1104     Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t1"
1105     ? set from=bummer@m2.com
1106     ? m t2
1107     Subject: s2
1108     Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t2"
1110   ...
1112     s-nail -A test -Snoeditalong -r '' -d
1113     ? set from=bummer@m1.com
1114     ? m t1
1115     Subject: s1
1116     .
1117     Sendmail arguments: "sendmail" "-i" "-r" "bummer@m1.com" "t1"
1118     ? set from=bummer@m2.com
1119     ? m t2
1120     Subject: s2
1121     Sendmail arguments: "sendmail" "-i" "-r" "bummer@m2.com" "t2"
1123   [*main-fun-cleanup* topic branch]
1125 - *smime-sign-include-certs-** stuff works again, oops..  [9a8597c6]
1127 - A whole lot of smallest and small fixes due to registration at
1128   Coverity Scan, as project 444.  Error handling in S-nail is ridiculous.
1129   [*coverity-444* and *coverity-444.2* topic branches.  The sheer number
1130   of fixes was the reason to sit down and go for unplanned S-nail v14.3]
1132 - *idna-strict-checks* has been dropped.  It's silly to have in a MUA,
1133   especially given that GNU LibIDN doesn't ship with a lot of rules.
1134   We were able to drop quite some code (and a use-after-free, too :().
1135   [c81fd41d]
1137 - The ~p tilde command displays attachments more verbose.
1138   Until the big big MIME and send layer rewrite :) this is intermediate
1139   since until then we do not really know neither MIME type nor charset
1140   of an attachment at the time this is displayed (for sure).  Yet
1141   i think it's nicer to show what we have than keep it the way it was.
1142   [60e70463]
1144 - @ and @& shell command prefixes have been added for the pipe-MIMETYPE
1145   mechanism.  The former suppresses filters if multiple messages are
1146   displayed at once, the latter adds asynchronous program execution on
1147   top of that.  E.g., to display PDF documents, but only if you
1148   *explicitly* address the message *alone and by itself*, and without
1149   blocking S-nail and the $PAGER, do:
1151     set pipe-application/pdf="@&cat >"${TMPDIR}"/s-nail${$}.pdf;\
1152       mupdf "${TMPDIR}"/s-nail${$}.pdf; rm "${TMPDIR}"/s-nail${$}.pdf"
1154   (Inspired by Gavin Troy.)  [a8d724b3]
1156   Note: most of that had been posted to nail-devel@ already, but it was
1157   tweaked ([251b636]) so that you now *really* have to say `p MSGNO' to
1158   get there.
1160 - The NETLESS CONFIG= has been removed; it is almost identical to
1161   MINIMAL now (i.e., without WANT_JUNK and WANT_SCORE).
1163 - WANT_JUNK and WANT_SCORE have been disabled by default.
1164   They don't seem to be too useful; i hope i can implement
1165   a SpamAssassin hook for (downloaded) mail messages for v14.4.
1166   If so, expect these two "modules" to become removed completely.
1168 v14.2.2, 2013-05-01
1169 -------------------
1171 Another unplanned (minor) bugfix release after Gavin Troy (gavtroy AT
1172 gmail DOT com) pointed out that MIME CTE decoding was broken, who
1173 i therefore want to give a lot of prominence right here.
1175 - Fix MIME content decoding which has been broken by [01c0e135].
1176   [882caedd]
1177   (Gavin Troy.)
1179 v14.2.1, 2013-04-30
1180 -------------------
1182 An unplanned (minor) bugfix release after i've found two bugs today and
1183 heard from Jérémie Courrèges-Anglas (jca+nail AT wxcvbn DOT org) that
1184 there exists a S-nail OpenBSD package.
1186 I want to give prominence to the following people that helped to
1187 improve S-nail(1) during this development cycle, in order of
1188 appearance: Dirk Peters (peters AT schwertfisch DOT de).
1190 Thank you very much, and best from Germany!
1192 - Some warnings of newer clang(1) versions were silenced, including yet
1193   another alloca(3) problem (see *memtracer* topic branch in v14.0
1194   series).  [6f846efe]
1196 - Tweaking the MIME boundary detection left a little hole that could
1197   cause boundaries not to be detected, as has been shown by a Microsoft
1198   Word generated mail on the ICU list.  [11e5fb5b]
1200 - A format string could overflow bounds if unrealistic
1201   (18446744073709551615) line numbers or message sizes would have been
1202   produced.  [faa65c40]
1204 - An algorithmic error could cause overlong lines which wrapped around
1205   to the next display line.  [ade52660] 
1206   (Dirk Peters.)
1208 v14.2, 2013-03-15 [v14.1, 2013-03-12]
1209 -------------------------------------
1211 I want to give prominence to the following people that helped to
1212 improve S-nail(1) during this development cycle, in order of
1213 appearance: Martin Neitzel, Christos Zoulas, Stephen Isard, jgw@txo.org
1214 and Gavin Troy.
1216 Thank you very much, and best from Germany!
1218 + v14.2 differs from v14.1 only by one commit, one that fixes
1219   (mime_fromhdr(): partial rewrite using n_iconv_str(), 2013-03-12),
1220   which i hastily implemented just hours before the release of v14.1,
1221   and simply shouldn't have made it (into there).
1222   The v14.1 tarball has been removed from the server.
1224 - A fix for the quoted-printable codec: "message truncation" occurred
1225   when a mail maliciously used a soft linebreak to escape the linebreak
1226   of a completely empty line.
1227   (That resulted in 0 written and 0 leftover bytes, a condition that was
1228   declared erroneous back in november 2012 when i started handling I/O
1229   errors.)
1231 - The "folders" command will work again when given an argument.
1232   A fault of mine introduced in (cmd1.c: expand() may fail, 2012-10-23).
1234 - The Base64 codec has been touched again, and we are finally capable to
1235   perform sequential decoding; this was targeted for the MIME/send layer
1236   rewrite, but it actually was possible today.
1237   The result as seen in ps(1), running on the Base64 encoded HTML5
1238   standard (4622545 bytes HTML, with a NUL appended to force Base64
1239   encoding, resulting in a 6244793 bytes email):
1241    7420 s006  S+    2:22pm 0:10.65 plain-nail -f HTML5
1242    1440 s006  S+    2:23pm 0:00.36 ./s-nail -f HTML5
1244   (So the only thing that is left for a good throughput is sequential
1245   decoding of quoted-printable encoded parts that maliciously use soft
1246   linebreaks to convert an entire part to a single line.  And i've seen
1247   that from Apple Mail.)
1249 - New option: *mime-allow-text-controls* (rather long manual entry).
1251 - *smtp-auth-password-user@host* and *smtp-auth-user-user@host* will
1252   finally work!
1253   (Reported by jgw@txo.org in November 2011, fixed by Gavin Troy in
1254   January 2012.)
1256 - Most *headline* formats now do support the '-' left-alignment flag.
1257   Note that you most likely have to change your *headline* accordingly.
1258   (The still missing %n format is one reason why there will be v14.2.)
1260 - *datefield* and *datefield-markout-older* can now be set to
1261   strftime(3) format strings (except %n).
1262   (From Stephen Isard's wishlist.)
1264 - A possible SEGV has been found and also fixed by Stephen Isard.
1265   (The "legendary" cross-world stereo fix!)
1267 - Wow!  S-nail will finally compile on GNU based Linux systems like
1268   Slackware 14 etc.  (Found while hunting bug reported by
1269   Stephen Isard.)
1271 - New option: *datefield-markout-older* can be used to choose
1272   a different date display for mails that are older than six months,
1273   in equal spirit to what POSIX describes for the -l option of the ls(1)
1274   command (Stephen Isard).
1276 - (Exotic) Years are (would) now (be) interpreted correctly according to
1277   RFC 5322, 4.3.
1279 - CRAM-MD5 usage has been fixed.
1281 - *folder* updates are now tracked when set, and we will show the
1282   realpath(3) name of it, showing PREFIX..SUFFIX if that wouldn't fit on
1283   the display.
1284   Tracking updates made it also possible to perform other more expensive
1285   tasks when setting *folder*, so that it is now possible to do
1286   something like:
1288     :set folder=$HOME
1289     :set folder=~
1291   et cetera (both ideas by Christos Zoulas).
1293 - Bugfix for the ~@ tilde-escape in non-interactive mode.
1294   (readtty(): quick shot: work in pipelines (on non-TTY).., 2013-01-25)
1295   introduced the possibility to "read data from the terminal" (STDIN
1296   that is) in non-interactive mode.
1297   The manual documents that attachment input must be terminated with an
1298   empty line, but if that had been omitted, as in the example below, we
1299   would have yet entered an endless loop.
1301      $ cat <<_EOT | /s-nail -~ -s boom ./OUT
1302     ~@
1303     test.c
1304     charset
1305     _EOT
1307 - Alias expansion will now be performed for members of Reply-To: fields
1308   (Martin Neitzel).
1310 - Decoding quoted-printable will now be more relaxed.
1311   (Even though the standard says that users should be given a hint when
1312   input is not absolutely clean; a possible warning will be added later,
1313   when we have an error message ring.)
1315 - New option: *mimetypes-load-control* can be used to control which of
1316   the mime.types resources will be loaded.
1318 - The builtin default mime.types have been extended a bit.
1320 v14.0, 2013-02-10
1321 -----------------
1323 I want to give prominence to the following people that helped to
1324 improve S-nail(1) during this development cycle, in order of
1325 appearance: John Dodson, Gianluca Ramunno, and Anon Ymous from the
1326 NetBSD project.
1328 Random notes
1329 ^^^^^^^^^^^^
1331 - Encoding defaults to *quoted-printable* not *8bit*.
1332   This has no technical background except that i think it's the better
1333   default.
1335 - Small progress for the "getting stuck due to the current folder
1336   becomes inaccessible due to whatever reasons"  problem.
1337   (schdir(): realpath() local files before leaving CWD.., 2013-01-08)
1339 - The names of temporary files have changed.  Whereas not all uses of
1340   temporary files already use really meaningful names, it has yet become
1341   possible to use the pattern "*mail-*"; or, to be compatible with
1342   NetBSD Mail(1) in one go, "*mail*".  (E.g., in my ~/.vimrc you'd read:
1343     :au   BufRead,BufNewFile *mutt*,*mail* setl fenc= | setf mail
1344   [the *mutt* is a leftover from times when i've used MUAs that suck].)
1346 ChangeLog
1347 ^^^^^^^^^
1349 - The Quoted-Printable MIME handling has been rewritten completely.
1350   We now correctly encode files with the MS-DOS newline sequence (CRLF).
1351   (Part of the *mime-cte* topic branch.)
1353   S-nail(1) continues to be able to handle text messages and text
1354   attachments without a trailing newline, but because these
1355   Content-Transfer-Encoding related things are now handled by the C-T-E
1356   layer instead of by sendout.c a text message body that comes in as
1357   part of a complete message via the -t command line option will loose
1358   the missing final newline (i.e., it'll gain one).
1359   This problem does *not* occur when *only* the message body comes in
1360   via STDIN, as in 'cat FILE | s-nail', but *only* when the -t option is
1361   used.
1362   (sendout.c: does no(t/ longer) know about CTE internals!, 2013-02-09)
1364 - Filename arguments for -a are now processed *after* all the resource
1365   files have been loaded etc., so that the usual "folder" specifics can
1366   be used (provided that proper care for shell quoting was taken).
1367   ((main(): delay -a processing.., 2013-01-10), as a part of the
1368   *mainaflags* topic branch.)
1370 - (d38c5bd, When the write command asks.., 2004-11-23) added support
1371   for pipes when saving attachments during a "write" command.
1372   It however used the wrong SIGPIPE signal handler; e.g.:
1374     Enter filename for part 2 (application/x-gzip): |exit
1375     Segmentation fault
1377   Of course, it still performs a jump and that most likely leaves memory
1378   chunks behind, thus causing some memory leaks.  This will be
1379   a long-term problem (you may want to read [mime.c:fwrite_td(): TODO
1380   notes on unfixable leaks, 2013-01-14] for more).
1381   (send.c:sendpart(): fix longjmp() SIGSEGV.., 2013-01-29)
1383 - Fixed a name quoting regression that i've introduced in
1384   (Rewrite *extract().., 2012-10-20), that would have caused
1385   "x \"y\" z" to become "x"y" z" instead of "x "y" z".
1386   (S-nail still does not really have RFC compliant parsers, just as
1387   NetBSD Mail(1) has, i.e., there are structured and unstructured fields
1388   etc...  I hope i can provide them in v15.0.)
1389   (names.c:yankname(): fix quote regression.., 2013-01-29)
1391 - The IDNA conversion now assumes domain names are specified in
1392   *ttycharset*, rather than in the LC_CTYPE locale charset.
1393   I.e., it integrates into the usual character set specifications.
1394   (IDNA: honour *ttycharset* for domain names, 2013-01-18)
1396 - The new *editalong* variable will automatically spawn an editor when
1397   composing a mail in interactive mode, just as if `~e' was given.
1398   (Add new *editalong* variable, 2012-01-07)
1400 - The manual has been converted to mdoc.
1401   (The manual has been converted to mdoc, 2012-12-28)
1403 - The ~@ tilde escape, when given filename arguments, will treat the
1404   arguments as a comma-separated instead of a whitespace-separated list.
1405   (collect: change separator of ~@ tilde escape.., 2012-12-28)
1407   The interactive mode of ~@ has also been changed, rather massively.
1408   Please do reread what the manual says.
1409   ((collect: support multiple attachment charsets.., 2013-01-23), as
1410   part of the *attach* topic branch.)
1412 - Thanks to Gianluca Ramunno (ramunno DOT gianluca AT gmail DOT com)
1413   S-Nail will no longer try to issue a STARTTLS command when it is about
1414   to establish a SMTPS connection, a task that logically fails since the
1415   connection is already secured.
1416   (Interestingly the nail codebase performs the necessary test for IMAP
1417   and POP3 already.)
1418   While here the undocumented nail v11.0 *smtp-use-tls* legacy option
1419   has been removed.
1420   (Fix SMPTS with a set *smtp-use-starttls*.., 2012-12-22)
1422 - The RFC 4155 compliant MBOX quoting is now exclusively used, the
1423   shitty *posix-mbox* variable has been removed again.
1424   (Shitty because i've implemented RFC 4155 compliant MBOX quoting and
1425   tested it, then added *posix-mbox* for those who liked the old
1426   behaviour and did not re-test -- the final code path was buggy.)
1428   In mails newly created and saved by S-nail(1) no From_ quoting at all
1429   will be used no more, but instead the rewritten MIME file classifier
1430   will detect unquoted From_ lines and enforce quoted-printable encoding.
1431   (This is an approach that is S/MIME compatible all through the way as
1432   the file data is not modified at all, but only encoded, so that the
1433   data checksum is not changed.)
1435   In yet existent mails that S-nail copies or moves around without
1436   reclassification an RFC 4155 compliant From_ line detector will apply
1437   MBOXO quoting (prepend a single '>') as necessary.
1438   Different to the old MBOXRD behaviour S-nail will neither quote yet
1439   quoted From_ lines ('>>From xy' -> '>>>From xy') nor will it unquote
1440   one quote level when reading etc. mails ('>> From xy' -> '>From xy').
1441   As a result the code could be simplified.
1443   This changeset also incorporates a fix for NetBSD PR bin/47453, as
1444   reported by Martin Brandenburg.  I.e., some mailers, noticeably
1445   UW-imap (with MBX format only?), use non-compliant From_ lines with
1446   RFC 822 date specifications.  Be aware of 'em.
1447   (RFC 4155 MBOX, and drop *posix-mbox* and foldergets().., 2013-01-06)
1449 - *rfc822-show-all* has been removed.
1450   It didn't work properly for more complex MIME structures, like
1451   message/rfc822 messages with attachments etc., just as i've seen today
1452   on the file(1) mailing list.
1453   So, instead of hacking it now i've dropped it and will come back with
1454   a better solution when the MIME and send layers have been overhauled.
1455   I.e., the real intent was to be able to specify that an embedded
1456   message/rfc822 is treated as a *unity*, and that's the goal.
1457   (Drop *rfc822-show-all*, 2013-01-23)
1458   [The manual will be adjusted in a different commit.]
1460 - *rfc822-no-body-from_* has been renamed to *rfc822-body-from_*.
1461   It thus must be set explicitly.
1462   On the other hand it now catches all cases...
1463   (*rfc822-no-body-from_* -> *rfc822-body-from_*, 2013-01-23)
1464   [The manual will be adjusted in a different commit.]
1466 - The new *charset-7bit* (defaults to US-ASCII) and *charset-8bit*
1467   (defaults to UTF-8) have been introduced.
1468   These are used if seven bit clean data is to be sent, and no
1469   *sendcharsets* are set or the convertion of all of them failed,
1470   respectively:
1472   - There is no functional change unless there is iconv(3) support.
1473   - There is no functional change unless you set them.
1474   (Introduce *charset-8bit* and *charset-7bit* variables.., 2013-01-18)
1475   [The manual will be adjusted in a different commit.]
1477   In addition the new *sendcharsets-else-ttycharset* variable can now
1478   be used to automatically use *ttycharset* as a *sendcharset(s)*,
1479   regardless of the new *charset-8bit* variable.
1480   (Add *sendcharsets-else-ttycharset* variable, 2013-01-24)
1481   [The manual will be adjusted in a different commit.]
1483   NOTE: before we apply charset conversion we now perform a string
1484   comparison to see wether character sets are identical.  If the strings
1485   match (case-insensitively), then *no* conversion is performed.
1486   This means that code like
1488     $ printf "LATIN1: \0376" | s-nail -Ssendcharsets= -s boom ./out.txt
1490   *succeeds* in an UTF-8 environment now, whereas older versions would
1491   fail with an "illegal byte sequence" error (unless the iconv(3)
1492   library of the system would not perform any conversion that seems
1493   superflous, of course).
1495   I thought about making this optional, but, in fact, if this would be
1496   done in an environment without iconv(3) support then the result would
1497   be equally corrupt.  And the way it is now we save the expensive and
1498   superflous conversions.  (See TODO for more.)
1500   Please *do* reread the manual section "Character sets".
1501   +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1503 - An attempt was made to improve MIME Content-XY: detection.
1504   It should be more RFC compliant, and just overall better :);
1505   a simple one-pass classifier cannot match libmagic(3), of course.
1507   This changeset removes support of the long obsoleted (4fee1ef,
1508   2005-01-06) *charset* variable, as well as for the
1509   *maximum-unencoded-line-length* variable that has been introduced in
1510   (48a652bd, 2005-07-26).
1512   For S-nail v14.0 it'll be no longer necessary to do
1514     $ tr -d '\015' < input | s-nail ...
1516   to transport files which use the $-DOS (terminal) newline (sequence).
1517   We still depend upon *sendcharsets* for a while, though.
1518   (Rewrite file-content classification.., 2013-01-02)
1520 - The new *mime-counter-evidence* variable can be used to force
1521   a classification of non-text MIME parts (attachments) by their
1522   filename, i.e., a "reverse-classification" just as would be performed
1523   if S-nail(1) would itself *send* the file(name).  This can help
1524   against some stupid MUAs (Apple Mail?) that send .diff etc. files as
1525   `application/octet-stream' parts etc.
1527   At a later time this may become a valued option, causing a temporary
1528   save of unnamed attachments followed by a MIME classification of the
1529   file contents, followed by forced treatment as plain text if it seems
1530   to be human readable.  But not yet.  Just to warn you.
1531   (Add *mime-counter-evidence* variable.., 2012-12-29)
1533 - The special "pipe-" command "@" can be used to force treatment of
1534   a MIME message part as plain text (e.g.,
1535   'set pipe-application/pgp-signature=@' will henceforth print those
1536   signatures inline and as plain text).
1537   (Introduce the special "@" "pipe-" command, 2012-12-27)
1539 - The MIME types (as from mime.types(5)) will now be cached.  Before
1540   all possible sources would have been opened, read and parsed for each
1541   and every message part that required detection of the MIME
1542   Content-Type:.
1543   The new "mimetypes" command can be used to show or clear that cache.
1544   (Add mime.types(5) cache.., 2012-12-27)
1546 - A small set of MIME types (template: ./mime.types) will now become
1547   compiled into S-nail(1), and be used as a fallback if there are no
1548   ~/.mime.types and/or no /etc/mime.types, or those didn't contain
1549   a matching type.  E.g., NetBSD 6 doesn't ship a default database.
1550   Also, file extensions will be matched case-insensitively (case of
1551   attribute values is not specified afaik?).
1552   (Introduce compiled-in mime.types(5).., 2012-12-21)
1554 - The undocumented *charset7* variable was removed.
1556 - The "Message X:" display leader has been changed and will henceforth
1557   be matchable via "^[-- Message \d+ -- \d+ lines, \d+ bytes --]:$".
1558   These lines can no longer be suppressed by setting the *quiet*
1559   option (which was yet possible for print and top, though undocumented).
1560   (Change "Message X:" display message.., 2012-12-20)
1562 - When displaying multipart messages the "Part X:" introductional string
1563   has been changed; if the Content-type: header is not *retain*ed, then
1564   this string will include the part's type and size.  Ditto for
1565   Content-disposition: and a mentioned attachment filename.
1566   This is a first step only, for the final version the MIME and send
1567   layers will have to be adjusted.  But the string will be matchable via
1568   a "^[-- #.* --]$" regular expression from now on.
1569   (Change "Part X:" display message.., 2012-12-20)
1571 - MIME boundaries in multipart messages are now handled better in that
1572   no boundary string should get through to the display.
1573  (Tweak MIME boundary detection.., 2012-12-20)
1575 - A couple of long standing, even pre-Heirloom mailx(1) memory leaks and
1576   segmentation violations, most of them related to configurations
1577   without alloca(3) support, as well as one leak that i have introduced
1578   when i implemented RFC 4155 MBOX handling, have been fixed.
1579   But S-nail should now survive non-alloca(3) configurations.
1580   (*memtracer* topic branch.)
1582 - The Base64 MIME handling has been rewritten completely.
1583   This was an urgent topic, because the old implementation (a) read in
1584   all lines of a base64 encoded text part, repeatedly resizing a string
1585   storage and repeatedly decoding that string until all the lines have
1586   been swallowed (i.e., or by accident the last decoded byte was
1587   a newline character, and that in turn may of course have fucked up for
1588   multi-octet encodings, dependent on the actual byte-order), (b) used
1589   function local static data to keep state in between multiple
1590   invocations, which messed up multi-byte/-octet encodings like this
1592     �5��ɽ���Aɥ����́��٥��������[lots of data follows]
1594   and (c) did not perform any error checking at all.
1595   The new one does not run into the problem that (a) tried to circumvent
1596   since leftover decoded data (as opposed to leftover *encoded* data) is
1597   transported along the call-chain for later use.  It adds a minimal set
1598   of error handling ('may now see "[Invalid Base64 encoding ignored]"),
1599   with more to become possible in later S-nail versions when the entire
1600   layers are reworked.  (Until then DOS newline sequences [CRLF]
1601   embedded into base64 will no longer be decoded to Unix LF newlines.)
1602   Base64 encoded lines will now be 76 characters long, as stated (as
1603   a maximum value) in RFC 2045, not 72 as before.
1605   The Base64 code core has been shamelessly stolen from NetBSD's
1606   Mail(1), and i guess it was the second time that this happened :=).
1607   (*base64-rewrite* topic branch; and reworked later on the *mime-cte*
1608   topic branch.)
1610 - The string allocation strategy has been tweaked some more to, i think,
1611   a final version (regarding algorithm).
1612   In normal non-interactive send mode it should now no longer need any
1613   dynamic memory at all (unless some dozen recipients are specified).
1614   (Several other places still use normal dynamic memory, of course.)
1615   (*dope-stringdope-again* topic branch.)
1617 - Support for NSS (Network Security Services) has been removed.
1618   I've never worked with it and are, regarding the complexity of
1619   network security, not willing to spend any time on it.
1620   SSL is installed on all systems i'm using and/or testing on by
1621   default, and so i've choosen to go this way.
1622   (It may be that sometime in the future S-nail will add support for
1623   libcurl(3) connectivity, and then it may happen that not only NSS
1624   support is reintroduced again, but also GNU TLS.  All of that applies
1625   to network connectivity only, however, not to S/MIME afaik.)
1626   (*drop-nss-support* topic branch.)
1628 - I finally got a glue and understood that Sourceforge does (a) not
1629   support symbolic links and (b) doesn't like dots as regular parts of
1630   filenames.  This means that all this time the promised s-nail.tar.gz
1631   symbolic link did not work, and that s-nailv13.3.tar.gz wasn't
1632   accessible either (via the web interface).
1633   In the future S-nail(1) will not provide any more symbolic links (the
1634   Sourceforge website offers a "download latest" thing which seems to
1635   work), and use underscores in filenames -- s-nailv13.3.tar.gz has been
1636   renamed to s-nailv13_3.tar.gz.  The tags continue to use dot notation.
1637   Thanks.
1639 - The *heirloom-plus* support branch has been removed.
1640   The code bases diverged a lot and even more to come.
1641   It doesn't make sense to put any effort in that.
1643 v13.3, 2012-11-11
1644 -----------------
1646 - Configuration on UnixWare 7.1.4 will succeed (shell issue fixed).
1648 - Even on DragonFly BSD the IMAP GSSAPI is now found
1649   (in /usr/pkg/include/krb5/gssapi/gssapi.h).
1651 - Support for pkgsrc(7) systems and automatic integration of
1652   C_INCLUDE_PATH and LD_LIBRARY_PATH path configurations.
1653   Please see INSTALL.
1655 - Fixes a mortally embarassing regression that the current maintainer
1656   introduced before i really knew what i was doing, in (If *record* is
1657   set, avoid writing dead content twice.., 2012-09-14).
1658   It hit users that send through a MTA and have *record* set; in this
1659   combination data would not have reached the MTA.
1660   Interested parties may read the comment in savedeadletter() (part of
1661   the changeset) or the (Fix MTA/*record* descriptor clash..,
1662   2012-11-10) commit log.
1664   Deepest apologies to tortured users from the current maintainer!
1666 - RFC 4155 compatible MBOX file handling has been introduced, and so
1667   S-nail is now on par with (at least) NetBSD Mail in respect to this.
1668   It can be turned off with the new *posix-mbox* variable, which you may
1669   need to use since not all MUAs are capable to dig those MBOX files.
1670   E.g., less cutting-edge (.-) MUAs fail for this:
1672    |From - Thu May 10 20:40:54 2012
1673    |Date: Wed, 07 Nov 2012 11:48:30 +0100
1674    |To: super@duper.com
1675    |Subject: super1
1676    |
1677    |From me.
1678    |
1679    |From - Thu May 10 20:40:54 2012
1680    |Date: Wed, 07 Nov 2012 11:48:30 +0100
1681    |To: super@duper.com
1682    |Subject: super2
1683    |
1684    |>From - Thu May 10 20:40:54 2012
1685    |From - Thu May 10 20:40:54 2012
1687   I'm not completely happy since S-nail *does* still quote those lines,
1688   how rare they may be -- it *does* modify message content.  mutt(1)
1689   implements something more clever and that is quoted-printable encoding
1690   of the "F" from "From", when seen at the beginning of a line.
1691   This, when applied to just *any* "^From", will be a non-modifying and
1692   all-compatible solution.
1694 - SEND_MBOX handling has been changed to discard any Content-Length: and
1695   Lines: headers when it rewrites a message by default.
1696   I know that mutt(1) generates them (why, after
1697   http://www.jwz.org/doc/content-length.html?).
1698   Anyway, S-nail does neither use nor manage them, so that any
1699   modification renders those fields invalid, and then it seems best to
1700   discard them anyway.
1701   You may turn the new behaviour off with *keep-content-length*.
1703 v13.2, 2012-11-03
1704 -----------------
1706 The problem was that i really wanted to release on a 25th.
1707 But i have been able to improve S-nail(1) some more, so that this is
1708 possibly the first real release of it.  So i'll add only things that
1709 have changed since v13 -- please see below for the complete picture.
1711 - A new CONFIG=CUSTOM make directive was added, and the new user.conf
1712   variables WANT_SCORE and WANT_DOCSTRINGS have been added.  It is
1713   possible to create a floating-point free S-nail(1) now.
1714   Please see INSTALL.
1716 - If a feature is disabled not even functions stubs should remain now.
1718 - Many places which will work only with local filenames do now actually
1719   check that the target is a local filename.
1721 - Space-separated lists should work again, at a few places at least.
1723 - Tilde commands will be possible, even with -r.
1725 - The *sendmail-progname* has been added after NetBSD 6 dropped the
1726   send-mail entry in mailer.conf(5), which broke S-nail(1).  Now users
1727   have an option.
1729 - When editing messages via ~e or ~v file and pipe addressees will no
1730   longer be lost.
1732 - If recipients occur multiple times spread over lists, i.e., To:, Cc:,
1733   Bcc:, then only one occurrence remains, and in the "highest-order"
1734   list.
1736 - The "list" command prints the list alphabetically sorted (somewhat).
1738 - The "help" and "?" commands take an optional argument that shows
1739   a synopsis string for the given command (unless WANT_DOCSTRINGS was
1740   false).
1742 - String allocations are now more efficient.  The situation can still be
1743   improved.  However, for the first time Berkeley Mail(1) integrates
1744   harmonically into the system allocator, which may madvise(2) unused
1745   memory to the operating system as necessary and/or possible!
1747 v13.1, 2012-10-25
1748 -----------------
1750 Well, a version number 13 is anyway an ugly thing...
1752   commit 4f534bb33b7c911272cc66a0e3a9e47b73ad8deb
1753   Date:   2012-10-25 20:46:07 +0200
1755       FIX MIME quoted-printable encoding (char cast)..
1756       
1757       (;-{
1758       Auauauauau!!
1759       
1760       Well, one of the things that have already been started in v13 is
1761       the turn from using "int" when working with 8-bit characters to
1762       "unsigned char" (and as long as we do not support wide
1763       characters).
1764       
1765       Unfortunately one very important piece of code, that is handling
1766       encoding to quoted-printable, still used integer instead of
1767       unsigned char, which caused an automatic extension cast to take
1768       place, and that resulted in a messed up output.
1769       Sorry!
1771 v13, 2012-10-25
1772 ---------------
1774 I want to give prominence to the following people that helped to improve
1775 S-nail(1) during this development cycle, in order of appearance: Martin
1776 Neitzel, Ezequiel Garzón, Björn Persson, Paul Vojta, and, especially,
1777 John Dodson for warm words from beautiful Australia!  Many thanks also
1778 to Christos Zoulas.
1780 After i've officially forked nail(1) aka Heirloom mailx(1) as S-nail(1)
1781 on 2012-09-18 i have been able to work five weeks almost fulltime on
1782 S-nail(1) development.  The first three weeks can be characterized as
1783 hectic fireworks here and there, but then it got better and i was able
1784 to work more or less topic-centric.  In the meanwhile S-nail(1) is more
1785 than 230 commits away from the Heirloom base--and drifting further apart.
1787 S-nail(1) v13 is the first release of S-nail(1), but it was forked from
1788 Heirloom mailx(1) 12.5 7/5/10 that arose from Berkeley Mail 8. unless
1789 i'm mistaken.  What characterizes S-nail(1) v13?
1791 - The build system has been reworked almost completely.
1792   It is possible to fine-tune which features should be present in the
1793   binary and which don't.  The name of the binary can be chosen, and
1794   that choice is reflected all through the manual and the template
1795   resource file.  The manual is always complete and thus may document
1796   features that are not supported by the actual binary, though.
1797   Please see INSTALL for more.
1799 - Compiler warnings can now be used.  Please see the example WARN= flags
1800   in the Makefile, but '-Wall -Wextra -pedantic' should be silent though
1801   certainly insufficient to reflect the complex work of modern compilers.
1803 - The following recipient address list combines some of the major
1804   improvements that have been made:
1806     <addr1@cdröm.de>  (bier) , ./file1,
1807     Steffen Smöregäs (Humbabä) <sauer@bäüer.de> (Hummpäa)    ,
1808          sabberlot@träbbel.de  ,  (bier2) <a2@bür2.de> ,
1809        a3@b3.de (bier3)  , <a4@b4.de> (bier4, und \"bier5\")  ,
1810     |cat > pipe1 ,   (bier 6) <a6@bür6.de>  ,   ./file2        ,
1811     (co\$mm1) abc1@düf.de (cö,bmm,2)   (co\"m\"m.3) ,
1812     co\$bmm1 \"c,ömm2\" co\"m\"m.3 <abc2@däf2.de>  ,  |cat > pipe2 ,
1813     moppel@höppel.org
1815   That, on a single line, may be given to ":m" or (quoted) on the
1816   command line, or to "~c" or whatever, and it will work as expected
1817   (well, everything else would be a bug..) and result in the following
1818   sendmail(1) invocation:
1820   SENDMAIL.SH
1821   <-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>
1822   >>>>>>>>>>>>>>>>>
1823   Date: Thu, 25 Oct 2012 17:12:15 +0200
1824   To:
1825   Cc: Steffen =?utf-8?Q?Sm=C3=B6reg=C3=A4s?=
1826     =?utf-8?Q?_(Humbab=C3=A4)?= <sauer@xn--ber-qla4j.de> (=?utf-8?Q?Hummp=C3=A4a?=),
1827     sabberlot@xn--trbbel-cua.de, moppel@xn--hppel-jua.org,
1828     <addr1@xn--cdrm-7qa.de> (bier),
1829     co$bmm1 =?utf-8?Q?"c,=C3=B6mm2"?= co"m"m.3 <abc2@xn--df2-qla.de>,
1830     (co$mm1) abc1@xn--df-xka.de (=?utf-8?Q?c=C3=B6,bmm,2?=) (co"m"m.3),
1831     (bier 6) <a6@xn--br6-hoa.de>, <a4@b4.de> (bier4, und "bier5"),
1832     a3@b3.de (bier3), (bier2) <a2@xn--br2-hoa.de>
1833   Subject: Re: SubjectTest
1834   MIME-Version: 1.0
1835   Content-Type: text/plain; charset=us-ascii
1836   Content-Transfer-Encoding: 7bit
1838   body
1839   <<<<<<<<<<<<<<<<<
1841   So list parsing has been fixed, IDNA support has been added, and it is
1842   possible to mix pipe and file recipients *and* multiple thereof, and
1843   the result is still correct for *all* of them.
1844   I think this kind of list can be given wherever a user can directly
1845   enter such a list.  And i think all that is unique to S-nail(1).
1847 - When writing back edited messages the target MBOX mailbox can no
1848   longer become "corrupted" when the trailing newline was removed during
1849   the edit.  Also affected FreeBSD and NetBSD mail(1).
1851 - A security fix for CVE-2011-2895 was applied.
1853 - The generated Message-Id: is now more human-friendly.
1855 - The -h command line option has been dropped.  Use "-O -h XY" if your
1856   MTA really supports that.
1858 - The -O and -r command line options no longer enforce a one-shot send
1859   mode, and instead persist for the duration of the entire session.
1861 - Variables set via the -S command line option are now (un)set twice;
1862   immediately and after all the resource files have been loaded.
1864 - Other new or changed options/commands, in order of appearance:
1865   recipients-in-cc, smime-sign-include-certs, quote-fold, stealthmua,
1866   add-file-recipients, write, rfc822-no-body-from_, rfc822-show-all,
1867   mail/Mail, idna-disable, idna-strict-checks, ??
1869 - In the codebase itself an effort to reduce duplicate work and
1870   introduce caching, and to minimize the use of local variables, was
1871   started, but that is long term.  A lot of improvements here and there,
1872   too, like using the well MD5 optimization from Wei Dai, Chris Torek's
1873   hash algorithm for hash tables etc.
1875 - Incredibly important: an heraldic animal was found: snailmail.jpg!
1877 The full history can be inspected by issuing the git(1) command
1879   $ git log --reverse s-nail..s-nailv13
1881 A new TODO has been introduced, and it is getting longer and longer.
1882 Thanks.