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