1 S - n a i l / S - m a i l x N e w s
2 ====================================
4 v14.9.0 ("Long-tailed tit"), 2017-07-16
5 ---------------------------------------
7 This is a major feature release which took about ~22 months (24
8 less two) of development to complete, and which imposed massive
9 changes under the hood, but also quite a lot of user visible
10 changes, including some **backward incompatibilities**.
11 As usual, "s-nail -d" will show obsoletion warnings.
13 We gain noticeable improvements regarding scriptability and its
14 reliability, but also for interactive use cases, especially
15 notable to users is our completely new M(ailx)L(ine)E(ditor) that
16 supports rather real tabulator expansion and program-mode-context-
17 sensitive key bindings.
19 We now support macros with arguments, which can be `shift'ed,
20 a `return' status can be used, and a `vexpr' multiplexer offers
21 some arithmetic and string operations. `commandalias'es are
22 recursive, further command modifier prefixes, like `ignerr', give
23 a hand that we otherwise could not offer. In compose-mode the new
24 `~^' command escape allows some message and attachment access, and
25 can be used, e.g., to implement things like custom headers, and
26 has been especially designed for scripted access via the new
27 *on-compose-splice* and *on-compose-splice-shell* hooks.
29 S-nail will move (more or less) backward-incompatibly to sh(1)ell
30 compatible argument quoting (documented in "COMMANDS"), and an
31 increasing number of commands do support this already: new ones
32 exclusively, some old ones have either been switched (like
33 `localopts'), others -- noticeably `set' -- can be switched to the
34 new syntax with a `wysh' command modifier prefix. E.g.:
37 # Be careful to choose sh(1)ell-style on _entire_ line!
38 localopts yes; wysh set verbose; ignerr eval "${@}"; return $?
40 ? commandalias call echo boo-boo
41 ? commandalias xv call __xv
43 ? commandalias xv '\'call __xv
46 Calling the latter `xv' for `list' will give more detailed command
47 information, including which kind of argument is used.
49 I have not managed to implement the three features i have started
50 this development cycle for, these are thus subject to further
51 development, just like wysh for message-list argument commands to
52 support, e.g., negation, wysh for `if' and consorts, the --
53 terminator to finally overcome the ridiculous requirement to quote
54 entire shell commands filenames for commands like `pipe.
57 Credits, in order of commit appearance: Antonio Radici,
58 Aharon Robbins, Mike Frysinger, Predrag Punosevac, Michael Convey,
59 Hariskar, Rudolf Sykora, Martin Neitzel, Gavin Troy,
60 Salvatore Bonaccorso, Todd C. Miller, Sergey Matveev, Robert Elz,
61 Mantas Mikulėnas, Respiranto, Jens Schleusener, Walter Alejandro
62 Iglesias, Ralph Corderoy, David Levine, Lyndon Nerenberg,
63 Thomas Dickey, Afan, Justin Ellingwood, Ingo Schwarze,
64 Viktor Szépe, Gaetan Bisson, Juan RP, William Yodlowsky,
65 Hilko Bengen, Matthew Dillon, Colin Watson, Donald Mugnai,
66 Stephen Isard, Jürgen Daubert, Sven Neuhaus, trondd, Ismael Bouya,
67 Felipe Gasper, Paul Eggert, Dr. Werner Fink, Ken Hornstein,
68 Noel Chiappa, Random832, Doug McIlroy, Baptiste Daroussin,
69 Riccardo Ductor, Pietro Cerutti, Jörg Schilling, rain1, Xin LI.
71 We welcome Antonio Radici, Mike Frysinger, Predrag Punosevac,
72 Michael Convey, Rudolf Sykora, Todd C. Miller, Robert Elz,
73 Jens Schleusener, Walter Alejandro Iglesias, Thomas Dickey, Afan,
74 Justin Ellingwood, Viktor Szépe, Juan RP, Matthew Dillon,
75 Colin Watson, Donald Mugnai, Sven Neuhaus, Ismael Bouya,
76 Felipe Gasper, Paul Eggert, Dr. Werner Fink, Ken Hornstein,
77 Noel Chiappa, Random832, Doug McIlroy, Baptiste Daroussin,
78 Riccardo Ductor, Pietro Cerutti, Jörg Schilling, rain1, and
81 Apologies: Sergey Matveev.
82 Members of the Roff community which await progress.
84 mdocmx(7) anchors are denoted by a number-sign #: typing
85 "^A ANCHOR" while reading the man(1)ual in a capable less(1)
86 will scroll to the manual's Point-Of-Interest, and pointing
87 a web- browser to the "#ANCHOR" of the online manual works.
89 NOTES, ChangeLog (packager-affine)
90 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
92 * This release brings some backward incompatibilities, outlined
93 in the following. Most users will not be affected, and we have
94 added a lot of compatibility cruft, but that will vanish in v15.
97 * The configuration and build system has changed.
98 Packagers have received updated package files.
100 o Anything which was WANT_xy before is now OPT_xy, and
101 compiled-in paths and values, like PREFIX or PAGER, have
102 gained a VAL_ prefix (thus VAL_PREFIX and VAL_PAGER).
104 This is _not_ true for non-persistent or environmental values,
105 e.g., DESTDIR, CC, etc., and also not for the overwritable
106 program variables during configuration, e.g., $awk.
108 o SENDMAIL -> VAL_MTA, SENDMAIL_PROGNAME -> VAL_MTA_ARGV0,
109 MAILSPOOL -> VAL_MAIL.
110 And NAIL -> VAL_MAILX, though this is still a lie.
112 o The make system now needs config..build..install or
113 all..install or tangerine (config..build..test..install).
114 Some constants which some experts may want to fine-tune have
115 been moved to config.h. Usual adjustments+doc via make.rc.
117 o The `build' phase can be parallelized by setting the $MAKEJOBS
118 environment variable, e.g., "make MAKEJOBS=-j4 build".
119 Note this variable is not tracked in the configuration.
122 o Unless DESTDIR is set an uninstallation script will be
123 installed along with the rest (see INSTALL file for more).
125 o Set the new OPT_CROSS_BUILD to avoid feature runtime tests,
126 only compile- and link-availability will be tested. (Juan RP)
128 o VERBOSE is implemented straight, but must be given at
129 configuration time in order to become honoured.
132 o ADDCFLAGS / ADDLDFLAGS -> EXTRA_CFLAGS / EXTRA_LDFLAGS.
134 o The LD_LIBRARY_PATH etc. building processes will skip any path
135 which contains the string "fakeroot". (Hilko Bengen)
137 o We honour a set $SOURCE_DATE_EPOCH#577 environment variable to
138 an extend that allows reproducible tests, which is why the
139 repository gained a [test-out] branch with some expected plain
140 text outputs. (reproducible-builds.org; Colin Watson)
142 The new *log-prefix*#416 variable aids in improving the
143 reproducibility of error messages.
145 o These are upward compatible changes.
147 * "make OPENSSL_API_COMPAT=0x10100000 all" should work.
149 * Internal and environment variables are now explicitly _defined_
150 and _tracked_ after variable handling has been rewritten
153 o This means that, e.g., "$ password=NOT_SECRET s-nail" will
154 **NOT** work no more, since *password*#449 is an internal
157 o But if you do, e.g., "? set TMPDIR=~/tmp", then this will
158 also be reflected in the program environment (it is an
159 environment variable) and thus affect child processes.
161 o Therefore we no longer have `setenv' and `unsetenv'.
163 o To integrate any other environment variable transparently
164 into our variable management, the new command `environ'#169
165 needs to be used, e.g., "? environ set NEWVAR=value" or
166 "? environ link EXISTINGVAR".
168 - -H#62 and -L#65 have been decoupled:
169 it used to be -e#59 -L#65 instead!
171 - *NAIL_{HEAD,TAIL}* have been obsoleted in favour of
172 *message-inject-head*#424 and *message-inject-tail*#425.
174 *NAIL_HIST{FILE,SIZE}* have been obsoleted in favour of
175 *history-file*#398 and *history-size*#401.
177 *NAIL_EXTRA_RC* has been obsoleted in favour of
178 *mailx-extra-rc*#419.
180 *batch-exit-on-error* has been obsoleted by *errexit*#379, which
181 works just like the POSIX sh(1)ell "set -e" construct; the
182 `ignerr'#110 command modifier (`-' for command escapes in compose
183 mode, and see below) can be used to ignore command errors even
184 then. (This will remain even if we at some later time will
185 support at least some of the sh(1) constructs which "swallow"
186 failures with set -e.)
188 *bsdannounce* is obsolete, the feature is integrated in
189 *header*#395 as this is much more useful. (This is however also
190 dependent upon the also new but well-known $POSIXLY_CORRECT#575
191 <> *posix*#464, but that is just how it is; these affect more
192 behaviour, and increasing.)
194 - Colour support has been changed backward in- and upward (from
195 user interface side) compatibly, see the manual section
196 "Coloured display"#17.
198 + New commands: `colour'#142 and `uncolour'#143.
199 You can define context-sensitive, terminal-capability-
200 sensitive settings, e.g.:
202 if terminal && [ "$features" =% +colour ]
203 colour iso view-header ft=bold,fg=magenta,bg=cyan
204 colour 256 view-header ft=bold,fg=208,bg=230 subject,from
205 colour mono view-header ft=bold
206 colour mono view-header ft=bold,ft=reverse subject,from
209 + The variable *colour-pager*#365 defines whether colour and font
210 attribute sequences should be generated when viewing something
213 + Set the variable *colour-disable*#364 to turn colour off
214 without affecting established settings.
216 + It is deduced via termcap(5) (see below) whether the terminal
217 supports colors, e.g., "$ s-nail -Stermcap=Co#256".
218 This is also true if we don't have termcap support.
220 + Support for 256-colour terminals. (Gavin Troy)
222 - `source'#259 series support shell pipes if the last character
223 of the "filename" ends with a vertical bar |, e.g.,
225 ? source 'gpg -qd ~/.s-nailrc-private.gpg |'
227 - Shell pipes are also supported as targets for `move'#210,
228 `copy'#147 etc., yet unfortunately not with via a sh(1)ell token
229 parser, so that the target still has to be a single argument.
231 ? copy . '| cat; echo huhu'
233 - Support for custom headers via the new `~^'#322 compose-mode
234 command escape and in addition, or alternatively, with the
235 internal variable *customhdr*#369, which also can be covered by
236 `localopts'#197. (Sergey Matveev)
238 + Support of $ORGANIZATION has been dropped.
240 + Command escape `~e'#302 supports _any_ header.
242 + Command escape `~^'#322 supports _any_ header.
244 - New -:#51 command line option can be used to more easily select
245 which startup files should be loaded, e.g., -:/ loads none.
248 - `account'#122s and *folder-hook*#386s now have `localopts'#197
251 - A first simple form of compose-mode hooks has been implemented:
252 *on-compose-enter*#442, *on-compose-leave*#443 and
253 *on-compose-cleanup*#441 can be set to macros which get invoked
254 at appropriate times.
255 For the `resend'#236 series there is *on-resend-enter*#447 and
256 *on-resend-cleanup*#446: this is very likely to change once
257 true message access is possible even in this mode.
259 An even more powerful mechanism is available via the also new
260 *on-compose-splice*#444 and *on-compose-splice-shell*#445 hooks.
261 These are executed in child processes and communicate with the
262 parent via their standard input and output, and therefore can
263 do anything and act as if they were the user.
265 `localopts'#197 are enabled and cannot be disabled (and extend
266 until the message is sent).
267 (Jens Schleusener, Rudolf Sykora)
269 ? set on-compose-splice=ocs
272 echo Splice protocol version is $ver
274 read hl; vput vexpr es substring "${hl}" 0 1
276 echoerr 'Failed to read header list, bailing out'
278 elif [ "$hl" @i!% ' cc' ]
279 echo '~^header insert cc Diet is your <mirr.or>'
280 read es; vput vexpr es substr "${es}" 0 1
282 echoerr 'Failed to insert Cc:, bailing out'; echo '~x'
287 - "The .netrc file"#36
289 + gained support for comments.
290 (Walter Alejandro Iglesias, Ralph Corderoy)
292 + `netrc'#213 now has a "load" subcommand.
294 + the new *netrc-pipe*#437 obsoletes OPT_AGENT and
295 *agent-shell-lookup*, and can be used to load an encrypted
298 ? set netrc-lookup netrc-pipe='gpg -qd ~/.netrc.gpg'
300 I.e., this is in usual .netrc syntax and thus possibly much
301 nicer than saying "? source 'gpg -qd ~/.credentials.gpg |'".
303 - termcap(5) / terminfo(5) support has been changed backward in-
304 and upward (from user interface side) compatibly, please read
305 "On terminal control and line editor"#16.
307 + OPT_TERMCAP is by default enabled.
308 The new, by default enabled, configuration option
309 OPT_TERMCAP_VIA_TERMINFO can be used to (try to) use
312 + The variable *termcap*#540 can be used to freely define or
313 override terminal capabilities, and *termcap-disable*#542 will
314 disable interaction with the chosen library, leaving only
317 To use the so-called ca-mode on supporting terminals,
318 effectively turning S-nail into a fullscreen application,
319 *termcap-ca-mode*#541 must be set.
321 + The built-in line editor has been rather completely rewritten
322 to be the Mailx-Line-Editor (OPT_MLE, default yes), and
323 supports wide glyphs (if possible), infinite line lengths
324 (2 GB) and more. Tabulator expansion is no longer an option
325 (but needs fnmatch(3)).
327 + Optionally (OPT_KEY_BINDINGS, default yes) it has become
328 possible to freely define key bindings for the MLE via the new
329 `bind'#131 and `unbind'#132 commands. These key bindings can
330 make use of termcap(5) and/or terminfo(5) names. The MLE will
331 install a set of default bindings (unless there is a set
332 *line-editor-no-defaults*#415), more so with OPT_TERMCAP,
335 Sufficient support provided, one can now, e.g., type "p " and
336 then collect the message numbers to type, scrolling forward
337 and backward via key-bindings, without loosing the line
338 content, then commit the final line.
340 + OPT_EDITLINE and OPT_READLINE support have been dropped.
341 The new MLE should not miss anything. Does it?
342 Tip: in an UTF-8 locale try "? !touch /tmp/hall{,öchen}" and
343 then autocomplete that: once, then ^Q, and again.
345 - `source'#259 can be used in `call'#133ed macros.
346 What sounds so innocent replaced an entire machinery and got rid
347 of a brilliant idea of Kurt Shoens from the 70s, but which never
348 worked with Nail/Heirloom extensions, namely macros, and in the
350 Accompanying this -X#79 can (dig multiline arguments and can) be
351 used to define macros and run them etc. Should work:
353 $ s-nail -X'define x {' -Xversion -Xx -X'}' -X'call x'
354 $ s-nail -X'source \' -X'"echo version|"' -Xx
356 Macros can be `undefine'#152d from within themselves, and re-
357 `define'#151d. It is still not possible to define macros
358 from within macros, and/or have inner macros, not to talk
359 about local scoping or anything more sophisticated such.
361 - -u#76 / $LOGNAME#566 ($USER) handling has been redefined,
362 and "-u USER" is now exactly the same as "-f %USER", and
363 $LOGNAME (and $USER) is actively set to the active user. (Afan)
365 $LOGNAME#566 is POSIX standardized and henceforth used and
366 preferred over $USER, which came from BSD. (Todd C. Miller)
368 - In the future (at least non-message-list) argument handling will
369 be changed backward-incompatibly to be sh(1)ell compatible (and
370 thus POSIX standardized), see "Shell-style argument quoting"#23.
371 New commands use it already today (`bind'#131, `colour'#142,
372 `headerpick'#188), some others (most importantly, `set'#247) can
373 be forced to do so via the new `wysh'#112 command prefix, as in:
375 ? wysh set message-inject-tail=$'\n--steffen'
376 ? bind base $'\cA,\x61' 'echo control-A and small a'
378 - We now actively manage *umask*#547: 0077 by default, but an
379 empty string will use the setting that is active upon startup.
380 Just like changes to (known) environment variables, this setting
381 will also be inherited by any child process.
382 (Walter Alejandro Iglesias)
384 - Anything SENDMAIL / *sendmail*-ish has been renamed to *mta*#432,
385 *mta-arguments*#433, *mta-no-default-arguments*#434 and
388 The reason is that in v15 we won't even have *smtp*: it is just
389 another form of MTA, and thus obsolete by itself.
390 Note that *mta-arguments* is now parsed via the shell-token
391 parser, so the following ends up exactly as desired.
393 ? set mta-arguments='-t -X "/tmp/my log"'
395 For now we support a hack that understands a file:// URL in
396 *mta*, too, but that is also the default if there is no protocol.
397 E.g.: "? set mta=smtp://a:b@xy.z"
399 - The "spamd" *spam-interface*#513 is obsolete. I haven't tested
400 it since my main machine died, it is error prone since it assumes
401 internals of the spamassassin wire protocol, and there never was
402 a speed improvement over "spamc". (However it could react upon
403 the "is-spam" state of a message, which "spamc" doesn't allow.)
405 - The new *inbox*#409 variable will henceforth be looked up when
406 searching for a primary system mailbox (as in "? File %"),
407 followed by the usual $MAIL#567 and compile-time defined local
408 mailspool search. (Stephen Isard, Jürgen Daubert)
410 - The semantic of -a#53 and `~@'#296 have been changed, and both
411 commands now use the same syntax:
413 -a file[=input-charset[#output-charset]]
415 - New "failinvaddr" keyword for *expandaddr*#381.
417 - We finally "can" the so-called (by myself) "Dr. Problem" (a bit):
420 $ </dev/null s-nail -d:/ -sTrödler 'Dr. D. Iet <z@a.k>' 2>&1 |\
422 s-nail: >>> To: "Dr. D. Iet" <z@a.k>
424 This can be done via the new `addrcodec'#124, too, note this
425 supports multiple modes (and the `vput'#111 command modifier):
427 $ echo 'addrcodec e Dr. Diet <to@fu.soj> Curd' | s-nail -#:/
428 "Dr. Diet Curd" <to@fu.soj>
430 - All commands with the string "codec" in their name use different
431 argument quoting, namely none at all, please read
432 "Raw data arguments for codec commands"#24.
433 This means that `urlcodec'#276 (and `imapcodec'#605) has
434 slightly changed semantics.
435 And, while here: there is a new `shcodec'#249, too.
437 - We gained "Command modifiers"#20: `\'#109 (avoid expansion of
438 `commandalias'#144es), `vput'#111 (store result in variable),
439 `ignerr'#110 (ignore an error of the following command, even
440 if the new *errexit*#379 is set), `wysh'#112 (use shell-style
443 $ echo 'vput cwd resvar;echo $resvar' | s-nail -#:/
444 /home/steffen/src/nail.git
446 And the usual sh(1) stuff: `return'#242, `shift'#253, `eval'#171,
447 plus a `xcall'#285 stack-avoidance optimization (to be used in
448 place of a `call'#133 which would be the last called command).
449 And an "expr(1) like thing", yet simple, `vexpr'#281.
451 $ echo 'vexpr + 1 2' | s-nail -#:/
452 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000011
454 $ echo 'vput vexpr resvar + 1 2;echo $resvar' | s-nail -#:/
457 We actually start walking (*?*#323, *^*#325).
459 ? vput vexpr res regex 'bananarama' 'Bana(.+)' '\$1\$0'
460 ? echo $?/$^ERRNAME :$res:
462 ? vput vexpr res iregex 'bananarama' '(.+)rama' '\$1\$0'
463 ? echo $?/$^ERRNAME :$res:
464 0/NONE :bananabananarama:
466 The command `vpospar'#282 can be used to manage the stack of
467 positional parameters, i.e., much like "set --".
468 It also offers the possibility to save and restore the stack to
469 and from variables. Etc.
471 Btw., to contact the maintainer (make.rc variables
472 VAL_CONTACT_WEB and VAL_CONTACT_MAIL):
474 ? echo $contact-web; eval mail $contact-mail
476 - `if'#194 no longer performs automatic number conversion, we
477 use the explicit -lt, -gt etc. syntax of the sh(1).
478 Note: `if' will change to be almost identical to sh(1) if(1),
479 so please ensure proper test bracketing, even if it is less
482 Moreover, the default string comparison mode has changed to
483 case-sensitive, just like in the shell. This is because in the
484 future this crux with trigger characters will vanish and `if'
485 etc. will simply slurp in already expanded shell tokens, it will
486 act like the shell in that respect. We have modifiers, though,
487 yet only "@i" for case-insensitivity, also for regex matches:
490 i=`LC_ALL=C.utf8 s-nail -:/ -# -X '
492 \if [ "${ttycharset}" @i=% utf ]
497 \wysh set LC_ALL=${1}
499 \eval xcall cset_test "${@}"
503 \call cset_test C.UTF-8 POSIX.utf8 POSIX.UTF-8 \
504 en_EN.utf8 en_EN.UTF-8 en_US.utf8 en_US.UTF-8
506 [ $? -eq 0 ] && UTF8_LOCALE=$i
508 Please note the `eval' in 'eval xcall cset_test "${@}". This is
509 a difference of S-nail/mailx and the sh(1)ell that will remain,
510 as documented in "COMMANDS"#19: whereas the shell implements
511 a language and performs standardized expansions on the line
512 until finally the command is called, S-nail will decide the type
513 of command line parsing dependent on the seen command, and will
514 then perform a single expansion. Therefore "${@}" will expand
515 to multiple arguments if $# is greater 0, but it will expand to
516 the empty string otherwise, which is not furtherly expanded away
517 since it is meaningless like it is in the shell: therefore $#
518 will be 1 (the empty string) not 0.
520 - Using an explicit proto:// prefix should get you the desired
521 thing apart of *newfolders*#438, e.g.:
523 ? File maildir:///tmp/x.mdir
524 ? copy * file:///tmp/x.mbox
526 - New variable *record-files*#475 can be set to extend the meaning
527 of *record*#474. *record-resent*#476 was there already.
529 - New variable *ifs*#405 acts a bit like the sh(1)ell's $IFS for,
530 e.g., the new `read'#227 command.
532 There is a `readctl'#228 command which can be used to manage
533 the active channel used by `read'#227.
535 - The `~' alias for `call'#133 is gone.
537 - `mimetype'#202 only allows specification of a single type per
538 call, on the other hand no need to quote that.
540 - `mimeview'#206 must now be used explicitly to look at any
541 non-text MIME part, for normal display etc. purposes we only
542 support "copiousoutput"#592 MIME handlers.
544 - New *socks-proxy*#512 can be used to proxy all network traffic
545 over a SOCKS5 proxy. (Gaetan Bisson)
550 - The manual has seen another major overhaul, all the variables
551 are now documented in a single, sorted list, and many
552 clarifications should have been added. I hope it has become
554 (Predrag Punosevac, Michael Convey, Hariskar, Rudolf Sykora,
555 Respiranto, Thomas Dickey, Donald Mugnai)
557 - To support RFC 1524 a.k.a. .mailcap files (see below) many
558 "trigger"-characters have been added for *pipe-TYPE/SUBTYPE*#451,
559 which may (rarely) affect existing values.
560 The .mailcap support itself is not yet implemented.
562 - *mime-counter-evidence*#429 gained bit 4 (perform proper in-depth
563 content inspection as necessary; set to 0xE for all bits).
566 - Maildir paths are now created recursively as necessary.
569 - -M#66 and -m#67 options have been added to enforce a special
570 send mode that will flag standard input / the given file with
571 the specified / detected MIME 'Content-Type:'. This can be used
572 to directly send, e.g., HTML log output.
573 (Viktro Szépe, Ralph Corderoy)
575 - Disallow symlinks on writable files. Note this requires
576 O_NOFOLLOW support for the operating-system-call open(2), but
577 which has been standardized a long time ago.
580 - `retain'#241, `ignore'#195 etc. now differentiate in between
581 From (the From: header) and From_ (the MBOX ident).
583 In fact we now have a new `headerpick'#188 command which
584 is a multiplexer for all retain and ignore lists used, call it
585 without arguments to see the current setting(s).
586 In v15 only `headerpick' and the standard-imposed wrappers
587 `retain' and `ignore' will remain, all other wrappers will
588 vanish. Regular expressions can now be used if available:
591 headerpick type retain blahblahblah cc date from \
592 mail-followup-to message-id openpgp reply-to subject to \
594 #headerpick type ignore currently covers no fields
595 #headerpick save retain currently covers no fields
596 headerpick save ignore '^Original-.*$' '^X-.*$' '^DKIM.*$'
597 headerpick forward retain cc date from list-id \
598 mail-followup-to openpgp reply-to subject to
599 #headerpick forward ignore currently covers no fields
601 - `top'#268 has been rewritten completely, `Top'#267 is new.
602 It uses a built-in set of retain/ignore headers, but it is
603 possible to register a custom set via `headerpick'#188.
604 Also, *toplines*#543 has been extended a bit and the new
605 *topsqueeze*#544 variable may pimp your `top' experience.
607 ? headerpick top retain add subject
609 [-- Message 1 -- 87 lines, 4791 bytes --]:
610 Subject: Re: I can't dist to myself
613 3.22. bounce_delivered
615 - `features' has been dropped, `version'#280 extended.
617 - The *prompt*#466 handling has changed: we lost the capability to
618 expand \?, \@ and \$, instead new "private" variables *?*#323,
619 *account*#334, *mailbox-resolved*#418 and
620 *mailbox-display*#417 have been introduced, and the prompt
621 is completely shell expanded (thus twice with `wysh' or in v15),
622 as if dollar-single-quote quoted. We do support the reverse-
623 solidus escaped bracket notation for embedding characters which
624 should not be counted when calculating the width of the prompt.
625 The `colour'#142 command has a slot for the prompt colour.
626 We gained *prompt2*#467 as a second level prompt.
630 prompt='?\${?}!\${!}[\${account}#\${mailbox-display}]? '
632 - The filename "-" can be used as a receiver, e.g.,
634 $ echo Hey,\ you | s-nail -:/ -Sexpandaddr -sUB -
636 - The -s#74 command line option, the `~s'#314 command escape
637 as well as the corresponding slots of `~^'#322 will actively
638 strip [\r\n] from their value (Debian #419840).
640 - New `read'#227 and `echoerr'#162 commands, mostly for
641 *on-compose-splice*#444.
642 But also `echon'#163 and `echoerrn'#164, which do not write
645 - New variable *r-option-implicit*#472 may be helpful to those
646 who regulary need the functionality of the -r#72 command
647 line option. (Felipe Gasper, Martin Neitzel)
649 - By using new "pseudo-URLs" one can automatize the use of S/MIME
650 keys / (certificates / intermediate include certificates) with
651 passwords. E.g., to drive bob@exam.ple, set
652 *smime-sign-cert-bob@exam.ple* to the private key / certificate
653 pair as usual, the password lookup will then be performed for
654 bob@exam.ple.smime-cert-key, bob@exam.ple.smime-cert-cert and
655 bob@exam.ple.smime-include-certs.
656 Like this the password can be stored in an encrypted .netrc file
657 when *netrc-lookup*#436 and *netrc-pipe*#437 are set, or it may
658 be stored in an encrypted resource file that has been loaded via
659 `source'#259 as a simple *password*#449 variable.
661 Note that the prompting that happens as a last resort of
662 password lookup will still interfere with a possibly running
663 $PAGER#573 instance, dependent on the setting of *crt*#368, of
664 course. Proper job control handling and recognizing that we are
665 running $PAGER when doing that prompt is a TODO for v15. Sorry.
667 - Some commands, like `set'#247, `help'#191, `list'#196,
668 `mlist'#204 etc., now react upon the setting of *verbose*#550
669 and(/or) *debug*#372.
671 - `write'#284 uses iconv(3) as appropriate.
673 - *mbox-rfc4155*#421 has first been dropped, and was then
674 reintroduced with different semantics. Because, it can be
675 helpful if a messed up MBOX is read, in which case we henceforth
676 will warn you and point you to this:
679 \localopts yes; \wysh set mbox-rfc4155;\
680 \wysh File "${1}"; \eval copy * "${2}"
682 ? call mboxfix /tmp/bad.mbox /tmp/good.mbox
684 P.S. Here you see how weird the current thing still is, in v15:
687 localopts yes; set mbox-rfc4155; File "${1}"; copy * -- "${2}"
690 And also in v15 we will not apply (proper) so-called MBOXO
691 quoting, but instead (simply MIME) re-encode mail messages.
693 - `call_if'#134 is new and, different to "? ignerr call", silent
694 and not messing with the return status.
696 - The new *smime-ca-flags*#498 and *ssl-ca-flags*#526 can be used
697 to fine-tune X509_STORE_set_flags(3) a.k.a the X509 CA
698 certificate verification.
700 ? set ssl-ca-flags=partial-chain
701 ? wysh set smime-ca-flags="${ssl-ca-flags}"
703 Also, *ssl-curves*#531 for TLSv1.3.
705 - Socket connections use TLS S(erver)N(ame)I(ndication) as
706 appropriate (RFC 7817).
708 - `alternates'#127 checks arguments and supports `vput'#111.
709 It by default no longer replaces but appends alternates, unless
710 *posix*#464 mode is active. There is a new `unalternates'#128
711 command to remove alternates.
713 - A new `charsetalias'#137 command. (Pietro Cerutti, mutt#3925)
715 - New commands `filetype'#175 and `unfiletype'#176: in the future
716 we will no longer know any builtin filetypes, in fact we already
717 simulate .gz etc. via the new mechanism as necessary:
720 bz2 'bzip2 -dc' 'bzip2 -zc' \
721 gpg 'gpg -d' 'gpg -e' \
722 gz 'gzip -dc' 'gzip -c' \
723 xz 'xz -dc' 'xz -zc' \
724 zst 'zstd -dc' 'zstd -19 -zc' \
725 zst.pgp 'gpg -d | zstd -dc' 'zstd -19 -zc | gpg -e'
727 - `~<'#294 now offers a "- [HERE-delimiter]" mode for pasting etc.
730 - `exit'#172 and `quit'#226 take an optional exit status.
731 (That is not fixated yet, though.)
733 - We have a useful -h / --help output. (Doug McIlroy)
735 - *encoding* obsoleted in favour of new *mime-encoding*#430, which
736 now defaults to base64.
738 - *allnet*#336 now works (broken since nail 10.00, 2002-09-29).
740 git(1) shortlog (abbreviated)
741 '''''''''''''''''''''''''''''
743 f01291d extract_date_from_from_(): dig more invalid MBOXes (Antonio Radici)..
744 69bf721 *pipe-TYPE/SUBTYPE*: add "@" triggers and $NAIL_FILENAME_TEMPORARY..
745 bb5d0e2 *pipe-TYPE/SUBTYPE*: add "!" trigger ("needsterminal")
746 df8768b Add *mime-counter-evidence* bit 4 (Aharon Robbins)..
747 d3fe980 Ftmp(): drop "mode" argument (not wrong: Mike Frysinger)..
748 86159db nail.1: we support searching, really (Predrag Punosevac)
749 5b61a08 nail.1: talk about address lists (again) (Michael Convey)..
750 0eeffc4 nail.1: try improve states / MBOX etc. relation (Michael Convey)
751 43ea039 nail.1: what is an environment variable (Michael Convey)
752 13e0804 nail.1: fix typo (Hariskar (archlinux Wiki))
753 03d6af5 nail.1: more on sortability (Rudolf Sykora)..
754 4da9043 Not "binary", but "boolean" variables! (Predrag Punosevac)..
755 7064ef2 Add *message-inject-{head,tail}*, obsolete *NAIL_{HEAD,TAIL}*
756 4fde608 Add *history-{file,size}*, obsolete *NAIL_HIST{FILE,SIZE}*
757 36578d1 Add PS_SETFILE_OPENED (affects hooks), *bsdcompat*<>*emptystart*..
758 600d449 Drop the `inc' alias of and for `newmail'
759 5296040 Decouple -H from -L: it used to be -eL instead!
760 dad4e94 Obsolete *SYSV3*
761 c85f56d Support :d specifier for at least `from' (Martin Neitzel)..
762 30d0bb7 `netrc': add "load" subcommand to only load, not also "show"
763 b12e1ed Be more friendly when composing mails (Martin Neitzel)..
764 b50eac0 nail.1: use display/show not type/print (Michael Convey)..
765 6feafaf Add `search' alias for `from' (Predrag Punosevac)
766 a4e2612 Support 256-colour terminals (Gavin Troy)
767 16b57ab Drop `mono'+, change `colour' and `uncolour' commands..
768 d535db0 Implement `dotmove': move the "dot" up or down by one
769 c1c1ee5 `source': support shell pipes (if filename ends with "|")
770 8655aff Error framework: print UAGENT prefix (ident in pipes; Salvatore
772 e96baaa Introduce $LOGNAME, the POSIX equivalent of $USER (Todd C. Miller)
773 0d0c523 Support |PIPE targets for `move', `copy' ++..
774 76e6364 Add `customhdr' (Sergey Matveev)..
775 ad58c91 Support *customhdr*, too (Sergey Matveev)..
776 6322e0a Support _any_ user header via ~e (Sergey Matveev)..
777 19b3afb Drop support for $ORGANIZATION in favour of `customhdr'
778 77d4f5c Fix SSL init order, change *ssl-rand-file* behaviour..
779 8daeda9 send.c:sendpart(): "support" malformed messages..
780 eddf684 Drop *print-all-chars*
781 f733f61 Don't set *dot* in -# batch mode
782 5d52578 Add -: command line option (Robert Elz)..
783 53b5f07 README: use git(1) --single-branch (Mantas Mikulėnas)
784 420131f Fix mispelling: can|to be send->sent (Respiranto (archlinux Wiki))
785 0dd85b1 n_iconv_open(): use *charset-unknown-8bit* also for "binary"..
786 3fd94e3 Default `localopts' to YES for `account' and *folder-hook*s!
787 983d22f `if'+: allow "if ${VARNAME}" in addition to "if $VARNAME"..
788 d6902e1 Add *on-compose-{enter,leave}* hooks (Jens Schleusener, Rudolf
790 abf2e5d .netrc: support comments (Walter Alejandro Iglesias, Ralph Corderoy)..
791 37e0c26 nail.1: .netrc comma separator was in original Berknet parser! (Ralph
793 7e85aa9 Drop WANT_EDITLINE support..
794 512069b Rewrite for a generic termcap(5) interface..
795 40522c3 nail.1: use -v option to cat(1) if available (Thomas Dickey)
796 cf3ccfe Deduce colours via *termcap* instead!; support all/*..
797 64eabef Turn NCL into M(ailx) L(ine) E(ditor)..
798 27f3e9d Add terminfo(5) support (via WANT_TERMCAP_PREFER_TERMINFO)..
799 1aa64b6 Add WANT_KEY_BINDINGS..
800 d935e65 (BWDIC!) Allow `source' in `call'ed macros..
801 c8c1393 n_lex_input(): truly support line continuation via backslash..
802 7f52ae7 make.rc+: add WANT_NOMEMDBG to allow valgrind(1)+ with DEBUG/DEVEL
803 2497240 homedir: if not $HOME, use pw_dir (of $LOGNAME or getpwuid())
804 94b3635 (BWDIC!) make.rc: add defaults _here_ (as VAL_xy, e.g., VAL_SENDMAIL!)
805 f0ac705 (BWDIC!) Rewrite variable handling..
806 724751e nail.1: drop `(un)?setenv' and *bsdset*; add `environ'
807 f4577e6 FIX (fix?) `localopts'..
808 d8f7cd7 (BWDIC!) Redefine -u / $LOGNAME / $USER (Afan)..
809 e337e00 Support expansions in $MAIL!; more on `account's (Afan)..
810 d596d74 Compare *newfolders* case-insensitively (Justin Ellingwood)..
811 57744f9 Redefine *folder* / getfold->folder_query() / *HOME* (Justin
813 3c57c83 n_path_mkdir(): create recursively as necessary (Justin Ellingwood)
814 66553bc `list': with non-WS argument, don't sort alphabetically
815 b95e6be Introduce `wysh' command prefix to change argument parser..
816 08b8f48 Only support sh(1)-style quoting for some new commands..
817 67c2acb (BWDIC!) Only use new sh(1)-style quoting for attachments!
818 f4b0153 (BWDIC!) Only use new sh(1)-style quoting for `write'
819 a89e1e3 `remove': use sh(1)ell-style quoting
820 858374b Drop wordexp(3), instead unroll via fnmatch(3)..
821 0945726 MLE: change HT expansion..
822 0bbe981 nail.1: fix spelling errors as by igor(1) (Ingo Schwarze)
823 f1a775b Add -M and -m options (Viktor Szépe, Ralph Corderoy)..
824 42b42da `list': include argument-type etc. if *verbose*
825 79f2053 `if'+: support sh(1)-style comments on the line..
826 1bd8e48 Add *umask*, and set actively (Walter Alejandro Iglesias)..
827 6b1cd93 Now with *umask*, just drop fchmod(2)++ calls (Walter Alejandro
829 2b45cd0 Add *netrc-pipe*: allows e.g. encrypted .netrc files
830 af8261e Obsolete WANT_AGENT / *agent-shell-lookup* (Sorry!)
831 ba22166 Change make targets; add $MAILJOBS; don't track $DESTDIR (Gaetan
833 cd244b1 Add WANT_CROSS_BUILD make.rc option (Juan RP)..
834 95141f6 Tweak VERBOSE handling (William Yodlowsky)..
835 73545ad Rename ADD(C|LD)LAGS to EXTRA_(C|LD)FLAGS..
836 ca81646 make.rc, mk-conf.sh: allow y/n booleans
837 d74a18a mk-conf.sh:path_check(): skip any "fakeroot" path (Hilko Bengen)
838 7ce6a17 (BWDIC!) nail.rc: nodot, emptystart, fullnames, m-c-e=0xE; pimp PDF
840 44a3be6 sendout.c:__savemail(): try to file_lock() *record*
841 5ef5261 cmd2.c:save1(): try to file_lock() target of `save'/`move'/etc.
842 10990e4 Add n_O_NOFOLLOW, disallow symlinks for writable files (Matthew
844 c83e153 (BWDIC!) Require explicit "from_" to `retain' etc. From_ lines!
845 d7a15e4 page_or_print(): query $PAGER environment, use it
846 1dc9bb6 (BWDIC!) Make `top' real-life capable! Add `Top', *topsqueeze*..
847 df4954c Add $SOURCE_DATE_EPOCH (reproducible-builds.org; Colin Watson)
848 dc92f2c savedeadletter()->sendout.c; tweak POSIX compliance (Ralph Corderoy)
849 8a3638c MLE: add `bind' and `unbind' etc...
850 4c93f66 (BWDIC!) Obsolete *sendmail*++ in favour of *mta*++; obsolete *smtp*..
851 284db64 Obsolete *spam-interface*=spamd..
852 61aac0f All: OPT_ not WANT_, VAL_XY not XY..
853 45d488d README: add The Mail Archive -- Gmane.org reduced to NNTP
854 48eb7da SEND_TODISP(_ALL)?: append newline if message does have no final one
855 63bf464 (BWDIC!) Drop readline(3) support..
856 863f1e8 tty.c,MLE: gracefully honour *line-editor-disable*++..
857 844bedb Support LEXINPUT, thus `bind', contexts..
858 b9e4e61 Drop `features', change `version', adjust make system..
859 20f3cd2 nail.1: more explicit `set' references instead of saying 'Set' (Donald
862 1b462ed -#: also set *MAIL* to /dev/null
863 2d53b46 url_parse(): better take better care for path parts (Stephen Isard)..
864 21f0eaa mk-conf.sh: find terminfo on Sun (Thomas Dickey)..
865 4496e9a Many: drop support for *mbox-rfc4155* - a no-brainer..
866 e4ddaa8 Change n_iconv*() protos, add enum n_iconv_flags (Ralph Corderoy)..
867 83313f1 Allow -X options to take multiline arguments..
868 a1eee83 Add a RFC 6068 url_mailto_to_address() hack for List-Post:
869 99e96f3 FIX "," message specification (since [1c4b8c9], v14.8.4)..
870 1587069 FIX [44cec1f] (Fix "address" message specifications (John Dodson))..
871 e40e181 nail.1, nail.rc: set *sendwait* by default (Ralph Corderoy)
872 3051546 Move `help' to lex_input.c, show argument type with *verbose*
873 0ef4291 `z': add ^: goes to first screen; fix max calc for 0 modulos
874 7adcf99 `write'++: !interactive: urlxenc() attachment paths (Ralph Corderoy)..
875 b14aae7 `write'++: !interactive:.. But now, really (Lyndon Nerenberg, David
877 20082ee THANKS: David Levine and Lyndon Nerenberg
878 5270bf1 Simplify *folder* (implicit trail solidus) (Stephen Isard, Ralph
880 f1313c0 Add `urlcodec', obsolete `url{en,de}code'
881 a638bcf Add *typescript-mode*, set it for -# (Ralph Corderoy, Martin
883 053e19f Add *inbox* (Stephen Isard, and Jürgen Daubert)..
884 20e3240 Add OPT_ALWAYS_UNICODE_LOCALE (Predrag Punosevac)..
885 14b5a3a Make combinetime() overflow safe (Vincent Lefevre)..
886 2bf0888 getmsglist(): if user gives A-B, try fulfill even in threaded mode
888 3fa035ac mk-conf.sh: fix bmake(1)/portable, it fails to import
890 7a657d9c cc-test.sh: add S/MIME disproofs via smime(1) (Sven Neuhaus)..
891 a445996e THANKS: Sven Neuhaus
892 de8f750b n_termcap_suspend(): oops, fix capability reverse ke<>te, te<>ke
893 9e08fe35 README: go away from Gitlab; hello, unagitated repo.or.cz!
894 ae86c884 cmd1.c:__hprf(): compensate for add. bytes of UTF-8 seq.(s) (Martin
896 38426102 extract_header(): FIX: multiple In-Reply-To: names are allowed!
897 0472b0d6 More or less completely rewrite memory.c..
898 096e6021 Allow Base64 and QP en- and decoding to fail
899 d91a4bd0 More or less completely rewrite mime_enc.c..
900 d33285fa `bind': new "default" context and changed "base" semantics..
901 abf00559 (BWDIC!) Rewrite prompt handling via new n_tty_create_prompt()..
902 38fd5de7 (BWDIC!) *encoding*: change default to base64, provide
904 83115c3b Allow - as an output filename..
905 675d825b nail.rc, nail.1: set *editheaders* by default, and pimp "A starter"
906 44ff5125 TLS/SSL: make OPENSSL_API_COMPAT=0x10100000 clean..
907 03309960 The time has come: $POSIXLY_CORRECT, *posix* have arrived
908 975e6869 (BWDIC!) Only rm sysboxes, unless *posix* (Walter A. Iglesias,
910 a3a1d38e Add `headerpick'; Localize stuff, and rename ignoretab.c ->
912 81e33751 Throw away file_expand() (Ismael Bouya)..
913 f1fdc933 THANKS: Ismael Bouya
914 3779baad Obsolete -E and -B (-> STDOUT always LBF, STDIN with -#)
915 0352f2f6 -s, ~s: normalize NL/CR characters (Debian #419840)
916 791c5e97 Give error if compose failed (later better; Debian #37104)
917 5026ea36 MLE: take advantage of new "default" `bind' context
918 7745ea13 cmd_tab.h: allow `source', `source_if' and `shell' during composing?!
919 c7d42236 Add *on-compose-done-shell* hook
920 e4499f98 Add ~^ plumbing command escape
921 d8737937 Add a `read' command (like read(1), but yet a bit basic)
922 f8e9cc30 Drop `customhdr' again (keep *customhdr*): `~^' is better!
923 0824682c collect(): fix twice dump of -q file (since [d6902e1], 2016-05-03)
924 5ae556f8 Add *r-option-implicit* (Felipe Gasper, Martin Neitzel)..
925 534fd725 THANKS: Felipe Gasper
926 9fc22b15 Final step to support Base64 with multibyte charsets..
927 a8897b02 Add an *on-compose-done* macro (running in a subprocess)
928 645e44ec BWDIC! Add `echoerr'; FIX *bang* (bwdic!); and some cmd*.c ordering
929 629035e1 Dump to a "-" file recipient even with *debug* enabled!
930 33709163 nail.1: some more words for *inbox*, and such sort (Stephen Isard)
931 88c19049 mk-release.inc: place OpenPGP signatures last (learned from Paul
933 ebf2a584 THANKS: Paul Eggert
934 3d7835fc (BWDIC!) Extend semantics of -a and `~@' (bwdic!); attachments for
936 2b33a8cb Add new "failinvaddr" keyword for *expandaddr*
937 0ede309c Rudely fix the RFC 5322 dot-atom, the "Dr. Problem" (Dr. Werner Fink)
938 261f205b THANKS: Dr. Werner Fink
939 e441efb4 Integrate S/MIME passwords into usual credential lookups (a bit)..
940 1ad6817d nail.1: disable "The Mailcap files" for v14.9.0; sigh and sorry
942 f797c27e FIX privsep.c, yes, vulnerability (wapiflapi)..
943 847a21b5 THANKS: wapiflapi
944 f2699449 FIX privsep.c vulnerability, II (forgot hostname!) (wapiflapi)
945 303d46cd FIX [3d7835fc] aka `~^' attachments, especially Content-ID: (Ralph
947 4ce4eb55 privsep.c: and just verify the box is also in CWD (wapiflapi)
948 88253be0 send.c:sendpart(): iconv(3) when `write'ing to a file!
949 1b1d7184 *on-compose-leave*: allow *autob?cc* from within
950 374ccb98 Implement some command modifiers, allow recursive `ghost' expansion..
951 ef903a66 Sigh. So, reintroduce *mbox-rfc4155*, but slightly different!
952 0dc7ad9b Disallow turning off `localopts' in compose-mode hooks..
953 25d9e6e2 Generate Content-ID: as applic. (Ralph Corderoy, Ken Hornstein, David
955 17706f28 THANKS: Ken Hornstein
956 76583f83 (Heavily) Tweak [8daeda90], "really support" malformed messages..
957 b8bcff9d Implement `call_if'
958 e6895402 main.c:_setup_vars(): verify $HOME and $TMPDIR
959 084d7e9e (BWDIC!) NAIL_ -> MAILX_, or even drop!..
960 24fe9387 `show': no more colours, they counteract its purpose!?!
961 b034478f INSTALL,makefile: $MAKEJOBS, not $MAILJOBS
962 8af80164 `call': parameters via *[*@#]*, *[1-9][0-9]**; add *?*, drop
964 4c7be869 `file'+: reallow globbing for arguments, fnmatch(3) is save!
965 8389819e Add *-alternates*, check `alternates' arguments
966 c6e0b04e Implement `shift', to shift macro parameters
967 6c39d928 Security fix: never fall back to getenv(3)..
968 65bb8d98 Implement `return', to return from macros and accounts
969 4eadbd76 Support getrandom(2); revert stupid [5d345bd0]: OpenBSD has
971 c11ef2cb The lunatic is on Solaris..
972 b274e20a Improve *expandaddr*=failinvaddr even interactive, e.g., with ~e..
973 b421c15b (BWDIC!) Drop usage of strtou?l() in favour of our own n_idec_*()..
974 682a7595 (BWDIC!) Add n_source_inject_input(), get rid of some hacks..
975 57e84415 Implement `vput' modifier: store result in variable..
976 197bea7c Implement `addrcodec'
977 437da9fd (BWDIC!) New `urlcodec' semantics
978 cd0cfc16 Implement `vexpr', something analogues to expr(1)
979 3e40e899 `call', `~': do not require `wysh' for new quoting rules
980 ce8c357c Implement `eval'
981 0ff45bde Fix *[*@#]*/*[1-9][0-9]** access corner cases; allow over-`define's..
982 acc9b2f3 *reply-strings* was falsely documented as *reply_strings*..
983 70e9de08 `history': support relative to top access (negative numbers)
984 c8f6c18d `ghost': avoid self-recursion
985 6409c886 nail.1: clarify/FIX doc. of \cX (Noel Chiappa, Random832)..
986 90bdf7e4 THANKS: Noel Chiappa
987 e0bf944d THANKS: Random832
988 5a1c023c nail.1: furtherly clarify doc. of \cX (Doug McIlroy)..
989 fb88d4fb THANKS: Doug McIlroy
990 a396678a Implement `echon' and `echoerrn' ("echo -n" and "echo >&2 -n")
991 c5197719 cmd_tab.h: `wysh' for more commands!
992 d33294c2 mk-release.inc: use %B for $DATE_MAN (Baptiste Daroussin)..
993 ad34b768 THANKS: Baptiste Daroussin
994 f53248dd Support `vput' for `cwd'
995 eafa9411 (BWDIC!) Defaults for *datefield{-markout-older}* (Debian #855582;
997 871a1e3f THANKS: Riccardo Ductor
998 a256ebb2 (BWDIC!) sendout.c:__mta_start(): with SMTP *mta*, do not send to
1000 5ab93627 MLE: set FEXP_NOPROTO for mle-complete expansions (Ralph Corderoy)
1001 78c30e08 `read': work more like shells..
1002 ada72661 ~<: add "- [HERE-delimiter]" for pasting etc. (Ralph Corderoy)
1003 5669e8a2 `vexpr': add "random" subcommand
1004 acb887b4 (BWDIC!) *mta-arguments*: parse via shell-style quoting
1005 9cddf95c (BWDIC!) For all shell commands, use shell-style quoting
1006 72faa445 New quoting rules for `unset', `varshow', `varedit'
1007 ceaac3b7 `vexpr': add "hash" subcommand
1008 96888b9a Add *{smime,ssl}-ca-flags*..
1009 3bfd2182 Use TLS S(erver)N(ame)I(ndication) as appropriate (RFC 7817)
1010 d4d46c42 Add `charsetalias', and use it (Pietro Cerutti, mutt#3925)
1011 c9051911 THANKS: Pietro Cerutti
1012 72b43d61 README: Add "Security record" section
1013 f83564ea c_[Ss]croll(): use new shell-style argument quoting
1014 63a167f8 `source', `source_if': use new shell-style argument quoting
1015 5ce2b406 (BWDIC!) FIX false decision: for `if' etc., add -le,-gt.. operators..
1016 f3404bc1 (BWDIC!) Redefine all CODECS, add `shcodec', change `addrcodec'..
1017 215c5cc2 Our own layer onto errno, yet too high
1018 911bf9d1 Add *^* multiplexer; yet $^ERR{,DOC,NAME}{,-xy}..
1019 65e2b75f Redefine VIP handling of variables (Ralph Corderoy)..
1020 8235d440 Implement `xcall' stack-avoidance optimization
1021 5e75768e Finally add `sleep' (to be able to test ^C more easily)
1022 6c8b5c77 `headerpick': no more multiplexer, add `unheaderpick'
1023 1c342dd5 C****Y BSD signal handling! Try improve ^C stability..
1024 90529c5f Add `(un)?commandalias', obsolete `(un)?ghost'
1025 5fd6da65 (BWDIC!) No! Let $! be errno, and $? the sole exit status..
1026 f7f2781b `addrcodec': add `skin' subcommand, add an `encode' mode
1027 59cb4714 Add *log-prefix* (with i3val), for reproduceabilities sake
1028 658567b5 (BWDIC!) make.rc,mk-conf.sh: VAL_NAIL -> VAL_MAILX
1030 952a52b7 Improve shell parser sequencing; changes \c@..
1031 9ab5c1ef CRY OUT LOUD and tweak/explain the latter!
1032 [This "latter" not _that_ latter]
1033 8855fdd6 Obsolete *bsdannounce*, cover it via *header* (unless *posix*)
1034 eabb7eaf (BWDIC!) Add `(un)?filetype', obsolete *file-hook**, .gz etc.
1036 41f21c2a `charsetalias', `filetype', `shortcut': show given with one arg
1037 c35072cb Add *build-os{,env}* and *version-date*
1038 782e53f4 Support `vput' for `!'
1039 af56d082 (BWDIC!) c_varedit(): do not strip ANYTHING from user data!
1040 4676f016 `vexpr': add "makeprint" subcommand
1041 162cafb7 *mime-counter-evidence*, bit 4: allow "soft" controls (Jörg
1043 0ee3f647 THANKS: Jörg Schilling
1044 fc1e07dd a_nag_altnames: n_strlist* instead of char**; "alternates -": clear!
1045 9d20238d Extend $SOURCE_DATE_EPOCH coverage to randoms+..
1046 7039d7f4 Outsource some constants to new config.h; use mk-* for mk stuff
1047 6954954d Support protocol:// prefix to fixate++ `file'++ type
1048 90861930 Readd removed fflush()/fseek() in between read and write..
1049 [That should credit Jörg Schilling indeed]
1050 aae47707 Tweak previous, and include O_CREAT in "a+" (Jörg Schilling)..
1051 c477c146 Add OPT_ASAN_{ADDRESS,MEMORY} options..
1052 c377e332 Ensure *mta* and *mta-argv0* have default values (again)
1053 fa874a8e Add VAL_CONTACT_{MAIL,WEB}, and *contact-{mail,web}*
1054 3e4441f8 a_main_usage(): new synopsis (Doug McIlroy)
1055 afce84e1 Rework test framework a bit, introduce [test-out] branch
1056 5bfdcde7 (BWDIC!) Add *record-files*; fix *record* for `[Rr]esend' with only
1058 4898618e Maildir: add test; change to Courier filenames, Torek hash++
1059 969f7059 `history': show mode: change output, act on *verbose*+
1060 17b91f60 Do not "imply *dot*" with *ignoreeof* - unless *posix*
1061 7457ac57 MLE: allow hist-{,srch-}fwd to start history lookup
1062 539c510c Add *ifs* (and *ifs-ws*) variables
1063 c6a93f72 `read': support and split as indicated by *ifs*
1064 fc10001f Drop the `~' `call' "alias", it always has been a bad idea..
1065 01d99c30 `vpospar': manage positional parameters, à la "set --", but
1067 0b7f9d38 `read': trim_ifs(), $?/$! semantics rewrite; fix -1 input error case
1068 3659cffa Add VAL_MIME_TYPES_{SYS,USR} to make.rc (from config.h)
1069 f99c672b Add *ssl-curves* (for TLSv1.3)
1070 2aab72f6 Add `readctl' command..
1071 8a8b0478 Obsolete `[Rr]edirect'
1072 8f61025b FIX icase hmaps (`charsetalias', `filetype', `mlist') (rain1)
1073 a794370f THANKS: rain1
1074 95c24391 Pass through the real exit status of command from `!'
1075 f892438e Fix all `spamXY' cmds and `mbox': do not allow deleted+ msgs
1076 2e6a811d a_termcap_init_var(): numerics not necessarily decimal (Thomas
1078 9d6b190d `~^ header': add `remove-at', test in t_behave_compose_hooks ++..
1079 9d58267f config.h+: add n_PATH_DEVNULL, use it instead of hardcoding (Xin LI)
1080 ae55f33d THANKS: Xin LI
1081 a6b934bf (BWDIC!) `mimetype': only support one type per call (no more quotes!)
1082 eb237db8 (BWDIC!) `if'+: add operator modifiers; change defaults:
1084 1acdc481 Command escapes: support $!/$?, and honour *errexit* (somewhat)
1085 2228d220 `shell': support $! and $?
1086 71c647a8 (BWDIC!) Add `partview', change MIME part handler semantics..
1087 f71daf4e Tweak splice hooks, and, eh, pfffh!!, n_child_wait()!
1088 dd94be65 ~[Rr]: "- DELIM": may need to quote delim in future
1089 bcfeecbf Introduce *on-compose-cleanup* (we don't support roff .env's...)
1090 62358d22 More `alternates' processing: a 2nd "pure", non-extended run
1091 e9665a17 `echoerr': use error ring queue if interactive and available
1092 4099f8ae `shift': _allow_ in hook/account if stack created via `vpospar'!
1093 e1ed6492 Change *on-compose-{enter,leave}* environment + fixes..
1094 d41fc323 Better hook support: *mailx-{raw,orig}-* a.k.a.
1095 Mailx-{Raw,Orig}-From:..
1096 0869563c Support *on-resend-{enter,cleanup}*..
1097 077f5299 Add n_locale_init(), track $LC_{ALL,CTYPE} and $LANG (for
1099 2f5e3b9e `exit', `quit': support optional exit status argument
1100 0bcd8428 cc-test.sh: use ourselfs when detecting UTF-8 locale..
1101 4009dc54 `xcall': simply be `call' if used from non-macro context
1102 027513b0 a_folder_info(): print "+[FOLDER]rest" if under folder (as
1104 3606b399 (BWDIC!) Fix *imap-delim* behaviour..
1105 711ea310 Actively forbid copy from POP3 to IMAP
1107 77d5ce64 (BWDIC!) `partview' -> `mimeview'
1108 dee808d3 Obsolete *encoding* in favour of *mime-encoding*
1109 9cf6f840 (BWDIC!) Require new *termcap-ca-mode* to enter ca-mode
1110 a1652172 (BWDIC!) Add `unalternates', drop *alternates* + "alternates -"
1112 4fa2f33c ~t, ~c, ~b: better (read: now performed) $! / $? handling
1113 dfc8d959 Blind fly to address GSSAPI leaks and such
1114 b47b321c Support IDNA in URL hostnames. Finally!!
1115 8075cf00 Support *socks-proxy* (SOCKS5) (Gaetan Bisson)
1116 f61379cb MLE: fix ^D / *ignoreeof* handling
1117 34b66785 main.c: support $COLUMNS/$LINES in non-interactive batch mode
1122 The complete changelog of commits in between two versions OLD and
1123 NEW can be inspected by using the git(1) `log' command:
1125 $ git log --reverse --topo-order --abbrev-commit OLD..NEW
1126 # Only topic branch headers (--no-merges for content commits only):
1127 $ git log --oneline --reverse --topo-order --merges OLD..NEW
1128 # Same, but truly accessible:
1129 $ git log --oneline --reverse --topo-order --merges --parents OLD..NEW |
1130 while read c1 c2 c3 c4 c5 c6; do
1131 printf "%-24s: \$ git log --oneline --no-merges %s ^%s\n" \
1132 "${c6}" "${c1}" "${c2}";
1135 Entries for the S-nail releases before v14.9.0 have been cut off
1136 before release v14.9.0 and can be found in the git(1) repository:
1138 v14.8.0 - v14.8.16: $ git show v14.8.16:NEWS
1139 v13 - v14.8.5 : $ git show v14.8.5:NEWS
1140 9.0 - 12.5 : $ git show heirloom:ChangeLog
1142 Also accessible via the HTTPS?, just replace X.Y.Z accordingly:
1143 https://git.sdaoden.eu/cgit/s-nail.git/tree/NEWS?h=vX.Y.Y
1144 For even older releases you need to look into the [timeline]
1145 branch, but no changelog has been administrated for them.
1148 The content has been vaporised. Ways to access the leakage are
1149 documented in the newest announcement at the top of this file.