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.4.5 and v14.5.2:
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}";
18 v14.5.2: fix 1: 2014-01-30
19 --------------------------
21 - s-nail-14_5_2-sort.patch
22 Reverses (sort(),thread(): use srelax()!, 2014-01-18, [a9b67e9]),
23 which was a hasty commit of an untested diff that i've added few
26 As a rather careless last-minute change i've added string relaxation
27 to threaded and sorted display, but it's really one more step towards
28 lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
30 An alternative, forward-heading patch that keeps string relaxation has
31 been pushed to [master] as [5e75529] and is also available as
32 s-nail-14_5_2-sort-alt.patch.
37 Thanks to Ypnose, Sunil Nimmagadda and Gavin Troy.
38 Gavin Troy *really* deserves special thanks for facing [next]!
39 And i want to dedicate the new coloured message display functionality
40 to John Dodson and Ypnose. Thank you.
41 (And best wishes to beautiful Australia!)
43 ChangeLog (packager-affine)
44 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
46 - All utilities can now be overwritten during configuration so that
47 their values are fixated in the generated makefile (`mk.mk').
48 I.e., talking about MAKE=, STRIP=, awk=, cat=, chmod=, cp=, cmp=,
49 grep=, mkdir=, mv=, tee=.
50 rm= and sed= have to be overwritten from the command line, they're
51 needed before `conf.rc' is read.
52 [5c03347, 072ec65, 39a00ab, 23a1245, ?]
55 - The release tarball is now also available in a xz(1) version.
57 - New configuration option: WANT_COLOUR, by default enabled.
59 - 'make test' should now really work, even if the running user has
60 a mailbox with content. [f223a91]
62 - WANT_AUTOCC is now by default enabled, so as for normal users which
63 don't have the need to embed into a defined packaging environment.
66 - Installation no longer strip(1)s away debug symbols if WANT_DEBUG was
73 - Fixes to some bugs that are present since the first cvs(1) commit of
74 Heirloom mailx(1); includes that *ssl-key-user@host* should now work.
75 [4405a2cc, 9770c26f, 692976b9]
77 - Some off-by-XY fixes, thanks to the debug memory canaries.
78 [19b2b0d, 202506e, 43df6e4]
80 - Fixes for (other) stupidisms (of mine): [1c2161f]
82 This includes true implementation of in-memory history limit for the
83 NCL, which was the final and real solution to a segmentation fault
84 that Gavin Troy had to deal with on [next]. [1089f2b]
87 - For completeness: new command `var-inspect' shows information about
88 all given options. Mostly ment for implementing future tests.
91 - The `pipe' command no longer embeds message information into the
92 data passed through to the command (when *piperaw* is set).
93 [ef5ecc6 (part of topic/colour)]
95 - Simple coloured message (header) display is now possible. Please
96 read the new manual section "Coloured message display", use
97 *colour-disable* to turn it off. (It is enabled by default if it
98 knows the terminal is capable and, if used, the pager can, too. Note
99 we now set LESS=FRXi when starting PAGER and no LESS= is in the
102 Dedicated to John Dodson and Ypnose.
103 [topic/colour, c6e84c7]
105 - The `if', `else', `endif' syntax has been extended.
106 You can now "if 0" (never), "if 1" (always), "if $OPTION" (boolean
107 check for OPTION) and "if $OPTION == 'VALUE'" as well as "if $OPTION
108 != 'VALUE'". Unfortunately it is still not possible to use
109 conditionals inside conditionals. [0fb2ae7]
111 - -# now also sets MBOX=/dev/null. [4be2f1e]
113 - The NCL command line editor now supports cursor keys when the terminal
114 produces xterm(1)-compatible keycodes ('ESC' + '[' + [DACB] for left,
115 up, right and down, respectively). What a thrill, yay!!! [0cbf672]
117 - New (optional) command: `history': show or clear command line history,
118 or select a specific command line from in there.
119 History works a bit different now, and should no longer include
120 command lines which include specific message numbers; more to come.
121 [59c6195, topic/hist2]
123 I plan to join all the history management and use only the one that is
124 part of NCL now, hooking it into editline(3) and readline(3). That
125 would shrink tty.c a bit and also introduce duplicate elimination for
128 - The new ~u and ~U tilde escapes work like ~f and ~m, respectively, but
129 don't include any header lines. Inspired by a patch from
130 Sunil Nimmagadda on openbsd-tech@. [c37b8b3]
132 - The `|' command should work again -- it has stopped working on
133 2013-09-09 when i've accidentally changed the command name from `|' to
137 - As a rather careless last-minute change i've added string relaxation
138 to threaded and sorted display, but it's really one more step towards
139 lowering memory pressure -- i couldn't resist [a9b67e9] after seeing
140 ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
141 Buffer allocs ever/max simultan. : 14/14
142 Overall alloc count/bytes : 17165/881088
143 Cycle maximums: alloc count/bytes: 16906/876984+0
144 ?0[ /Users/steffen/src/nail.git/t.mbox]? sst
145 Buffer allocs ever/max simultan. : 0/0
146 Overall alloc count/bytes : 16515/841816
147 Cycle maximums: alloc count/bytes: 16256/837712+829560
149 ChangeLog (purely technical)
150 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
152 - We now have debug canaries for all memory sources now that [8419d44]
153 added them to the "string dope".
155 - The most work has been done on our value system, which manages the
156 binary and value options, like *folder* etc.
157 It is now based on enumerations, i.e., constant integers, not on
158 strings. This of course only relates to non-dynamic options.
159 Anyway, this saves us key hashing and allows more compact data
160 representation in general (see the new header `okeys.h' for more).
166 ChangeLog (packager-affine)
167 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
169 - The build system *only* uses the automatically detected $CFLAGS and
170 $LDFLAGS if WANT_AUTOCC=1. I.e., even unset or empty $CFLAGS and
171 $LDFLAGS are not touched until then.
172 (We do however still set $CC if that is unset or empty or set to the
173 plain string "cc".) [856625f6]
178 - Fixed segmentation faults / bus errors when setting *nofolder*
179 / *line-editor-cursor-right* to the null string (only with WANT_NCL),
180 respectively. [d1f1a19b, 21e5c285, 9f6ff25d]
182 - *prompt* handling is now really POSIX compliant (thus no prompting
183 occurs not only for 'set noprompt', but also for setting *prompt* to
186 This was indeed a rather large changeset that also introduced the new
187 *prompt* escape character \&, which expands to `?' by default and to
188 `&' if *bsdcompat* is set.
190 Like that we now can simply assign "\& " to *prompt* at program
191 startup, which (a) allows to do 'set noprompt' without error (once)
192 and (b) allows for POSIX compliance in respect to prompt handling
193 without any complicated conditional code, but (c) gives us the
194 opportunity to continue to support BSD prompts.
197 - For completeness: new command: `features'. (Rather useful for being
198 able to implement more tests in the future, and act according to what
199 is really compiled into the tested binary.
201 - The `-#' command line option now also sets *quiet* by itself.
204 - nail.1: a newly introduced empty line in the manual produced error
205 messages on some systems. Fixed.
207 - The return value of the `mimetypes' command has been reversed and
208 should now be fixed. [acf56ac52]
210 - In threaded display the Subject: followup suppression no longer
211 takes into account invisible messages.
212 Also, rudely hack in a messages-already-written-in-this-round counter,
213 so that the followup suppression knows when "the top of the screen" is
214 reached, which (seems to) help(s) against missing subjects up there as
215 well as after a `newmail'. [topic/subject]
217 - Added a WANT_REGEX=1 toggle in `conf.rc'.
218 When we find regular expressions then a new regex-enabled IMAP-style
219 search is available (see the manual for more) [1ec8fe68]
221 ? f (/or subject ^\[S-nail (subject ^\[nail-devel))
222 ? f (/subject ^\[S-nail) (/subject ^\[nail-devel)
223 ? f (/subject "^\\[(S-nail|nail-devel)")
225 I'm looking forward for being able to add another, simplified, syntax.
227 ChangeLog (purely technical)
228 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
230 - The cc-test.sh has seen some tweaks, for easier future extension, and
231 for adding a test for [d1f1a19]. [several, mentioned: 21e5c285]
233 - On systems without a real wordexp(3) implementations deadlocks could
234 occur because we sometimes hold_all_sigs() to avoid longjmp(3)s away
235 (and will do so for quite some time, still), and that resulted in the
236 SIGCHLD that reported the exit of the started subshell to be blocked,
237 too (e.g., after '? *.h<Tab>': endless hang). Fixed.
242 Many thanks: Gaetan Bisson, William Yodlowsky, Gavin Troy,
243 Thomas (wasd AT gmx DOT net), Ypnose.
244 And Gavin Troy definetely deserves a very special credit.
245 But thank you all, and very much indeed!
247 ChangeLog (packager-affine)
248 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
250 - The `test' make target has been fixed. [f0991e14]
253 - It is possible to gain a different kind of make(1) verbosity by
254 using a VERBOSE=1 command line argument (this knob is not taken into
255 account when deciding wether a rebuild is needed). [498e4ad0]
258 - On Crux 3 Linux and OpenBSD the readline(3) and editline(3),
259 respectively, libraries will now be found when desired. [a7d1aa78]
262 - WANT_LINE_EDITOR has been renamed to WANT_NCL, *plus*.
263 So now there are WANT_READLINE, WANT_EDITLINE and WANT_NLC, each of
264 them can be set individually, and they are tested in the shown order.
265 Also, WANT_TABEXPAND and WANT_HISTORY have been introduced and can be
266 used to fine-tune functionality. [ae4e01e1, b2635feb, 9742bf40]
268 (While here, i've fixed WANT_TABEXPAND code so that it is more
269 sensitive to line excess; on Linux etc., where MAX_INPUT is 255,
270 strange behaviour could be seen because we didn't take into account
271 the length of the prompt at all. The NCL is assumed to have only
272 one remaining, but unfixable problem: backspace often is incapable
273 to cross visual line boundaries; use ^A/^E + ^L, then. [e832c04a]
275 Also, cursor (now ^B and ^F) and history movement (now ^P and ^N) of
276 the NCL have been changed. [d7d928da])
278 - WANT_QUOTE_FOLD is now enabled by default. And WANT_ASSERTS has been
279 renamed to WANT_DEBUG. [1e10da1f]
281 - The build system has seen yet another overhaul in general. CC, CFLAGS
282 and LDFLAGS plus are now tracked and changes will force rebuilds.
283 The new WANT_AUTOCC option can be used to let the build system figure
284 out a compiler and choose known-to-work flags. Use the new ADDCFLAGS=
285 and ADDLDFLAGS= command line arguments to add your specific flags on
286 top of those -- the final CFLAGS etc. are what is change-tracked.
288 This rather massive internal rework revealed that old Bourne shells
289 were yet not supported by the new build system, and so did testing
290 that UnixWare installation was yet impossible due to tool
291 incompatibility. [75c4b74e]
293 - The new WANT_AMALGAMATION option will force compilation of all the
294 sources in a single compilation unit. This requires a rather large
295 amount of memory, but may produce a more compact, maybe more optimized
296 binary. (Implementing this revealed quite some bugs which could
297 therefore be fixed.) [topic/amalgam]
299 - `nail.rc' has been pimped a bit (mostly comments, but
300 *mime-counter-evidence* is now always set). [e3094ba7]
302 That changeset was however buggy. [f3dcb46]
305 - We no longer use install(1) for `install'ation make rules. [80b02cd9]
310 - Even '$ s-nail & fg $!' will now work with the NCL. [2a8b5c55]
312 - Several off-by-one (off-by-two) fixes. [32ce9836, 71e6d013, f139dc36]
315 - Setting *noprompt* now prevents prompting, as per POSIX. [ecefaf63]
317 - *prompt*: new \$ (exit status of last command) and \@ (name of
318 currently active mailbox) escape sequences. [6f652046]
320 - One may now omit the space in '? unc' ('?unc') [05fcb383]
322 - New commands: `ghost' and `unghost' define command aliases (since
323 `alias' is taken for a different purpose) [topic/commands]
328 - There is now a pseudo account `null' (case-insensitive).
329 Also a new `localopts' command exists; when used from within an
330 `account' block, options changed will be reverted back to its former
331 value when the account is left (e.g. by switching to `null'):
334 alternates sdaoden@users.sf.net sdaoden@users.sourceforge.net \
335 sdaoden@googlemail.com sdaoden@gmail.com
336 set Sign="\n--steffen\nForza Figa!" sign="\n--steffen"
337 set smtp=smtp.gmail.com smtp-auth=plain smtp-use-starttls
343 set from="Steffen \"Daode\" Nurpmeso <sdaoden@gmail.com>"
348 set from="Steffen \"Daode\" Nurpmeso <sdaoden@users.sf.net>"
356 neither of *Sign*, *sign*, *smtp** nor *from* should be set.
357 Please see the manual for more.
358 TODO - neither command-ghosts nor alternates etc. are yet tracked
359 TODO - we should have a boolify() so as to say 'localopts yes' etc.
362 - New command: `cwd' (print current working directory).
363 Also fixing the `chdir' return value. [eff4397c]
365 - The *ssl-method* now allows explicit setting of 'tls.1.1' and
366 'tls1.2' values. [c66b4196]
368 - When sending to display, be aware that filenames in MIME parts may of
369 course be MIME-encoded! [1454be03]
371 - *hostname* is now honoured even if *smtp* is not set. (We always
372 supported *from*, so why not *hostname*?)
374 - The `-u user' option now acts identically to setting the $USER
375 environment variable and both now tend to mean something like
376 "impersonate as user in some aspects". Note that we have always used
377 the latter in one or the other way, and `-u user' always ment more
378 than just "open mailbox of user", so i think this change sharpens the
379 edge in the right direction. [09632731]
381 - Filename argument quoting has been tweaked for (some) function(s which
382 take a filename argument last). The following snippet as reported by
383 Gavin Troy should work now: [2bb9b80e]
385 ? mv +inbox.Junk\ Mail
387 - The GNU implementation of wordexp(3) is also (i've added a workaround
388 for the very same bug for Mac OS X in S-nail v14.3 [63273772]) buggy,
389 which causes segmentation faults when expansions failed (`fi &VOID').
393 - The `fi' command no longer uses the (possibly truncated) display
394 version of a filename, but the full path. [5cd85b07]
396 ChangeLog (purely technical)
397 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
399 - Large rework of internal structure: bundle inclusion of most of the
400 external and the content of most of the internal #include files in the
401 new nail.h. If that would have been done very first bugs like the
402 infamous MAXPATHLEN bug as reported by Paul Vojta (see v14.4.2) would
403 never have occurred. [21f3155b]
405 - Support for -fstrict-overflow cc(1) flags. [topic/strict-overflow]
407 - Fixed the quotation filter which yet allocated memory even if not
410 - String relaxation reduces memory pressure rather drastically when
411 working with many (especially MIME) mails at a time, e.g., when
412 writing a modified mailbox. Before all messages of a mailbox had to
413 be worked without releasing any memory in between, now we give back
414 memory (to our pool, not the system) after each and every message.
417 - The other memory source now uses bound canaries, which also found some
420 - We now use the EL_PROMPT_ESC editline(3) mode for prompting, which
421 should offer the possibility to use coloured prompts etc. with
422 (even those) editline(3) (versions which do offer it -- older versions
423 should just do fine by themselves).
424 S-nail uses the special trigger control character \1. [ea30d818]
427 Note however that all tested editline(3) versions are buggy and
428 either don't get it right (`\1COLOR-ON\1stuff\1COLOR-OFF\1') or are
429 incapable of proper repainting (`\1COLOR-ONstuffCOLOR-OFF\1').
431 - We now use the MD5 digest code from the OpenSSL library if that is
437 Many thanks: Gaetan Bisson, Stephen Isard, Jérémie Courrèges-Anglas,
438 William Yodlowsky, and Adam Sjøgren from GMANE.org!
440 ChangeLog (packager-affine)
441 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
443 - The packager-install: target has been fixed. [a8c1b0b]
444 (Gaetan Bisson and William Yodlowsky)
446 - As suggested by Gaetan Bisson the several build system tasks are now
447 individually addressable, i.e., 'make [OPTIONS] config', 'make build',
448 'make test', 'make packager-install'); nothing changes unless you want
449 to, in which case: please see INSTALL. [4d3b799]
451 The new target 'test' will call cc-test.sh with its new --check-only
452 option which will only perform the (too few) function tests on the
454 And cc-test.sh will no longer create output files, but simply echoes
455 to STDOUT and STDERR. [629e1ee, 786f219]
458 - The default configuration file now sets *bsdannounce* and *bsdflags*,
459 all in one line, as suggested by William Yodlowsky.
460 (If *header* is disabled, *bsdannounce* is ignored, but *header* must
461 be enabled by default according to POSIX, and *bsdannounce* is just
462 the same as *header*, but for the folder-switched event. Thus setting
463 *bsdannounce* is the more sane default, imho.) [6161f10]
466 - Announcement messages are now tagged '[ANNOUNCE]'. [26e1b35]
467 (Tagging suggested by Stephen Isard and Jérémie Courrèges-Anglas)
469 - The manual NAME now includes the version (but it's somewhat ugly).
475 - When switching folders when in compose mode, message attachments
476 become invalid. For v14.4.5, at least warn when this happens.
479 - When reading multipart/alternative messages which do not contain
480 a text/plain part, the (most likely HTML) part is not displayed (even
481 if S-nail is configured to display HTML). The reason is a bug i've
482 introduced with [0d43a999] (Change "Part X:" display message..,
483 2012-12-20). (Note that the committed fix i've posted to the list was
484 not correct either and has been fixed itself.) [225c02b, ecfa149]
489 Thanked, Gavin Troy, Gaetan Bisson.
491 - Fix output buffer confusion that would have occurred when parts of
492 a multipart mail had a pipe command set. Longer story in [e75d16dd].
495 - The makefile now supports a `packager-install' target that bypasses
496 the reevaluation of the configuration (after checking that there is
497 one) and directly steps ahead to the install process.
500 - Notes in INSTALL that CFLAGS and LDFLAGS need to be overwritten from
501 within (conf.rc or) the command line.
507 I convey special thanks to Karol Błażewicz and Gaetan Bisson.
509 - The new build system didn't allow to overwrite CFLAGS= when used in
510 conjunction with GNU make(1). To make a long story short, removing
511 a `.POSIX:' directive from the makefile fixed the problem. Luckily.
514 - More INSTALL notes for UnixWare 7.1.4, which suffers from the same
515 problem: here the fix is to use the -e option of make(1).
517 - Karol Błażewicz reported a segmentation violation he got when using an
518 Arch Linux S-nail test package, and Gaetan Bisson informed me about
519 that. The problem was that we didn't assign the resulting default
520 address (which gets used when *from* is not set) to the result which
521 gets used, effectively resulting in a NULL dereference. [cfd60479]
526 Many thanks to Paul Vojta.
528 - On GNU/Linux there is no MAXPATHLEN constant defined by default, as
529 this is a non-standard legacy constant. Mozilla ran into this some
530 time ago, though a bit different [1]. It made it easier for S-nail.
532 [1] <https://bugzilla.mozilla.org/show_bug.cgi?id=412610>
534 We could include `sys/limits.h' to get at MAXPATHLEN, there it is
535 defined to be PATH_MAX, but let's just include the standard `limits.h'
536 and ensure MAXPATHLEN ends up >= PATH_MAX. With this condition being
537 true even FORTIFYd sources won't bail with reported buffer overflows
538 because realpath(3) expects a buffer of PATH_MAX bytes. [bee5e57c]
541 - With the builtin LINE_EDITOR, ensure proper interaction with GNU
542 rlogind(8), which is alone in its quest to set the ISTRIP termios(4)
545 - Bugfix a codepath that would have prevented compilation when
546 HAVE_ICONV is not set.
547 While there, allow to unselect message attachments when using the `~@'
548 tilde command interactively, which i mysteriously had forgotten when
549 allowing selection of 'em. (oops?) [4f58ffea]
551 - It's now easier for packagers to get at debug-enabled CFLAGS; simply
552 use WANT_ASSERTS=1 (should not be enabled in shipouts, please).
555 - Fixed a terrible bug that i've introduced in november 2012, that would
556 have corrupted MBOX files when using the `resend' command. (The
557 so-called "From_ line" would have been quoted to ">From_ line" instead
558 of simply being stripped.) [19d449e2]
560 - Fixed a SIGSEGV for the builtin LINE_EDITOR, that would have occurred
561 if a history traversal (^B or ^F) would have been continued by
562 a reverse history completion (^R).
563 While there, avoid some multiple-beeps-in-a-row that yet occurred due
564 to code reuse, and document that ^G etc. reset the multibyte state
567 Also, the expand-on-tab code could have excessed line input maximums,
568 e.g., after `? /usr/bin/*<Tab>'. This was of course known, but
569 i wanted to keep it because all tested (modern) terminals "mess up but
570 won't break", and thus made it possible to use the data, even if it's
571 visual representation was messed up. The real solution will be much,
572 *much* more complicated, i.e., show possible *completions*, page-wise,
573 etc., i.e., just like is known by tab *completion*. This will need
574 far more time because it doesn't make sense to embed such complicated
575 code into the current bed.
576 Now i've chosen to simply don't display excess, but replace the
577 content with a message that says that there was excess. It simply
578 looks better. [0320c8ba]
580 - I've changed the use of `[?]' as a replacement sequence for invalid
581 / non-displayable characters to `?' (again). There are still code
582 paths (from the original codebase) which use the real Unicode
583 replacement character instead, so our display is still not unique.
584 On the long term the codepath can anticipate in all levels wether
585 use of Unicode is possible, so that, then, we will be unique again,
586 using either only `?' or the Unicode replacement character. [faf6380]
588 - I've anticipated in v15.0 and implemented *quote-fold* as a stream
589 filter. It is now multibyte safe and takes into account the visual
590 width of characters, i.e., ideographs etc. It is working almost as
591 good as an algorithm can work that looks at data linewise, but is yet
592 experimental and incomplete in that it will break lines even if only
593 whitespace or a backslash escape follows. It is code that is only
594 a few hours old, which is why it is not enabled by default. [
601 - Fix some harmless stylos and typos in the manual and `conf.rc'.
604 - Ensure *complete* proper cleanup on signal-caused configuration run
607 - Bugfix: reenable empty configuration variable overrides, as in
609 $ make install SID= NAIL=mailx ...
612 - Bugfix: rename the `conf.rc' variables SHELL, LISTER and PAGER because
613 they clash with the POSIX standard variables of the same names, which
614 hurts now that the configuration is run through the shell itself.
615 The configuration names are now XSHELL, XLISTER and XPAGER (ouch).
618 - nail.rc: comment out some non-portable S-nail(1) specifics, for those
619 who install this file as mailx.rc or so, somewhere. [3f14b01]
621 - From now on S-nail will use simple version tags, as, e.g., `14.4.1',
622 i.e., no more `s-nail-14.4.1'. [a75437d, 183d59c] (Jürgen Daubert)
624 Also move UAGENT out of `version.h' [f7be5be]
626 Uh! v14.4 must have originated in a bad dream; good it's vanished.
631 Thanks to the entire vivid and virile S-nail(1) user community is
632 proper, especially Stephen Isard, Gavin Troy, Martin Neitzel.
633 Not to forget Ryan Kavanagh and Ayan George.
635 Note this time the changes are in reverse order, i.e., oldest first.
640 15fbe09 ^bf9173f 'topic/varmac-unite'
641 Simplification and unification of variable and macro handling
642 40f6f58 ^15fbe09 'topic/cledit1'
643 Command line editor; new manual section `Line editor'
644 ad28a32 ^40f6f58 'topic/termsize'
645 Honour POSIX mailx(1) and respect $COLUMNS and $LINES on startup
646 dc3cd49 ^a446fd8 'topic/qf'
648 b8738f7 ^0651fd0 'topic/spam1'
649 Interaction with SpamAssassin; new manual section `Handling spam'
650 5419d6f ^b8738f7 'topic/make1'
651 Reworked build system; please read `INSTALL' and `conf.rc'
652 9ab4d6b ^5419d6f 'topic/list1'
653 Slightly tweaked message thread display, fix `:u :r' to mean it
658 - The default PAGER is now more(1). (But read on.)
660 - The `echo' command is now compliant, and fully supports XSI.
662 - The `group' and `ungroup' command aliases have been removed, they are
663 `alias' and `unalias'.
665 - We now have the capability of line editing and history.
666 One may choose from not less than three different implementations:
667 a builtin editor as well as possible linkage against BSD editline(3)
668 and also a GNU readline(3) compatible layer.
669 Please read the new manual section `Line editor'.
671 Input is now compliant in that an interactive line may be continued
672 after escaping the newline character with a backslash.
673 [topic/cledit1] (all of them)
675 The *prompt* variable may now contain shell escapes, just like the
676 `echo' command. [0938d8a]
677 As a special extension the new \? escape, when used within *prompt*,
678 will expand to the exit status of the last command. [41076d2]
680 - The POSIX standard environment variables $COLUMNS and $LINES are now
681 honoured upon startup. [topic/termsize]
683 - The `help' / `?' commands now support abbreviation, i.e.,
684 ``$ ? unc'' should now find `uncollapse'. [7b86195]
686 - The `~' abbreviation that has been introduced as an alias for `call'
687 is now a real command, not a magic shortcut. [9987289]
689 - The new variable *quote-as-attachment* can be used to additionally
690 embed the quoted message as a `message/rfc822' MIME attachment.
693 - The compose-mode command `~@' will now attach messages from the
694 current mailbox if given a filename of the style `#NUMBER'.
695 Please read the corresponding manual section `Tilde escapes', though.
697 - The `WANT_JUNK' and `WANT_SCORE', as well as Gunnar Ritters junk mail
698 management have been removed.
700 Instead S-nail(1) can now support interaction with SpamAssassin, but
701 sofar only via the spamc(1) / spamd(1) client / server pair of
702 programs that ships as part of SpamAssassin. The new configuration
703 directive `WANT_SPAM' controls wether this feature is desired.
705 Please read the new manual section `Handling spam'.
706 [topic/spam1] (Martin Neitzel)
708 (S-nail(1) is now *definitely* floating-point free.)
710 - The configuration and make system have been overhauled / reorganized.
711 The configuration is now in `conf.rc', also contains directives like
712 `PREFIX' etc, and is always read in. However, only those directives
713 which are not yet set (via environment or command line overwrites) are
714 incorporated into the set of configuration options. Therefore
719 will now build S-nail(1) twice, because of the changed configuration.
721 Note that `WANT_GSSAPI' is now by default disabled, which shrunk
722 a freshly started s-nail image by more than 30 percent.
724 We're not finished yet in that there is no dependency graph etc.
725 Please do read `INSTALL' and `conf.rc'.
728 - Message selection has been slightly bugfixed in that `:u :r' really
729 means `:u' AND `:r'. Compared to NetBSD Mail(1) it's still a shame.
731 Threaded message display has been slightly changed in that within
732 a thread identical Subject: lines are not repeated. It may not be
733 perfect yet due to the general list / thread state. [topic/list1]
735 - If, upon startup, the environment variable `NAIL_NO_SYSTEM_RC' is set,
736 then the system wide initialization file isn't read, just as if the
737 `-n' option had been given. [1b31535]
739 - It is now possible to use CTRL-C during connection hangs. (But in
740 general error recovery capabilities of the socket related
741 infrastructure is non-existent, practically speaking.) [45a9f36]
743 - *quote-fold* has been temporarily disabled, as it is not multibyte
746 No review for v14.4. And today is Friday, the 13th. Ouuuh!
751 I should *maybe* should have and want to give prominence to
752 Martin Neitzel for this, i maybe have misunderstood.
754 - Bugfix *synchronous* *pipe-** execution..
756 Well, unfortunately yet another newly introduced bug slept in
757 S-nail v14.3[.1] -- [a8d724b3, Add @ and @& shell command prefixes
758 for pipe-MIMETYPE, 2013-05-03] falsely changed the waiting state
759 for subprocesses, as has shown up by a HTML-only mail on the
761 'Seems i'm collecting one line fixes in this codebase; this needs
762 to change in the future.
767 I want to give prominence to Juergen Daubert (jue AT jue DOT li), who
768 reported that i've broken plain-old unfancy send mode in 14.3.
770 + Ok, i'll hope we're out of new errors for the v14.3 series with that.
772 - New variable: *batch-exit-on-error*.
773 Only works if the new -# command line option has been given, and will
774 check the "current" exit status whenever one operation completes
775 (S-nail returns to the command prompt).
776 If the exit status implies error (e.g., sending the last message
777 failed) then we exit forcefully with that error status. (The normal
778 behaviour is that the status is reset when the command loop ticks.)
781 - While here again, i've added the new -# command line option.
782 This is the first step to implement a reliable batch mode;
783 unfortunately it still selects the users system mailbox on startup,
784 because we simply cannot go to "no" mailbox for quite some time -- at
785 some future time we will be able to go to some VOID thing, and then
786 this will end up as a rather efficient batch mode.
787 For now it sets *dot*, *emptystart*, *noheader* and *sendwait*, and
788 also implies the -~ command line option. [7549569]
791 printf "m ${MBOX}\n~s subject1\nE-Mail Körper 1\n.\n" &&
792 printf "m ${MBOX}\n~s subject2\nEmail body 2\n.\n" &&
794 ) | MAILRC=/dev/null "${NAIL}" -n -#
796 - Also, -N set *header* instead of *noheader*. [7b4a13f6]
799 - Plain old unfancy invocations like
802 $ echo bla|s-nail ./FILE1
804 had been broken (by [522cb3ec]). [260e19d]
810 Thanks to Gavin Troy (gavtroy AT gmail DOT com) who inspired the @ and
811 @& pipe-command prefixes.
816 - S-nail has been registered at Coverity Scan, and the third build
817 (after topic branches *coverity-444* and *coverity-444.2*) produced no
818 more errors. (<http://scan2.coverity.com/projects/444>.)
819 (Then i used POP3 and IMAP and fixed some SIGSEGV. ;) Still didn't
820 look at S/MIME, Maildir, caches etc... o()
822 - S-nail v14.3 doesn't produce any spurious linker warnings on
823 OpenBSD 5.3; all (correct!) use cases of strcpy() and strcat() have
824 been replaced. [7bdf330, 2c8d7cb]
826 - This is the first release with a (though very short) review -- i'm
827 slowly getting comfortable with the code. (But i'm too stupid to
828 perform reviews on patches, 'always did reviews on C++/Perl/xy
829 classes. Aaah, how beautiful ... objects.)
834 - It is now possible to "call" macros without using the `call' command
835 by prefixing them with a tilde, as in
844 - Added the *pop3-bulk-load* option.
845 Yes, there are mailing lists etc. which use plain text email, and,
846 there, headers are often more data than the body, so it doesn't make
847 sense to download the headers twice (unfortunately POP3 doesn't
848 support a BODY command; if only it would support a RETRDELE command..)
851 And yep, from this changeset on i personally use S-nail even over the
852 network, no longer my stale and incomplete S-Postman. And i can tell
853 you, this damn thing is so silent, i always set *verbose* not to go
854 grazy ... but .. i hate to say it .. the healing will take time.
856 - POP3 will now try to use APOP authentication automatically; thus the
857 *use-apop* stuff has been replaced by *pop3-no-apop* options (just in
858 case there are POP3 servers which advertise they support APOP but in
859 fact fail to do so; anyone?) [6c3c5575]
861 - Some IMAP segmentation violations have been fixed:
863 ? fi imaps://user1@localhost
864 Password:Interrupt <- CNTRL-C
865 ? set imap-auth=cram-md5 <- hey, 'forgot to set correct auth
866 ? fi imaps://user1@localhost
867 IMAP write error: error:140D00CF:SSL routines:SSL_write:protocol is shutdown
870 And also, when *folder* was set to an IMAP account but hasn't been
871 opened yet, and no IMAP account ever has been opened, a string
872 comparison against a NULL pointer yet caused a SIGSEGV, too.
875 - `set folder=' now tolerates `%:' and expands PROTOs stuff etc.:
877 ? short xp %:imaps://user1@localhost
880 Pure convenience so that it doesn't need to be typed twice (still no
881 completion in sight...). Note that setting *folder* to a POP3 box
882 will now be actively rejected. [b12b17f5]
884 NOTE: while implementing this i've detected another dead-end
885 miscondition in S-nail -- you really should ensure that your target
886 folder/box is connected before you leave your current POP3/network
887 based folder, if there is data to be moved to the target (i.e.,
888 mbox). This problem will persist for a long time due to the way the
889 entire codebase functions; i hope i can find a short/mid-term
890 solution, but the real healing will take years. The mentioned
891 solution would at least make S-nail interruptable, currently we get
892 stuck and interrupts are blocked...
894 - If you're using S-nail on Mac OS X and have seen some segmentation
895 faults when expanding shell stuff then you may be pleased to hear that
896 S-nail now works around an Apple bug. [63273772]
898 - The builtin mime.types have been corrected and a lot of new ones have
899 been added. New data from
900 <http://svn.apache.org/viewvc/tika/trunk/tika-core/src/main/resources/\
901 org/apache/tika/mime/tika-mimetypes.xml>, thanks! [8072fcb6]
903 - BEWARE: handling of command line arguments has changed a bit!
905 1. The -D, -d, -E, -i, -N and -v command line options are now
906 implemented by means of setting the respective option, as via -S.
907 (This means that from now on resource files can only *temporarily*
908 overwrite command line arguments.)
910 2. The -I and -T command line arguments have been dropped.
911 It seems Gunnar Ritter stopped developing nail/Heirloom mailx once he
912 started implementing Newsreader functionality. It'll take a long time
913 until we get there, so for now drop all the Newsreader stuff.
915 3. Handling of -r has been changed. E.g.:
917 s-nail -A test -Snoeditalong -r 'La mort est <fem@me>' -d
918 ? set from=bummer@m1.com
922 Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t1"
923 ? set from=bummer@m2.com
926 Sendmail arguments: "sendmail" "-i" "-r" "fem@me" "t2"
930 s-nail -A test -Snoeditalong -r '' -d
931 ? set from=bummer@m1.com
935 Sendmail arguments: "sendmail" "-i" "-r" "bummer@m1.com" "t1"
936 ? set from=bummer@m2.com
939 Sendmail arguments: "sendmail" "-i" "-r" "bummer@m2.com" "t2"
941 [*main-fun-cleanup* topic branch]
943 - *smime-sign-include-certs-** stuff works again, oops.. [9a8597c6]
945 - A whole lot of smallest and small fixes due to registration at
946 Coverity Scan, as project 444. Error handling in S-nail is ridiculous.
947 [*coverity-444* and *coverity-444.2* topic branches. The sheer number
948 of fixes was the reason to sit down and go for unplanned S-nail v14.3]
950 - *idna-strict-checks* has been dropped. It's silly to have in a MUA,
951 especially given that GNU LibIDN doesn't ship with a lot of rules.
952 We were able to drop quite some code (and a use-after-free, too :().
955 - The ~p tilde command displays attachments more verbose.
956 Until the big big MIME and send layer rewrite :) this is intermediate
957 since until then we do not really know neither MIME type nor charset
958 of an attachment at the time this is displayed (for sure). Yet
959 i think it's nicer to show what we have than keep it the way it was.
962 - @ and @& shell command prefixes have been added for the pipe-MIMETYPE
963 mechanism. The former suppresses filters if multiple messages are
964 displayed at once, the latter adds asynchronous program execution on
965 top of that. E.g., to display PDF documents, but only if you
966 *explicitly* address the message *alone and by itself*, and without
967 blocking S-nail and the $PAGER, do:
969 set pipe-application/pdf="@&cat >"${TMPDIR}"/s-nail${$}.pdf;\
970 mupdf "${TMPDIR}"/s-nail${$}.pdf; rm "${TMPDIR}"/s-nail${$}.pdf"
972 (Inspired by Gavin Troy.) [a8d724b3]
974 Note: most of that had been posted to nail-devel@ already, but it was
975 tweaked ([251b636]) so that you now *really* have to say `p MSGNO' to
978 - The NETLESS CONFIG= has been removed; it is almost identical to
979 MINIMAL now (i.e., without WANT_JUNK and WANT_SCORE).
981 - WANT_JUNK and WANT_SCORE have been disabled by default.
982 They don't seem to be too useful; i hope i can implement
983 a SpamAssassin hook for (downloaded) mail messages for v14.4.
984 If so, expect these two "modules" to become removed completely.
989 Another unplanned (minor) bugfix release after Gavin Troy (gavtroy AT
990 gmail DOT com) pointed out that MIME CTE decoding was broken, who
991 i therefore want to give a lot of prominence right here.
993 - Fix MIME content decoding which has been broken by [01c0e135].
1000 An unplanned (minor) bugfix release after i've found two bugs today and
1001 heard from Jérémie Courrèges-Anglas (jca+nail AT wxcvbn DOT org) that
1002 there exists a S-nail OpenBSD package.
1004 I want to give prominence to the following people that helped to
1005 improve S-nail(1) during this development cycle, in order of
1006 appearance: Dirk Peters (peters AT schwertfisch DOT de).
1008 Thank you very much, and best from Germany!
1010 - Some warnings of newer clang(1) versions were silenced, including yet
1011 another alloca(3) problem (see *memtracer* topic branch in v14.0
1014 - Tweaking the MIME boundary detection left a little hole that could
1015 cause boundaries not to be detected, as has been shown by a Microsoft
1016 Word generated mail on the ICU list. [11e5fb5b]
1018 - A format string could overflow bounds if unrealistic
1019 (18446744073709551615) line numbers or message sizes would have been
1020 produced. [faa65c40]
1022 - An algorithmic error could cause overlong lines which wrapped around
1023 to the next display line. [ade52660]
1026 v14.2, 2013-03-15 [v14.1, 2013-03-12]
1027 -------------------------------------
1029 I want to give prominence to the following people that helped to
1030 improve S-nail(1) during this development cycle, in order of
1031 appearance: Martin Neitzel, Christos Zoulas, Stephen Isard, jgw@txo.org
1034 Thank you very much, and best from Germany!
1036 + v14.2 differs from v14.1 only by one commit, one that fixes
1037 (mime_fromhdr(): partial rewrite using n_iconv_str(), 2013-03-12),
1038 which i hastily implemented just hours before the release of v14.1,
1039 and simply shouldn't have made it (into there).
1040 The v14.1 tarball has been removed from the server.
1042 - A fix for the quoted-printable codec: "message truncation" occurred
1043 when a mail maliciously used a soft linebreak to escape the linebreak
1044 of a completely empty line.
1045 (That resulted in 0 written and 0 leftover bytes, a condition that was
1046 declared erroneous back in november 2012 when i started handling I/O
1049 - The "folders" command will work again when given an argument.
1050 A fault of mine introduced in (cmd1.c: expand() may fail, 2012-10-23).
1052 - The Base64 codec has been touched again, and we are finally capable to
1053 perform sequential decoding; this was targeted for the MIME/send layer
1054 rewrite, but it actually was possible today.
1055 The result as seen in ps(1), running on the Base64 encoded HTML5
1056 standard (4622545 bytes HTML, with a NUL appended to force Base64
1057 encoding, resulting in a 6244793 bytes email):
1059 7420 s006 S+ 2:22pm 0:10.65 plain-nail -f HTML5
1060 1440 s006 S+ 2:23pm 0:00.36 ./s-nail -f HTML5
1062 (So the only thing that is left for a good throughput is sequential
1063 decoding of quoted-printable encoded parts that maliciously use soft
1064 linebreaks to convert an entire part to a single line. And i've seen
1065 that from Apple Mail.)
1067 - New option: *mime-allow-text-controls* (rather long manual entry).
1069 - *smtp-auth-password-user@host* and *smtp-auth-user-user@host* will
1071 (Reported by jgw@txo.org in November 2011, fixed by Gavin Troy in
1074 - Most *headline* formats now do support the '-' left-alignment flag.
1075 Note that you most likely have to change your *headline* accordingly.
1076 (The still missing %n format is one reason why there will be v14.2.)
1078 - *datefield* and *datefield-markout-older* can now be set to
1079 strftime(3) format strings (except %n).
1080 (From Stephen Isard's wishlist.)
1082 - A possible SEGV has been found and also fixed by Stephen Isard.
1083 (The "legendary" cross-world stereo fix!)
1085 - Wow! S-nail will finally compile on GNU based Linux systems like
1086 Slackware 14 etc. (Found while hunting bug reported by
1089 - New option: *datefield-markout-older* can be used to choose
1090 a different date display for mails that are older than six months,
1091 in equal spirit to what POSIX describes for the -l option of the ls(1)
1092 command (Stephen Isard).
1094 - (Exotic) Years are (would) now (be) interpreted correctly according to
1097 - CRAM-MD5 usage has been fixed.
1099 - *folder* updates are now tracked when set, and we will show the
1100 realpath(3) name of it, showing PREFIX..SUFFIX if that wouldn't fit on
1102 Tracking updates made it also possible to perform other more expensive
1103 tasks when setting *folder*, so that it is now possible to do
1109 et cetera (both ideas by Christos Zoulas).
1111 - Bugfix for the ~@ tilde-escape in non-interactive mode.
1112 (readtty(): quick shot: work in pipelines (on non-TTY).., 2013-01-25)
1113 introduced the possibility to "read data from the terminal" (STDIN
1114 that is) in non-interactive mode.
1115 The manual documents that attachment input must be terminated with an
1116 empty line, but if that had been omitted, as in the example below, we
1117 would have yet entered an endless loop.
1119 $ cat <<_EOT | /s-nail -~ -s boom ./OUT
1125 - Alias expansion will now be performed for members of Reply-To: fields
1128 - Decoding quoted-printable will now be more relaxed.
1129 (Even though the standard says that users should be given a hint when
1130 input is not absolutely clean; a possible warning will be added later,
1131 when we have an error message ring.)
1133 - New option: *mimetypes-load-control* can be used to control which of
1134 the mime.types resources will be loaded.
1136 - The builtin default mime.types have been extended a bit.
1141 I want to give prominence to the following people that helped to
1142 improve S-nail(1) during this development cycle, in order of
1143 appearance: John Dodson, Gianluca Ramunno, and Anon Ymous from the
1149 - Encoding defaults to *quoted-printable* not *8bit*.
1150 This has no technical background except that i think it's the better
1153 - Small progress for the "getting stuck due to the current folder
1154 becomes inaccessible due to whatever reasons" problem.
1155 (schdir(): realpath() local files before leaving CWD.., 2013-01-08)
1157 - The names of temporary files have changed. Whereas not all uses of
1158 temporary files already use really meaningful names, it has yet become
1159 possible to use the pattern "*mail-*"; or, to be compatible with
1160 NetBSD Mail(1) in one go, "*mail*". (E.g., in my ~/.vimrc you'd read:
1161 :au BufRead,BufNewFile *mutt*,*mail* setl fenc= | setf mail
1162 [the *mutt* is a leftover from times when i've used MUAs that suck].)
1167 - The Quoted-Printable MIME handling has been rewritten completely.
1168 We now correctly encode files with the MS-DOS newline sequence (CRLF).
1169 (Part of the *mime-cte* topic branch.)
1171 S-nail(1) continues to be able to handle text messages and text
1172 attachments without a trailing newline, but because these
1173 Content-Transfer-Encoding related things are now handled by the C-T-E
1174 layer instead of by sendout.c a text message body that comes in as
1175 part of a complete message via the -t command line option will loose
1176 the missing final newline (i.e., it'll gain one).
1177 This problem does *not* occur when *only* the message body comes in
1178 via STDIN, as in 'cat FILE | s-nail', but *only* when the -t option is
1180 (sendout.c: does no(t/ longer) know about CTE internals!, 2013-02-09)
1182 - Filename arguments for -a are now processed *after* all the resource
1183 files have been loaded etc., so that the usual "folder" specifics can
1184 be used (provided that proper care for shell quoting was taken).
1185 ((main(): delay -a processing.., 2013-01-10), as a part of the
1186 *mainaflags* topic branch.)
1188 - (d38c5bd, When the write command asks.., 2004-11-23) added support
1189 for pipes when saving attachments during a "write" command.
1190 It however used the wrong SIGPIPE signal handler; e.g.:
1192 Enter filename for part 2 (application/x-gzip): |exit
1195 Of course, it still performs a jump and that most likely leaves memory
1196 chunks behind, thus causing some memory leaks. This will be
1197 a long-term problem (you may want to read [mime.c:fwrite_td(): TODO
1198 notes on unfixable leaks, 2013-01-14] for more).
1199 (send.c:sendpart(): fix longjmp() SIGSEGV.., 2013-01-29)
1201 - Fixed a name quoting regression that i've introduced in
1202 (Rewrite *extract().., 2012-10-20), that would have caused
1203 "x \"y\" z" to become "x"y" z" instead of "x "y" z".
1204 (S-nail still does not really have RFC compliant parsers, just as
1205 NetBSD Mail(1) has, i.e., there are structured and unstructured fields
1206 etc... I hope i can provide them in v15.0.)
1207 (names.c:yankname(): fix quote regression.., 2013-01-29)
1209 - The IDNA conversion now assumes domain names are specified in
1210 *ttycharset*, rather than in the LC_CTYPE locale charset.
1211 I.e., it integrates into the usual character set specifications.
1212 (IDNA: honour *ttycharset* for domain names, 2013-01-18)
1214 - The new *editalong* variable will automatically spawn an editor when
1215 composing a mail in interactive mode, just as if `~e' was given.
1216 (Add new *editalong* variable, 2012-01-07)
1218 - The manual has been converted to mdoc.
1219 (The manual has been converted to mdoc, 2012-12-28)
1221 - The ~@ tilde escape, when given filename arguments, will treat the
1222 arguments as a comma-separated instead of a whitespace-separated list.
1223 (collect: change separator of ~@ tilde escape.., 2012-12-28)
1225 The interactive mode of ~@ has also been changed, rather massively.
1226 Please do reread what the manual says.
1227 ((collect: support multiple attachment charsets.., 2013-01-23), as
1228 part of the *attach* topic branch.)
1230 - Thanks to Gianluca Ramunno (ramunno DOT gianluca AT gmail DOT com)
1231 S-Nail will no longer try to issue a STARTTLS command when it is about
1232 to establish a SMTPS connection, a task that logically fails since the
1233 connection is already secured.
1234 (Interestingly the nail codebase performs the necessary test for IMAP
1236 While here the undocumented nail v11.0 *smtp-use-tls* legacy option
1238 (Fix SMPTS with a set *smtp-use-starttls*.., 2012-12-22)
1240 - The RFC 4155 compliant MBOX quoting is now exclusively used, the
1241 shitty *posix-mbox* variable has been removed again.
1242 (Shitty because i've implemented RFC 4155 compliant MBOX quoting and
1243 tested it, then added *posix-mbox* for those who liked the old
1244 behaviour and did not re-test -- the final code path was buggy.)
1246 In mails newly created and saved by S-nail(1) no From_ quoting at all
1247 will be used no more, but instead the rewritten MIME file classifier
1248 will detect unquoted From_ lines and enforce quoted-printable encoding.
1249 (This is an approach that is S/MIME compatible all through the way as
1250 the file data is not modified at all, but only encoded, so that the
1251 data checksum is not changed.)
1253 In yet existent mails that S-nail copies or moves around without
1254 reclassification an RFC 4155 compliant From_ line detector will apply
1255 MBOXO quoting (prepend a single '>') as necessary.
1256 Different to the old MBOXRD behaviour S-nail will neither quote yet
1257 quoted From_ lines ('>>From xy' -> '>>>From xy') nor will it unquote
1258 one quote level when reading etc. mails ('>> From xy' -> '>From xy').
1259 As a result the code could be simplified.
1261 This changeset also incorporates a fix for NetBSD PR bin/47453, as
1262 reported by Martin Brandenburg. I.e., some mailers, noticeably
1263 UW-imap (with MBX format only?), use non-compliant From_ lines with
1264 RFC 822 date specifications. Be aware of 'em.
1265 (RFC 4155 MBOX, and drop *posix-mbox* and foldergets().., 2013-01-06)
1267 - *rfc822-show-all* has been removed.
1268 It didn't work properly for more complex MIME structures, like
1269 message/rfc822 messages with attachments etc., just as i've seen today
1270 on the file(1) mailing list.
1271 So, instead of hacking it now i've dropped it and will come back with
1272 a better solution when the MIME and send layers have been overhauled.
1273 I.e., the real intent was to be able to specify that an embedded
1274 message/rfc822 is treated as a *unity*, and that's the goal.
1275 (Drop *rfc822-show-all*, 2013-01-23)
1276 [The manual will be adjusted in a different commit.]
1278 - *rfc822-no-body-from_* has been renamed to *rfc822-body-from_*.
1279 It thus must be set explicitly.
1280 On the other hand it now catches all cases...
1281 (*rfc822-no-body-from_* -> *rfc822-body-from_*, 2013-01-23)
1282 [The manual will be adjusted in a different commit.]
1284 - The new *charset-7bit* (defaults to US-ASCII) and *charset-8bit*
1285 (defaults to UTF-8) have been introduced.
1286 These are used if seven bit clean data is to be sent, and no
1287 *sendcharsets* are set or the convertion of all of them failed,
1290 - There is no functional change unless there is iconv(3) support.
1291 - There is no functional change unless you set them.
1292 (Introduce *charset-8bit* and *charset-7bit* variables.., 2013-01-18)
1293 [The manual will be adjusted in a different commit.]
1295 In addition the new *sendcharsets-else-ttycharset* variable can now
1296 be used to automatically use *ttycharset* as a *sendcharset(s)*,
1297 regardless of the new *charset-8bit* variable.
1298 (Add *sendcharsets-else-ttycharset* variable, 2013-01-24)
1299 [The manual will be adjusted in a different commit.]
1301 NOTE: before we apply charset conversion we now perform a string
1302 comparison to see wether character sets are identical. If the strings
1303 match (case-insensitively), then *no* conversion is performed.
1304 This means that code like
1306 $ printf "LATIN1: \0376" | s-nail -Ssendcharsets= -s boom ./out.txt
1308 *succeeds* in an UTF-8 environment now, whereas older versions would
1309 fail with an "illegal byte sequence" error (unless the iconv(3)
1310 library of the system would not perform any conversion that seems
1311 superflous, of course).
1313 I thought about making this optional, but, in fact, if this would be
1314 done in an environment without iconv(3) support then the result would
1315 be equally corrupt. And the way it is now we save the expensive and
1316 superflous conversions. (See TODO for more.)
1318 Please *do* reread the manual section "Character sets".
1319 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1321 - An attempt was made to improve MIME Content-XY: detection.
1322 It should be more RFC compliant, and just overall better :);
1323 a simple one-pass classifier cannot match libmagic(3), of course.
1325 This changeset removes support of the long obsoleted (4fee1ef,
1326 2005-01-06) *charset* variable, as well as for the
1327 *maximum-unencoded-line-length* variable that has been introduced in
1328 (48a652bd, 2005-07-26).
1330 For S-nail v14.0 it'll be no longer necessary to do
1332 $ tr -d '\015' < input | s-nail ...
1334 to transport files which use the $-DOS (terminal) newline (sequence).
1335 We still depend upon *sendcharsets* for a while, though.
1336 (Rewrite file-content classification.., 2013-01-02)
1338 - The new *mime-counter-evidence* variable can be used to force
1339 a classification of non-text MIME parts (attachments) by their
1340 filename, i.e., a "reverse-classification" just as would be performed
1341 if S-nail(1) would itself *send* the file(name). This can help
1342 against some stupid MUAs (Apple Mail?) that send .diff etc. files as
1343 `application/octet-stream' parts etc.
1345 At a later time this may become a valued option, causing a temporary
1346 save of unnamed attachments followed by a MIME classification of the
1347 file contents, followed by forced treatment as plain text if it seems
1348 to be human readable. But not yet. Just to warn you.
1349 (Add *mime-counter-evidence* variable.., 2012-12-29)
1351 - The special "pipe-" command "@" can be used to force treatment of
1352 a MIME message part as plain text (e.g.,
1353 'set pipe-application/pgp-signature=@' will henceforth print those
1354 signatures inline and as plain text).
1355 (Introduce the special "@" "pipe-" command, 2012-12-27)
1357 - The MIME types (as from mime.types(5)) will now be cached. Before
1358 all possible sources would have been opened, read and parsed for each
1359 and every message part that required detection of the MIME
1361 The new "mimetypes" command can be used to show or clear that cache.
1362 (Add mime.types(5) cache.., 2012-12-27)
1364 - A small set of MIME types (template: ./mime.types) will now become
1365 compiled into S-nail(1), and be used as a fallback if there are no
1366 ~/.mime.types and/or no /etc/mime.types, or those didn't contain
1367 a matching type. E.g., NetBSD 6 doesn't ship a default database.
1368 Also, file extensions will be matched case-insensitively (case of
1369 attribute values is not specified afaik?).
1370 (Introduce compiled-in mime.types(5).., 2012-12-21)
1372 - The undocumented *charset7* variable was removed.
1374 - The "Message X:" display leader has been changed and will henceforth
1375 be matchable via "^[-- Message \d+ -- \d+ lines, \d+ bytes --]:$".
1376 These lines can no longer be suppressed by setting the *quiet*
1377 option (which was yet possible for print and top, though undocumented).
1378 (Change "Message X:" display message.., 2012-12-20)
1380 - When displaying multipart messages the "Part X:" introductional string
1381 has been changed; if the Content-type: header is not *retain*ed, then
1382 this string will include the part's type and size. Ditto for
1383 Content-disposition: and a mentioned attachment filename.
1384 This is a first step only, for the final version the MIME and send
1385 layers will have to be adjusted. But the string will be matchable via
1386 a "^[-- #.* --]$" regular expression from now on.
1387 (Change "Part X:" display message.., 2012-12-20)
1389 - MIME boundaries in multipart messages are now handled better in that
1390 no boundary string should get through to the display.
1391 (Tweak MIME boundary detection.., 2012-12-20)
1393 - A couple of long standing, even pre-Heirloom mailx(1) memory leaks and
1394 segmentation violations, most of them related to configurations
1395 without alloca(3) support, as well as one leak that i have introduced
1396 when i implemented RFC 4155 MBOX handling, have been fixed.
1397 But S-nail should now survive non-alloca(3) configurations.
1398 (*memtracer* topic branch.)
1400 - The Base64 MIME handling has been rewritten completely.
1401 This was an urgent topic, because the old implementation (a) read in
1402 all lines of a base64 encoded text part, repeatedly resizing a string
1403 storage and repeatedly decoding that string until all the lines have
1404 been swallowed (i.e., or by accident the last decoded byte was
1405 a newline character, and that in turn may of course have fucked up for
1406 multi-octet encodings, dependent on the actual byte-order), (b) used
1407 function local static data to keep state in between multiple
1408 invocations, which messed up multi-byte/-octet encodings like this
1410 �5��ɽ���Aɥ����́��٥��������[lots of data follows]
1412 and (c) did not perform any error checking at all.
1413 The new one does not run into the problem that (a) tried to circumvent
1414 since leftover decoded data (as opposed to leftover *encoded* data) is
1415 transported along the call-chain for later use. It adds a minimal set
1416 of error handling ('may now see "[Invalid Base64 encoding ignored]"),
1417 with more to become possible in later S-nail versions when the entire
1418 layers are reworked. (Until then DOS newline sequences [CRLF]
1419 embedded into base64 will no longer be decoded to Unix LF newlines.)
1420 Base64 encoded lines will now be 76 characters long, as stated (as
1421 a maximum value) in RFC 2045, not 72 as before.
1423 The Base64 code core has been shamelessly stolen from NetBSD's
1424 Mail(1), and i guess it was the second time that this happened :=).
1425 (*base64-rewrite* topic branch; and reworked later on the *mime-cte*
1428 - The string allocation strategy has been tweaked some more to, i think,
1429 a final version (regarding algorithm).
1430 In normal non-interactive send mode it should now no longer need any
1431 dynamic memory at all (unless some dozen recipients are specified).
1432 (Several other places still use normal dynamic memory, of course.)
1433 (*dope-stringdope-again* topic branch.)
1435 - Support for NSS (Network Security Services) has been removed.
1436 I've never worked with it and are, regarding the complexity of
1437 network security, not willing to spend any time on it.
1438 SSL is installed on all systems i'm using and/or testing on by
1439 default, and so i've choosen to go this way.
1440 (It may be that sometime in the future S-nail will add support for
1441 libcurl(3) connectivity, and then it may happen that not only NSS
1442 support is reintroduced again, but also GNU TLS. All of that applies
1443 to network connectivity only, however, not to S/MIME afaik.)
1444 (*drop-nss-support* topic branch.)
1446 - I finally got a glue and understood that Sourceforge does (a) not
1447 support symbolic links and (b) doesn't like dots as regular parts of
1448 filenames. This means that all this time the promised s-nail.tar.gz
1449 symbolic link did not work, and that s-nailv13.3.tar.gz wasn't
1450 accessible either (via the web interface).
1451 In the future S-nail(1) will not provide any more symbolic links (the
1452 Sourceforge website offers a "download latest" thing which seems to
1453 work), and use underscores in filenames -- s-nailv13.3.tar.gz has been
1454 renamed to s-nailv13_3.tar.gz. The tags continue to use dot notation.
1457 - The *heirloom-plus* support branch has been removed.
1458 The code bases diverged a lot and even more to come.
1459 It doesn't make sense to put any effort in that.
1464 - Configuration on UnixWare 7.1.4 will succeed (shell issue fixed).
1466 - Even on DragonFly BSD the IMAP GSSAPI is now found
1467 (in /usr/pkg/include/krb5/gssapi/gssapi.h).
1469 - Support for pkgsrc(7) systems and automatic integration of
1470 C_INCLUDE_PATH and LD_LIBRARY_PATH path configurations.
1473 - Fixes a mortally embarassing regression that the current maintainer
1474 introduced before i really knew what i was doing, in (If *record* is
1475 set, avoid writing dead content twice.., 2012-09-14).
1476 It hit users that send through a MTA and have *record* set; in this
1477 combination data would not have reached the MTA.
1478 Interested parties may read the comment in savedeadletter() (part of
1479 the changeset) or the (Fix MTA/*record* descriptor clash..,
1480 2012-11-10) commit log.
1482 Deepest apologies to tortured users from the current maintainer!
1484 - RFC 4155 compatible MBOX file handling has been introduced, and so
1485 S-nail is now on par with (at least) NetBSD Mail in respect to this.
1486 It can be turned off with the new *posix-mbox* variable, which you may
1487 need to use since not all MUAs are capable to dig those MBOX files.
1488 E.g., less cutting-edge (.-) MUAs fail for this:
1490 |From - Thu May 10 20:40:54 2012
1491 |Date: Wed, 07 Nov 2012 11:48:30 +0100
1492 |To: super@duper.com
1497 |From - Thu May 10 20:40:54 2012
1498 |Date: Wed, 07 Nov 2012 11:48:30 +0100
1499 |To: super@duper.com
1502 |>From - Thu May 10 20:40:54 2012
1503 |From - Thu May 10 20:40:54 2012
1505 I'm not completely happy since S-nail *does* still quote those lines,
1506 how rare they may be -- it *does* modify message content. mutt(1)
1507 implements something more clever and that is quoted-printable encoding
1508 of the "F" from "From", when seen at the beginning of a line.
1509 This, when applied to just *any* "^From", will be a non-modifying and
1510 all-compatible solution.
1512 - SEND_MBOX handling has been changed to discard any Content-Length: and
1513 Lines: headers when it rewrites a message by default.
1514 I know that mutt(1) generates them (why, after
1515 http://www.jwz.org/doc/content-length.html?).
1516 Anyway, S-nail does neither use nor manage them, so that any
1517 modification renders those fields invalid, and then it seems best to
1518 discard them anyway.
1519 You may turn the new behaviour off with *keep-content-length*.
1524 The problem was that i really wanted to release on a 25th.
1525 But i have been able to improve S-nail(1) some more, so that this is
1526 possibly the first real release of it. So i'll add only things that
1527 have changed since v13 -- please see below for the complete picture.
1529 - A new CONFIG=CUSTOM make directive was added, and the new user.conf
1530 variables WANT_SCORE and WANT_DOCSTRINGS have been added. It is
1531 possible to create a floating-point free S-nail(1) now.
1534 - If a feature is disabled not even functions stubs should remain now.
1536 - Many places which will work only with local filenames do now actually
1537 check that the target is a local filename.
1539 - Space-separated lists should work again, at a few places at least.
1541 - Tilde commands will be possible, even with -r.
1543 - The *sendmail-progname* has been added after NetBSD 6 dropped the
1544 send-mail entry in mailer.conf(5), which broke S-nail(1). Now users
1547 - When editing messages via ~e or ~v file and pipe addressees will no
1550 - If recipients occur multiple times spread over lists, i.e., To:, Cc:,
1551 Bcc:, then only one occurrence remains, and in the "highest-order"
1554 - The "list" command prints the list alphabetically sorted (somewhat).
1556 - The "help" and "?" commands take an optional argument that shows
1557 a synopsis string for the given command (unless WANT_DOCSTRINGS was
1560 - String allocations are now more efficient. The situation can still be
1561 improved. However, for the first time Berkeley Mail(1) integrates
1562 harmonically into the system allocator, which may madvise(2) unused
1563 memory to the operating system as necessary and/or possible!
1568 Well, a version number 13 is anyway an ugly thing...
1570 commit 4f534bb33b7c911272cc66a0e3a9e47b73ad8deb
1571 Date: 2012-10-25 20:46:07 +0200
1573 FIX MIME quoted-printable encoding (char cast)..
1578 Well, one of the things that have already been started in v13 is
1579 the turn from using "int" when working with 8-bit characters to
1580 "unsigned char" (and as long as we do not support wide
1583 Unfortunately one very important piece of code, that is handling
1584 encoding to quoted-printable, still used integer instead of
1585 unsigned char, which caused an automatic extension cast to take
1586 place, and that resulted in a messed up output.
1592 I want to give prominence to the following people that helped to improve
1593 S-nail(1) during this development cycle, in order of appearance: Martin
1594 Neitzel, Ezequiel Garzón, Björn Persson, Paul Vojta, and, especially,
1595 John Dodson for warm words from beautiful Australia! Many thanks also
1598 After i've officially forked nail(1) aka Heirloom mailx(1) as S-nail(1)
1599 on 2012-09-18 i have been able to work five weeks almost fulltime on
1600 S-nail(1) development. The first three weeks can be characterized as
1601 hectic fireworks here and there, but then it got better and i was able
1602 to work more or less topic-centric. In the meanwhile S-nail(1) is more
1603 than 230 commits away from the Heirloom base--and drifting further apart.
1605 S-nail(1) v13 is the first release of S-nail(1), but it was forked from
1606 Heirloom mailx(1) 12.5 7/5/10 that arose from Berkeley Mail 8. unless
1607 i'm mistaken. What characterizes S-nail(1) v13?
1609 - The build system has been reworked almost completely.
1610 It is possible to fine-tune which features should be present in the
1611 binary and which don't. The name of the binary can be chosen, and
1612 that choice is reflected all through the manual and the template
1613 resource file. The manual is always complete and thus may document
1614 features that are not supported by the actual binary, though.
1615 Please see INSTALL for more.
1617 - Compiler warnings can now be used. Please see the example WARN= flags
1618 in the Makefile, but '-Wall -Wextra -pedantic' should be silent though
1619 certainly insufficient to reflect the complex work of modern compilers.
1621 - The following recipient address list combines some of the major
1622 improvements that have been made:
1624 <addr1@cdröm.de> (bier) , ./file1,
1625 Steffen Smöregäs (Humbabä) <sauer@bäüer.de> (Hummpäa) ,
1626 sabberlot@träbbel.de , (bier2) <a2@bür2.de> ,
1627 a3@b3.de (bier3) , <a4@b4.de> (bier4, und \"bier5\") ,
1628 |cat > pipe1 , (bier 6) <a6@bür6.de> , ./file2 ,
1629 (co\$mm1) abc1@düf.de (cö,bmm,2) (co\"m\"m.3) ,
1630 co\$bmm1 \"c,ömm2\" co\"m\"m.3 <abc2@däf2.de> , |cat > pipe2 ,
1633 That, on a single line, may be given to ":m" or (quoted) on the
1634 command line, or to "~c" or whatever, and it will work as expected
1635 (well, everything else would be a bug..) and result in the following
1636 sendmail(1) invocation:
1639 <-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>
1641 Date: Thu, 25 Oct 2012 17:12:15 +0200
1643 Cc: Steffen =?utf-8?Q?Sm=C3=B6reg=C3=A4s?=
1644 =?utf-8?Q?_(Humbab=C3=A4)?= <sauer@xn--ber-qla4j.de> (=?utf-8?Q?Hummp=C3=A4a?=),
1645 sabberlot@xn--trbbel-cua.de, moppel@xn--hppel-jua.org,
1646 <addr1@xn--cdrm-7qa.de> (bier),
1647 co$bmm1 =?utf-8?Q?"c,=C3=B6mm2"?= co"m"m.3 <abc2@xn--df2-qla.de>,
1648 (co$mm1) abc1@xn--df-xka.de (=?utf-8?Q?c=C3=B6,bmm,2?=) (co"m"m.3),
1649 (bier 6) <a6@xn--br6-hoa.de>, <a4@b4.de> (bier4, und "bier5"),
1650 a3@b3.de (bier3), (bier2) <a2@xn--br2-hoa.de>
1651 Subject: Re: SubjectTest
1653 Content-Type: text/plain; charset=us-ascii
1654 Content-Transfer-Encoding: 7bit
1659 So list parsing has been fixed, IDNA support has been added, and it is
1660 possible to mix pipe and file recipients *and* multiple thereof, and
1661 the result is still correct for *all* of them.
1662 I think this kind of list can be given wherever a user can directly
1663 enter such a list. And i think all that is unique to S-nail(1).
1665 - When writing back edited messages the target MBOX mailbox can no
1666 longer become "corrupted" when the trailing newline was removed during
1667 the edit. Also affected FreeBSD and NetBSD mail(1).
1669 - A security fix for CVE-2011-2895 was applied.
1671 - The generated Message-Id: is now more human-friendly.
1673 - The -h command line option has been dropped. Use "-O -h XY" if your
1674 MTA really supports that.
1676 - The -O and -r command line options no longer enforce a one-shot send
1677 mode, and instead persist for the duration of the entire session.
1679 - Variables set via the -S command line option are now (un)set twice;
1680 immediately and after all the resource files have been loaded.
1682 - Other new or changed options/commands, in order of appearance:
1683 recipients-in-cc, smime-sign-include-certs, quote-fold, stealthmua,
1684 add-file-recipients, write, rfc822-no-body-from_, rfc822-show-all,
1685 mail/Mail, idna-disable, idna-strict-checks, ??
1687 - In the codebase itself an effort to reduce duplicate work and
1688 introduce caching, and to minimize the use of local variables, was
1689 started, but that is long term. A lot of improvements here and there,
1690 too, like using the well MD5 optimization from Wei Dai, Chris Torek's
1691 hash algorithm for hash tables etc.
1693 - Incredibly important: an heraldic animal was found: snailmail.jpg!
1695 The full history can be inspected by issuing the git(1) command
1697 $ git log --reverse s-nail..s-nailv13
1699 A new TODO has been introduced, and it is getting longer and longer.