diff options
author | Xin LI <delphij@FreeBSD.org> | 2025-05-19 05:51:42 +0000 |
---|---|---|
committer | Xin LI <delphij@FreeBSD.org> | 2025-05-19 05:51:42 +0000 |
commit | 48b0a08b8724e7d5671dac2abf17ddb6d4e2a8f8 (patch) | |
tree | 1b948df937500aa7672f42e2eb1b2a6d743aa51f | |
parent | 8c9fd1007159a1cfe994ccf7021688a679a0a39c (diff) |
Vendor import of less v678.vendor/less/v678vendor/less
-rw-r--r-- | LICENSE | 2 | ||||
-rw-r--r-- | Makefile.aut | 5 | ||||
-rw-r--r-- | Makefile.in | 9 | ||||
-rw-r--r-- | NEWS | 73 | ||||
-rw-r--r-- | brac.c | 2 | ||||
-rw-r--r-- | ch.c | 55 | ||||
-rw-r--r-- | charset.c | 36 | ||||
-rw-r--r-- | charset.h | 2 | ||||
-rw-r--r-- | cmd.h | 9 | ||||
-rw-r--r-- | cmdbuf.c | 189 | ||||
-rw-r--r-- | command.c | 205 | ||||
-rw-r--r-- | compose.uni | 19 | ||||
-rwxr-xr-x | configure | 187 | ||||
-rw-r--r-- | configure.ac | 31 | ||||
-rw-r--r-- | cvt.c | 2 | ||||
-rw-r--r-- | decode.c | 315 | ||||
-rw-r--r-- | defines.ds | 5 | ||||
-rw-r--r-- | defines.h.in | 15 | ||||
-rw-r--r-- | defines.o2 | 9 | ||||
-rw-r--r-- | defines.o9 | 9 | ||||
-rw-r--r-- | defines.wn | 9 | ||||
-rw-r--r-- | edit.c | 7 | ||||
-rw-r--r-- | evar.c | 6 | ||||
-rw-r--r-- | filename.c | 6 | ||||
-rw-r--r-- | fmt.uni | 2 | ||||
-rw-r--r-- | forwback.c | 163 | ||||
-rw-r--r-- | funcs.h | 51 | ||||
-rw-r--r-- | help.c | 12 | ||||
-rw-r--r-- | ifile.c | 2 | ||||
-rw-r--r-- | input.c | 48 | ||||
-rw-r--r-- | jump.c | 27 | ||||
-rw-r--r-- | lang.h | 2 | ||||
-rw-r--r-- | less.h | 41 | ||||
-rw-r--r-- | less.hlp | 10 | ||||
-rw-r--r-- | less.man | 1259 | ||||
-rw-r--r-- | less.nro | 212 | ||||
-rw-r--r-- | lessecho.c | 2 | ||||
-rw-r--r-- | lessecho.man | 4 | ||||
-rw-r--r-- | lessecho.nro | 6 | ||||
-rw-r--r-- | lesskey.c | 2 | ||||
-rw-r--r-- | lesskey.h | 2 | ||||
-rw-r--r-- | lesskey.man | 36 | ||||
-rw-r--r-- | lesskey.nro | 23 | ||||
-rw-r--r-- | lesskey_parse.c | 9 | ||||
-rw-r--r-- | lesstest/lt/filter1.lt | 1171 | ||||
-rw-r--r-- | lesstest/lt/hdr-unicode1.lt | bin | 573460 -> 781018 bytes | |||
-rw-r--r-- | lesstest/lt/osc8.lt | 8887 | ||||
-rw-r--r-- | lesstest/lt/seq200.lt | 7 | ||||
-rw-r--r-- | lesstest/lt/utf8-2.txt.lt | bin | 992066 -> 973125 bytes | |||
-rw-r--r-- | lesstest/lt/utf8-cmds.txt.lt | bin | 0 -> 67448 bytes | |||
-rwxr-xr-x | lesstest/ltview | 14 | ||||
-rwxr-xr-x | lesstest/runtest | 2 | ||||
-rw-r--r-- | lglob.h | 2 | ||||
-rw-r--r-- | line.c | 279 | ||||
-rw-r--r-- | linenum.c | 24 | ||||
-rw-r--r-- | lsystem.c | 2 | ||||
-rw-r--r-- | main.c | 30 | ||||
-rw-r--r-- | mark.c | 2 | ||||
-rwxr-xr-x | mkhelp.pl | 2 | ||||
-rwxr-xr-x | mkhelp.py | 4 | ||||
-rwxr-xr-x | mkutable | 7 | ||||
-rw-r--r-- | optfunc.c | 25 | ||||
-rw-r--r-- | option.c | 80 | ||||
-rw-r--r-- | option.h | 26 | ||||
-rw-r--r-- | opttbl.c | 231 | ||||
-rw-r--r-- | os.c | 115 | ||||
-rw-r--r-- | output.c | 19 | ||||
-rw-r--r-- | pattern.c | 52 | ||||
-rw-r--r-- | pattern.h | 2 | ||||
-rw-r--r-- | pckeys.h | 2 | ||||
-rw-r--r-- | position.c | 15 | ||||
-rw-r--r-- | position.h | 3 | ||||
-rw-r--r-- | prompt.c | 11 | ||||
-rw-r--r-- | screen.c | 120 | ||||
-rw-r--r-- | scrsize.c | 2 | ||||
-rw-r--r-- | search.c | 184 | ||||
-rw-r--r-- | signal.c | 55 | ||||
-rw-r--r-- | tags.c | 2 | ||||
-rw-r--r-- | ttyin.c | 8 | ||||
-rw-r--r-- | ubin.uni | 2 | ||||
-rw-r--r-- | version.c | 19 | ||||
-rw-r--r-- | wide.uni | 22 |
82 files changed, 12912 insertions, 1636 deletions
@@ -2,7 +2,7 @@ ------------ Less -Copyright (C) 1984-2024 Mark Nudelman +Copyright (C) 1984-2025 Mark Nudelman Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/Makefile.aut b/Makefile.aut index a40f33d9e3ec..d4a4d56d0300 100644 --- a/Makefile.aut +++ b/Makefile.aut @@ -90,7 +90,8 @@ distclean: clean realclean: clean REPLACE_VERSION = \ - DT=`date '+%d %h %Y'`; \ + if [ -n "${SOURCE_DATE_EPOCH}" ]; then DFLAG="-d@${SOURCE_DATE_EPOCH}"; fi; \ + DT=`date $$DFLAG '+%d %h %Y'`; \ echo "Stuffing version number ${REL} into $@"; \ rm -f $@; \ sed \ @@ -172,5 +173,5 @@ gnu-upload: ${GPG} -b $$TARF && \ ( echo "version: 1.2"; echo "directory: less"; echo "filename: $$TARF" ) > $$TARF.directive && \ ${GPG} --clearsign $$TARF.directive && \ - echo "upload ready: cd $$RELDIR; ftp ftp-upload.gnu.org; cd /incoming/ftp; put ... { $TARF, $$TARF.sig, $$TARF.directive.asc }" + echo "upload ready: cd $$RELDIR; ftp ftp-upload.gnu.org; cd /incoming/ftp; put ... { $$TARF, $$TARF.sig, $$TARF.directive.asc }" diff --git a/Makefile.in b/Makefile.in index 29d5f4841cef..ff528690af1c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -20,7 +20,13 @@ ifneq ($(strip $(LESSTEST)),) CPPFLAGS += -DLESSTEST endif -LIBS = @LIBS@ +# Make with SAN=1 to enable the gcc address sanitizer. +ifeq ($(SAN),1) +CPPFLAGS += -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fno-sanitize=null -fno-sanitize=alignment +LIBSAN = -lasan -lubsan +endif + +LIBS = $(LIBSAN) @LIBS@ prefix = @prefix@ exec_prefix = @exec_prefix@ @@ -35,7 +41,6 @@ datarootdir = @datarootdir@ mandir = @mandir@ manext = 1 manprefix = -DESTDIR = #### End of system configuration section. #### @@ -11,6 +11,79 @@ ====================================================================== + Major changes between "less" versions 668 and 678 + +* Treat -r in LESS environment variable as -R. + +* Add ESC-j and ESC-k commands (github #560). + +* Add --no-paste option (github #523). + +* Add --no-edit-warn option (github #513). + +* Add --form-feed option (github #496). + +* Add ESC-b command (github #615). + +* Make TAB complete option name in -- command (github #531). + +* Update the file size on an attempt to go past end of file. + +* Make -R able to pass through any OSC escape sequences, + not just OSC 8 (github #504). + +* Setting LESS_IS_MORE=0 now disables "more" compatibility even + if invoked via a file link named "more" (github #500). + +* Pass through escape sequences in prompts even if -R is not set. + +* Add LESS_SHELL_LINES to support shell prompts which use more than + one line (github #514). + +* Add LESSANSIOSCALLOW to define OSC types which may be passed through. + +* Add LESSANSIOSCCHARS to define non-standard OSC intro chars. + +* Add LESS_SIGUSR1 to define user signal handler (github #582). + +* Add mouse and mouse6 commands to lesskey (github #569). + +* Improve behavior of ^O^N and ^O^P commands. + +* Leave stty tabs setting unchanged (github #620). + +* Fix unexpected behavior when entering a partial command followed by + a valid command (github #543). + +* Fix bug when coloring prompt string with SGR sequences (github #516). + +* Fix bug when searching for text near an invalid UTF-8 sequence (github #542). + +* Fix display bug when file contains ESC followed by NUL (github #550). + +* Fix bug when using +:n +:p +:x or +:d on the command line (github #552). + +* Fix bug with --no-number-headers when header is not at start of file + (github #566). + +* Fix bug where lesstest fails if window is resized (github #570). + +* Fix bug using "configure --with-secure=no" (github #584). + +* Fix bug using multibyte command chars (github #595). + +* Fix auto_wrap setting on Windows (github #497). + +* Fix two bugs using ^S search modifier (github #605). + +* Fix bug searching for UTF-8 strings with the PCRE2 library (github #610). + +* Fix bug highlighting OSC 8 links when opening a new file. + +* Fix bug when & filtering is active (github #618). + +====================================================================== + Major changes between "less" versions 661 and 668 * Make 256/true colors work better on Windows without -Da @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -149,10 +149,7 @@ static int ch_get(void) struct buf *bp; struct bufnode *bn; ssize_t n; - lbool read_again; int h; - POSITION pos; - POSITION len; if (thisfile == NULL) return (EOI); @@ -224,12 +221,28 @@ static int ch_get(void) for (;;) { - pos = ch_position(ch_block, bp->datasize); + lbool read_again; + POSITION len; + POSITION pos = ch_position(ch_block, bp->datasize); + lbool read_pipe_at_eof = FALSE; if ((len = ch_length()) != NULL_POSITION && pos >= len) + { /* - * At end of file. + * Apparently at end of file. + * Double-check the file size in case it has changed. */ - return (EOI); + ch_resize(); + if ((len = ch_length()) != NULL_POSITION && pos >= len) + { + if (ch_flags & (CH_CANSEEK|CH_HELPFILE)) + return (EOI); + /* ch_length doesn't work for pipes, so just try to + * read from the pipe to see if more data has appeared. + * This can happen only in limited situations, such as + * a fifo that the writer has closed and reopened. */ + read_pipe_at_eof = TRUE; + } + } if (pos != ch_fpos) { @@ -271,7 +284,8 @@ static int ch_get(void) read_again = FALSE; if (n == READ_INTR) { - ch_fsize = pos; + if (ch_flags & CH_CANSEEK) + ch_fsize = pos; return (EOI); } if (n == READ_AGAIN) @@ -304,6 +318,8 @@ static int ch_get(void) ch_fpos += n; bp->datasize += (size_t) n; + if (read_pipe_at_eof) + ch_set_eof(); /* update length of pipe */ if (n == 0) { @@ -331,6 +347,9 @@ static int ch_get(void) } if (sigs) return (EOI); + if (read_pipe_at_eof) + /* No new data; we are still at EOF on the pipe. */ + return (EOI); } found: @@ -400,6 +419,8 @@ public void end_logfile(void) logfile = -1; free(namelogfile); namelogfile = NULL; + putstr("\n"); + flush(); } /* @@ -412,6 +433,7 @@ public void sync_logfile(void) struct buf *bp; struct bufnode *bn; lbool warned = FALSE; + int h; BLOCKNUM block; BLOCKNUM nblocks; @@ -421,7 +443,8 @@ public void sync_logfile(void) for (block = 0; block < nblocks; block++) { lbool wrote = FALSE; - FOR_BUFS(bn) + h = BUFHASH(block); + FOR_BUFS_IN_CHAIN(h, bn) { bp = bufnode_buf(bn); if (bp->block == block) @@ -600,6 +623,20 @@ public POSITION ch_length(void) } /* + * Update the file size, in case it has changed. + */ +public void ch_resize(void) +{ + POSITION fsize; + + if (!(ch_flags & CH_CANSEEK)) + return; + fsize = filesize(ch_file); + if (fsize != NULL_POSITION) + ch_fsize = fsize; +} + +/* * Return the current position in the file. */ public POSITION ch_tell(void) diff --git a/charset.c b/charset.c index 3e8fb0fa9354..5e5df2a4e60f 100644 --- a/charset.c +++ b/charset.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -756,24 +756,38 @@ public LWCHAR step_charc(constant char **pp, signed int dir, constant char *limi ch = (LWCHAR) (unsigned char) ((p > limit) ? *--p : 0); } else if (dir > 0) { - len = utf_len(*p); - if (p + len > limit) - { + if (p >= limit) ch = 0; - p = (char *) limit; - } else + else { - ch = get_wchar(p); - p += len; + len = utf_len(*p); + if (p + len > limit || !is_utf8_well_formed(p, len)) + { + ch = (LWCHAR) (unsigned char) *p++; + } else + { + ch = get_wchar(p); + p += len; + } } } else { while (p > limit && IS_UTF8_TRAIL(p[-1])) p--; - if (p > limit) - ch = get_wchar(--p); - else + if (p <= limit) ch = 0; + else + { + len = utf_len(*--p); + if (p + len != *pp || !is_utf8_well_formed(p, len)) + { + p = *pp - 1; + ch = (LWCHAR) (unsigned char) *p; + } else + { + ch = get_wchar(p); + } + } } *pp = p; return ch; diff --git a/charset.h b/charset.h index b5a9067c028b..4acf494b4ed5 100644 --- a/charset.h +++ b/charset.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -31,6 +31,7 @@ #define A_HELP 19 #define A_NEXT_FILE 20 #define A_PERCENT 21 +#define A_BF_SCREEN 22 #define A_PREV_FILE 23 #define A_QUIT 24 #define A_REPAINT 25 @@ -68,6 +69,8 @@ #define A_GOEND_BUF 57 #define A_LLSHIFT 58 #define A_RRSHIFT 59 +#define A_F_NEWLINE 60 +#define A_B_NEWLINE 61 #define A_CLRMARK 62 #define A_SETMARKBOT 63 #define A_X11MOUSE_IN 64 @@ -81,6 +84,8 @@ #define A_OSC8_B_SEARCH 72 #define A_OSC8_OPEN 73 #define A_OSC8_JUMP 74 +#define A_START_PASTE 75 /* must not overlap EC_* */ +#define A_END_PASTE 76 /* must not overlap EC_* */ /* These values must not conflict with any A_* or EC_* value. */ #define A_INVALID 100 @@ -117,6 +122,8 @@ #define EC_ABORT 20 #define EC_X11MOUSE 21 #define EC_X116MOUSE 22 +#define EC_START_PASTE A_START_PASTE +#define EC_END_PASTE A_END_PASTE #define EC_UINVALID 102 @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -24,6 +24,8 @@ extern int sc_width; extern int utf_mode; extern int no_hist_dups; extern int marks_modified; +extern int no_paste; +public lbool pasting = FALSE; static char cmdbuf[CMDBUF_SIZE]; /* Buffer for holding a multi-char command */ static int cmd_col; /* Current column of the cursor */ @@ -34,7 +36,6 @@ static lbool literal; /* Next input char should not be interpreted */ static size_t updown_match; /* Prefix length in up/down movement */ static lbool have_updown_match = FALSE; -#if TAB_COMPLETE_FILENAME static int cmd_complete(int action); /* * These variables are statics used by cmd_complete. @@ -45,7 +46,6 @@ static char *tk_original; static constant char *tk_ipoint; static constant char *tk_trial = NULL; static struct textlist tk_tlist; -#endif static int cmd_left(); static int cmd_right(); @@ -183,6 +183,16 @@ public int len_cmdbuf(void) } /* + * Is the command buffer empty? + * It is considered nonempty if there is any text in it, + * or if a multibyte command is being entered but not yet complete. + */ +public lbool cmdbuf_empty(void) +{ + return cp == cmdbuf && cmd_mbc_buf_len == 0; +} + +/* * Common part of cmd_step_right() and cmd_step_left(). * {{ Returning pwidth and bswidth separately is a historical artifact * since they're always the same. Maybe clean this up someday. }} @@ -305,6 +315,16 @@ public void cmd_repaint(constant char *old_cp) } /* + * Repaint the entire line, without moving the cursor. + */ +static void cmd_repaint_curr(void) +{ + char *save_cp = cp; + cmd_home(); + cmd_repaint(save_cp); +} + +/* * Shift the cmdbuf display left a half-screen. */ static void cmd_lshift(void) @@ -804,17 +824,13 @@ public void cmd_accept(void) * CC_OK Line edit function done. * CC_QUIT The char requests the current command to be aborted. */ -static int cmd_edit(char c) +static int cmd_edit(char c, lbool stay_in_completion) { int action; int flags; -#if TAB_COMPLETE_FILENAME -#define not_in_completion() in_completion = 0 -#else -#define not_in_completion(void) -#endif - +#define not_in_completion() do { if (!stay_in_completion) in_completion = FALSE; } while(0) + /* * See if the char is indeed a line-editing command. */ @@ -826,21 +842,35 @@ static int cmd_edit(char c) */ flags |= ECF_NOHISTORY; #endif + + /* + * Don't accept completion cmds in contexts + * such as search pattern, digits, etc. + */ + if ((curr_mlist == NULL && (curr_cmdflags & CF_OPTION)) #if TAB_COMPLETE_FILENAME - if (curr_mlist == ml_search || curr_mlist == NULL) - /* - * Don't accept file-completion cmds in contexts - * such as search pattern, digits, long option name, etc. - */ - flags |= ECF_NOCOMPLETE; + || curr_mlist == ml_examine || curr_mlist == ml_shell #endif + ) + ; /* allow completion */ + else + flags |= ECF_NOCOMPLETE; action = editchar(c, flags); + if (is_ignoring_input(action)) + return (CC_OK); switch (action) { case A_NOACTION: return (CC_OK); + case EC_START_PASTE: + if (no_paste) + pasting = TRUE; + return (CC_OK); + case EC_END_PASTE: + stop_ignoring_input(); + return (CC_OK); case EC_RIGHT: not_in_completion(); return (cmd_right()); @@ -903,19 +933,16 @@ static int cmd_edit(char c) not_in_completion(); return (cmd_updown(action)); #endif -#if TAB_COMPLETE_FILENAME case EC_F_COMPLETE: case EC_B_COMPLETE: case EC_EXPAND: return (cmd_complete(action)); -#endif default: not_in_completion(); return (CC_PASS); } } -#if TAB_COMPLETE_FILENAME /* * Insert a string into the command buffer, at the current position. */ @@ -937,6 +964,18 @@ static int cmd_istr(constant char *str) } /* + * Set tk_original to word. + */ +static void set_tk_original(constant char *word) +{ + if (tk_original != NULL) + free(tk_original); + tk_original = (char *) ecalloc(ptr_diff(cp,word)+1, sizeof(char)); + strncpy(tk_original, word, ptr_diff(cp,word)); +} + +#if TAB_COMPLETE_FILENAME +/* * Find the beginning and end of the "current" word. * This is the word which the cursor (cp) is inside or at the end of. * Return pointer to the beginning of the word and put the @@ -1024,24 +1063,16 @@ static char * delimit_word(void) } /* - * Set things up to enter completion mode. + * Set things up to enter file completion mode. * Expand the word under the cursor into a list of filenames * which start with that word, and set tk_text to that list. */ -static void init_compl(void) +static void init_file_compl(void) { char *word; char c; /* - * Get rid of any previous tk_text. - */ - if (tk_text != NULL) - { - free(tk_text); - tk_text = NULL; - } - /* * Find the original (uncompleted) word in the command buffer. */ word = delimit_word(); @@ -1052,13 +1083,7 @@ static void init_compl(void) * where the original (uncompleted) word now sits. */ tk_ipoint = word; - /* - * Save the original (uncompleted) word - */ - if (tk_original != NULL) - free(tk_original); - tk_original = (char *) ecalloc(ptr_diff(cp,word)+1, sizeof(char)); - strncpy(tk_original, word, ptr_diff(cp,word)); + set_tk_original(word); /* * Get the expanded filename. * This may result in a single filename, or @@ -1086,6 +1111,17 @@ static void init_compl(void) } *cp = c; } +#endif /* TAB_COMPLETE_FILENAME */ + +/* + * Set things up to enter option completion mode. + */ +static void init_opt_compl(void) +{ + tk_ipoint = cmdbuf; + set_tk_original(cmdbuf); + tk_text = findopts_name(cmdbuf); +} /* * Return the next word in the current completion list. @@ -1120,7 +1156,19 @@ static int cmd_complete(int action) * use the first word in the expansion * (or the entire expansion if we're doing EC_EXPAND). */ - init_compl(); + if (tk_text != NULL) + { + free(tk_text); + tk_text = NULL; + } + if (curr_cmdflags & CF_OPTION) + init_opt_compl(); + else +#if TAB_COMPLETE_FILENAME + init_file_compl(); +#else + quit(QUIT_ERROR); /* cannot happen */ +#endif /* TAB_COMPLETE_FILENAME */ if (tk_text == NULL) { bell(); @@ -1195,25 +1243,20 @@ fail: return (CC_OK); } -#endif /* TAB_COMPLETE_FILENAME */ - /* - * Process a single character of a multi-character command, such as - * a number, or the pattern of a search command. + * Build a UTF-8 char in cmd_mbc_buf. * Returns: - * CC_OK The char was accepted. - * CC_QUIT The char requests the command to be aborted. - * CC_ERROR The char could not be accepted due to an error. + * CC_OK Char has been stored but we don't have a complete UTF-8 sequence yet. + * CC_ERROR This is an invalid UTF-8 sequence. + * CC_PASS There is a complete UTF-8 sequence in cmd_mbc_buf. + * The length of the complete sequence is returned in *plen. */ -public int cmd_char(char c) +static int cmd_uchar(char c, size_t *plen) { - int action; - size_t len; - if (!utf_mode) { cmd_mbc_buf[0] = c; - len = 1; + *plen = 1; } else { /* Perform strict validation in all possible cases. */ @@ -1262,9 +1305,26 @@ public int cmd_char(char c) goto retry; } - len = (size_t) cmd_mbc_buf_len; /*{{type-issue}}*/ + *plen = (size_t) cmd_mbc_buf_len; /*{{type-issue}}*/ cmd_mbc_buf_len = 0; } + return (CC_PASS); +} + +/* + * Process a single character of a multi-character command, such as + * a number, or the pattern of a search command. + * Returns: + * CC_OK The char was accepted. + * CC_QUIT The char requests the command to be aborted. + * CC_ERROR The char could not be accepted due to an error. + */ +static int cmd_char2(char c, lbool stay_in_completion) +{ + size_t len; + int action = cmd_uchar(c, &len); + if (action != CC_PASS) + return (action); if (literal) { @@ -1280,7 +1340,7 @@ public int cmd_char(char c) */ if (in_mca() && len == 1) { - action = cmd_edit(c); + action = cmd_edit(c, stay_in_completion); switch (action) { case CC_OK: @@ -1297,6 +1357,30 @@ public int cmd_char(char c) return (cmd_ichar(cmd_mbc_buf, len)); } +public int cmd_char(char c) +{ + return cmd_char2(c, FALSE); +} + +/* + * Copy an ASCII string to the command buffer. + */ +public int cmd_setstring(constant char *s, lbool uc) +{ + while (*s != '\0') + { + int action; + char c = *s++; + if (uc && ASCII_IS_LOWER(c)) + c = ASCII_TO_UPPER(c); + action = cmd_char2(c, TRUE); + if (action != CC_OK) + return (action); + } + cmd_repaint_curr(); + return (CC_OK); +} + /* * Return the number currently in the command buffer. */ @@ -1464,6 +1548,7 @@ static void read_cmdhist2(void (*action)(void*,struct mlist*,constant char*), vo #else ml = NULL; skip = NULL; + (void) skip_shell; #endif } else if (strcmp(line, HISTFILE_MARK_SECTION) == 0) { @@ -1674,6 +1759,8 @@ public void save_cmdhist(void) skip_search = mlist_size(&mlist_search) - histsize; #if SHELL_ESCAPE || PIPEC skip_shell = mlist_size(&mlist_shell) - histsize; +#else + skip_shell = 0; /* not actually used */ #endif fprintf(fout, "%s\n", HISTFILE_FIRST_LINE); ctx.fout = fout; diff --git a/command.c b/command.c index 974185d6f044..327e3930f09b 100644 --- a/command.c +++ b/command.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -29,7 +29,7 @@ extern int sc_height; extern char *kent; extern int swindow; extern int jump_sline; -extern int quitting; +extern lbool quitting; extern int wscroll; extern int top_scroll; extern int ignore_eoi; @@ -37,6 +37,7 @@ extern int hshift; extern int bs_mode; extern int proc_backspace; extern int show_attn; +extern int chopline; extern POSITION highest_hilite; extern char *every_first_cmd; extern char version[]; @@ -47,6 +48,10 @@ extern void *ml_examine; extern int wheel_lines; extern int def_search_type; extern lbool search_wrapped; +extern int no_paste; +extern lbool pasting; +extern int no_edit_warn; +extern POSITION soft_eof; #if SHELL_ESCAPE || PIPEC extern void *ml_shell; #endif @@ -74,7 +79,7 @@ static int last_search_type; /* Type of last executed search */ static LINENUM number; /* The number typed by the user */ static long fraction; /* The fractional part of the number */ static struct loption *curropt; -static int opt_lower; +static lbool opt_lower; static int optflag; static lbool optgetname; static POSITION bottompos; @@ -83,6 +88,10 @@ static int save_bs_mode; static int save_proc_backspace; static int screen_trashed_value = 0; static lbool literal_char = FALSE; +static lbool ignoring_input = FALSE; +#if HAVE_TIME +static time_type ignoring_input_time; +#endif #if PIPEC static char pipec; #endif @@ -102,7 +111,7 @@ static void multi_search(constant char *pattern, int n, int silent); * This looks nicer if the command takes a long time before * updating the screen. */ -static void cmd_exec(void) +public void cmd_exec(void) { clear_attn(); clear_bot(); @@ -228,7 +237,7 @@ static void mca_opt_toggle(void) break; } forw_prompt = 0; - set_mlist(NULL, 0); + set_mlist(NULL, CF_OPTION); } /* @@ -237,7 +246,6 @@ static void mca_opt_toggle(void) static void exec_mca(void) { constant char *cbuf; - char *p; cmd_exec(); cbuf = get_cmdbuf(); @@ -254,6 +262,7 @@ static void exec_mca(void) case A_FILTER: search_type ^= SRCH_NO_MATCH; set_filter_pattern(cbuf, search_type); + soft_eof = NULL_POSITION; break; #endif case A_FIRSTCMD: @@ -280,7 +289,8 @@ static void exec_mca(void) match_brac(cbuf[1], cbuf[0], 0, (int) number); break; #if EXAMINE - case A_EXAMINE: + case A_EXAMINE: { + char *p; if (!secure_allow(SF_EXAMINE)) break; p = save(cbuf); @@ -290,7 +300,7 @@ static void exec_mca(void) /* If tag structure is loaded then clean it up. */ cleantags(); #endif - break; + break; } #endif #if SHELL_ESCAPE case A_SHELL: { @@ -413,16 +423,18 @@ static int mca_opt_nonfirst_char(char c) constant char *p; constant char *oname; lbool ambig; + struct loption *was_curropt; if (curropt != NULL) { - /* - * Already have a match for the name. - * Don't accept anything but erase/kill. - */ + /* Already have a match for the name. */ if (is_erase_char(c)) return (MCA_DONE); - return (MCA_MORE); + /* {{ Checking for TAB here is ugly. + * Also doesn't extend well -- can't do BACKTAB this way + * because it's a multichar sequence. }} */ + if (c != '\t') + return (MCA_MORE); } /* * Add char to cmd buffer and try to match @@ -431,26 +443,23 @@ static int mca_opt_nonfirst_char(char c) if (cmd_char(c) == CC_QUIT) return (MCA_DONE); p = get_cmdbuf(); - if (p == NULL) + if (p == NULL || p[0] == '\0') return (MCA_MORE); opt_lower = ASCII_IS_LOWER(p[0]); + was_curropt = curropt; curropt = findopt_name(&p, &oname, &ambig); if (curropt != NULL) { - /* - * Got a match. - * Remember the option and - * display the full option name. - */ - cmd_reset(); - mca_opt_toggle(); - for (p = oname; *p != '\0'; p++) + if (was_curropt == NULL) { - c = *p; - if (!opt_lower && ASCII_IS_LOWER(c)) - c = ASCII_TO_UPPER(c); - if (cmd_char(c) != CC_OK) - return (MCA_DONE); + /* + * Got a match. + * Remember the option and + * display the full option name. + */ + cmd_reset(); + mca_opt_toggle(); + cmd_setstring(oname, !opt_lower); } } else if (!ambig) { @@ -471,7 +480,7 @@ static int mca_opt_char(char c) * or one char of a long option name, * or one char of the option parameter. */ - if (curropt == NULL && len_cmdbuf() == 0) + if (curropt == NULL && cmdbuf_empty()) { int ret = mca_opt_first_char(c); if (ret != NO_MCA) @@ -522,7 +531,7 @@ static int mca_opt_char(char c) /* * Display a prompt appropriate for the option parameter. */ - start_mca(A_OPT_TOGGLE, opt_prompt(curropt), NULL, 0); + start_mca(A_OPT_TOGGLE, opt_prompt(curropt), NULL, CF_OPTION); return (MCA_MORE); } @@ -551,7 +560,7 @@ static int mca_search_char(char c) * * Toggle the PAST_EOF flag * @ Toggle the FIRST_FILE flag */ - if (len_cmdbuf() > 0 || literal_char) + if (!cmdbuf_empty() || literal_char) { literal_char = FALSE; return (NO_MCA); @@ -688,9 +697,13 @@ static int mca_char(char c) */ if (is_newline_char(c)) { - /* - * Execute the command. - */ + if (pasting && no_paste) + { + /* Ignore pasted input after (and including) the first newline */ + start_ignoring_input(); + return (MCA_MORE); + } + /* Execute the command. */ exec_mca(); return (MCA_DONE); } @@ -859,7 +872,7 @@ static void prompt(void) * If we've hit EOF on the last file and the -E flag is set, quit. */ if (get_quit_at_eof() == OPT_ONPLUS && - eof_displayed() && !(ch_getflags() & CH_HELPFILE) && + eof_displayed(FALSE) && !(ch_getflags() & CH_HELPFILE) && next_ifile(curr_ifile) == NULL_IFILE) quit(QUIT_OK); @@ -941,7 +954,7 @@ static void prompt(void) p = a; #endif load_line(p); - put_line(); + put_line(FALSE); } clear_eol(); } @@ -1015,14 +1028,14 @@ public void getcc_clear(void) static char getccu(void) { int c = 0; - while (c == 0 && !ABORT_SIGS()) + while (c == 0 && sigs == 0) { if (ungot == NULL) { /* Normal case: no ungotten chars. * Get char from the user. */ c = getchr(); - if (c < 0) return ('\0'); + if (c < 0) c = '\0'; } else { /* Ungotten chars available: @@ -1270,7 +1283,7 @@ static int forw_loop(int until_hilite) break; } make_display(); - forward(1, 0, 0); + forward(1, FALSE, FALSE, FALSE); } ignore_eoi = 0; ch_set_eof(); @@ -1286,6 +1299,46 @@ static int forw_loop(int until_hilite) } /* + * Ignore subsequent (pasted) input chars. + */ +public void start_ignoring_input() +{ + ignoring_input = TRUE; +#if HAVE_TIME + ignoring_input_time = get_time(); +#endif +} + +/* + * Stop ignoring input chars. + */ +public void stop_ignoring_input() +{ + ignoring_input = FALSE; + pasting = FALSE; +} + +/* + * Are we ignoring input chars? + */ +public lbool is_ignoring_input(int action) +{ + if (!ignoring_input) + return FALSE; + if (action == A_END_PASTE) + stop_ignoring_input(); +#if HAVE_TIME + if (get_time() >= ignoring_input_time + MAX_PASTE_IGNORE_SEC) + stop_ignoring_input(); +#endif + /* + * Don't ignore prefix chars so we can parse a full command + * (which might be A_END_PASTE). + */ + return (action != A_PREFIX); +} + +/* * Main command processor. * Accept and execute commands until a quit command. */ @@ -1302,7 +1355,9 @@ public void commands(void) PARG parg; IFILE old_ifile; IFILE new_ifile; +#if TAGS constant char *tagfile; +#endif search_type = SRCH_FORW; wscroll = (sc_height + 1) / 2; @@ -1392,11 +1447,14 @@ public void commands(void) * If the user backspaces past the start * of the line, abort the command. */ - if (cmd_char(c) == CC_QUIT || len_cmdbuf() == 0) + if (cmd_char(c) == CC_QUIT || cmdbuf_empty()) continue; cbuf = get_cmdbuf(); if (cbuf == NULL) - continue; + { + c = getcc(); + goto again; + } action = fcmd_decode(cbuf, &extra); } else { @@ -1426,8 +1484,16 @@ public void commands(void) if (action != A_PREFIX) cmd_reset(); + if (is_ignoring_input(action)) + continue; + switch (action) { + case A_START_PASTE: + if (no_paste) + start_ignoring_input(); + break; + case A_DIGIT: /* * First digit of a number. @@ -1451,7 +1517,7 @@ public void commands(void) cmd_exec(); if (show_attn) set_attnpos(bottompos); - forward((int) number, 0, 1); + forward((int) number, FALSE, TRUE, FALSE); break; case A_B_WINDOW: @@ -1468,10 +1534,12 @@ public void commands(void) if (number <= 0) number = get_swindow(); cmd_exec(); - backward((int) number, 0, 1); + backward((int) number, FALSE, TRUE, FALSE); break; case A_F_LINE: + case A_F_NEWLINE: + /* * Forward N (default 1) line. */ @@ -1480,17 +1548,18 @@ public void commands(void) cmd_exec(); if (show_attn == OPT_ONPLUS && number > 1) set_attnpos(bottompos); - forward((int) number, 0, 0); + forward((int) number, FALSE, FALSE, action == A_F_NEWLINE && !chopline); break; case A_B_LINE: + case A_B_NEWLINE: /* * Backward N (default 1) line. */ if (number <= 0) number = 1; cmd_exec(); - backward((int) number, 0, 0); + backward((int) number, FALSE, FALSE, action == A_B_NEWLINE && !chopline); break; case A_F_MOUSE: @@ -1498,7 +1567,7 @@ public void commands(void) * Forward wheel_lines lines. */ cmd_exec(); - forward(wheel_lines, 0, 0); + forward(wheel_lines, FALSE, FALSE, FALSE); break; case A_B_MOUSE: @@ -1506,7 +1575,7 @@ public void commands(void) * Backward wheel_lines lines. */ cmd_exec(); - backward(wheel_lines, 0, 0); + backward(wheel_lines, FALSE, FALSE, FALSE); break; case A_FF_LINE: @@ -1518,7 +1587,7 @@ public void commands(void) cmd_exec(); if (show_attn == OPT_ONPLUS && number > 1) set_attnpos(bottompos); - forward((int) number, 1, 0); + forward((int) number, TRUE, FALSE, FALSE); break; case A_BF_LINE: @@ -1528,7 +1597,7 @@ public void commands(void) if (number <= 0) number = 1; cmd_exec(); - backward((int) number, 1, 0); + backward((int) number, TRUE, FALSE, FALSE); break; case A_FF_SCREEN: @@ -1540,13 +1609,25 @@ public void commands(void) cmd_exec(); if (show_attn == OPT_ONPLUS) set_attnpos(bottompos); - forward((int) number, 1, 0); + forward((int) number, TRUE, FALSE, FALSE); + break; + + case A_BF_SCREEN: + /* + * Force backward one screen. + */ + if (number <= 0) + number = get_swindow(); + cmd_exec(); + backward((int) number, TRUE, FALSE, FALSE); break; case A_F_FOREVER: /* * Forward forever, ignoring EOF. */ + if (get_altfilename(curr_ifile) != NULL) + error("Warning: command may not work correctly when file is viewed via LESSOPEN", NULL_PARG); if (show_attn) set_attnpos(bottompos); newaction = forw_loop(0); @@ -1566,7 +1647,7 @@ public void commands(void) cmd_exec(); if (show_attn == OPT_ONPLUS) set_attnpos(bottompos); - forward(wscroll, 0, 0); + forward(wscroll, FALSE, FALSE, FALSE); break; case A_B_SCROLL: @@ -1577,7 +1658,7 @@ public void commands(void) if (number > 0) wscroll = (int) number; cmd_exec(); - backward(wscroll, 0, 0); + backward(wscroll, FALSE, FALSE, FALSE); break; case A_FREPAINT: @@ -1884,10 +1965,9 @@ public void commands(void) error("Cannot edit standard input", NULL_PARG); break; } - if (get_altfilename(curr_ifile) != NULL) + if (!no_edit_warn && get_altfilename(curr_ifile) != NULL) { - error("WARNING: This file was viewed via LESSOPEN", - NULL_PARG); + error("WARNING: This file was viewed via LESSOPEN", NULL_PARG); } start_mca(A_SHELL, "!", ml_shell, 0); /* @@ -1918,9 +1998,10 @@ public void commands(void) #endif if (number <= 0) number = 1; + cmd_exec(); if (edit_next((int) number)) { - if (get_quit_at_eof() && eof_displayed() && + if (get_quit_at_eof() && eof_displayed(FALSE) && !(ch_getflags() & CH_HELPFILE)) quit(QUIT_OK); parg.p_string = (number > 1) ? "(N-th) " : ""; @@ -1941,6 +2022,7 @@ public void commands(void) #endif if (number <= 0) number = 1; + cmd_exec(); if (edit_prev((int) number)) { parg.p_string = (number > 1) ? "(N-th) " : ""; @@ -2004,6 +2086,7 @@ public void commands(void) */ if (number <= 0) number = 1; + cmd_exec(); if (edit_index((int) number)) error("No such file", NULL_PARG); break; @@ -2016,6 +2099,7 @@ public void commands(void) break; old_ifile = curr_ifile; new_ifile = getoff_ifile(curr_ifile); + cmd_exec(); if (new_ifile == NULL_IFILE) { bell(); @@ -2085,7 +2169,18 @@ public void commands(void) * Set a mark. */ if (ch_getflags() & CH_HELPFILE) + { + if (ungot != NULL) + { + /* + * Probably from a lesskey file, in which case there + * is probably an ungotten letter from the "extra" string. + * Eat it so it is not interpreted as a command. + */ + (void) getcc(); + } break; + } start_mca(A_SETMARK, "set mark: ", NULL, 0); c = getcc(); if (is_erase_char(c) || is_newline_char(c)) diff --git a/compose.uni b/compose.uni index 04ad0b354801..0875a8dceec1 100644 --- a/compose.uni +++ b/compose.uni @@ -1,4 +1,4 @@ -/* Generated by "./mkutable -f2 Mn Me -- unicode/UnicodeData.txt" on Sun Sep 17 17:56:27 PDT 2023 */ +/* Generated by "./mkutable -f2 Mn Me -- unicode/UnicodeData.txt" on Oct 1 18:10:07 GMT 2024 */ { 0x0300, 0x036f }, /* Mn */ { 0x0483, 0x0487 }, /* Mn */ { 0x0488, 0x0489 }, /* Me */ @@ -24,7 +24,7 @@ { 0x0825, 0x0827 }, /* Mn */ { 0x0829, 0x082d }, /* Mn */ { 0x0859, 0x085b }, /* Mn */ - { 0x0898, 0x089f }, /* Mn */ + { 0x0897, 0x089f }, /* Mn */ { 0x08ca, 0x08e1 }, /* Mn */ { 0x08e3, 0x0902 }, /* Mn */ { 0x093a, 0x093a }, /* Mn */ @@ -229,8 +229,9 @@ { 0x10a3f, 0x10a3f }, /* Mn */ { 0x10ae5, 0x10ae6 }, /* Mn */ { 0x10d24, 0x10d27 }, /* Mn */ + { 0x10d69, 0x10d6d }, /* Mn */ { 0x10eab, 0x10eac }, /* Mn */ - { 0x10efd, 0x10eff }, /* Mn */ + { 0x10efc, 0x10eff }, /* Mn */ { 0x10f46, 0x10f50 }, /* Mn */ { 0x10f82, 0x10f85 }, /* Mn */ { 0x11001, 0x11001 }, /* Mn */ @@ -261,6 +262,11 @@ { 0x11340, 0x11340 }, /* Mn */ { 0x11366, 0x1136c }, /* Mn */ { 0x11370, 0x11374 }, /* Mn */ + { 0x113bb, 0x113c0 }, /* Mn */ + { 0x113ce, 0x113ce }, /* Mn */ + { 0x113d0, 0x113d0 }, /* Mn */ + { 0x113d2, 0x113d2 }, /* Mn */ + { 0x113e1, 0x113e2 }, /* Mn */ { 0x11438, 0x1143f }, /* Mn */ { 0x11442, 0x11444 }, /* Mn */ { 0x11446, 0x11446 }, /* Mn */ @@ -280,7 +286,8 @@ { 0x116ad, 0x116ad }, /* Mn */ { 0x116b0, 0x116b5 }, /* Mn */ { 0x116b7, 0x116b7 }, /* Mn */ - { 0x1171d, 0x1171f }, /* Mn */ + { 0x1171d, 0x1171d }, /* Mn */ + { 0x1171f, 0x1171f }, /* Mn */ { 0x11722, 0x11725 }, /* Mn */ { 0x11727, 0x1172b }, /* Mn */ { 0x1182f, 0x11837 }, /* Mn */ @@ -319,8 +326,11 @@ { 0x11f36, 0x11f3a }, /* Mn */ { 0x11f40, 0x11f40 }, /* Mn */ { 0x11f42, 0x11f42 }, /* Mn */ + { 0x11f5a, 0x11f5a }, /* Mn */ { 0x13440, 0x13440 }, /* Mn */ { 0x13447, 0x13455 }, /* Mn */ + { 0x1611e, 0x16129 }, /* Mn */ + { 0x1612d, 0x1612f }, /* Mn */ { 0x16af0, 0x16af4 }, /* Mn */ { 0x16b30, 0x16b36 }, /* Mn */ { 0x16f4f, 0x16f4f }, /* Mn */ @@ -350,6 +360,7 @@ { 0x1e2ae, 0x1e2ae }, /* Mn */ { 0x1e2ec, 0x1e2ef }, /* Mn */ { 0x1e4ec, 0x1e4ef }, /* Mn */ + { 0x1e5ee, 0x1e5ef }, /* Mn */ { 0x1e8d0, 0x1e8d6 }, /* Mn */ { 0x1e944, 0x1e94a }, /* Mn */ { 0xe0100, 0xe01ef }, /* Mn */ diff --git a/configure b/configure index 22c6944df624..fdd4be26d712 100755 --- a/configure +++ b/configure @@ -1673,6 +1673,60 @@ printf "%s\n" "$ac_res" >&6; } } # ac_fn_c_check_func +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else case e in #( + e) eval "$3=no" ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + ;; +esac +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_check_decl + # ac_fn_c_try_run LINENO # ---------------------- # Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that @@ -2357,7 +2411,6 @@ as_fn_append ac_header_c_list " termio.h termio_h HAVE_TERMIO_H" as_fn_append ac_header_c_list " termios.h termios_h HAVE_TERMIOS_H" as_fn_append ac_header_c_list " time.h time_h HAVE_TIME_H" as_fn_append ac_header_c_list " values.h values_h HAVE_VALUES_H" -as_fn_append ac_header_c_list " linux/magic.h linux_magic_h HAVE_LINUX_MAGIC_H" as_fn_append ac_header_c_list " sys/ioctl.h sys_ioctl_h HAVE_SYS_IOCTL_H" as_fn_append ac_header_c_list " sys/stream.h sys_stream_h HAVE_SYS_STREAM_H" as_fn_append ac_header_c_list " sys/wait.h sys_wait_h HAVE_SYS_WAIT_H" @@ -4435,7 +4488,6 @@ fi - # Checks for typedefs, structures, and compiler characteristics. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 printf %s "checking whether stat file-mode macros are broken... " >&6; } @@ -4932,6 +4984,8 @@ LIBS="$LIBS $TERMLIBS" + + # Checks for identifiers. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for void" >&5 printf %s "checking for void... " >&6; } @@ -5149,6 +5203,96 @@ then : fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else case e in #( + e) # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <float.h> +#include <limits.h> +#include <stdarg.h> +#include <stddef.h> +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See 'config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + +ac_fn_check_decl "$LINENO" "sigsetjmp" "ac_cv_have_decl_sigsetjmp" "#include <setjmp.h> +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_sigsetjmp" = xyes +then : + printf "%s\n" "#define HAVE_SIGSETJMP 1" >>confdefs.h + +fi # AC_CHECK_FUNCS may not work for inline functions, so test these separately. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for memcpy" >&5 @@ -5431,6 +5575,36 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi +have_settable_errno=no +if test $have_errno = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for settable errno" >&5 +printf %s "checking for settable errno... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if HAVE_ERRNO_H +#include <errno.h> +#else +extern int errno; +#endif +int +main (void) +{ +errno = 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SETTABLE_ERRNO 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for locale" >&5 printf %s "checking for locale... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5576,7 +5750,13 @@ fi # Check whether --with-secure was given. if test ${with_secure+y} then : - withval=$with_secure; printf "%s\n" "#define SECURE_COMPILE 1" >>confdefs.h + withval=$with_secure; +fi + +if test "x$with_secure" = "xyes" +then : + + printf "%s\n" "#define SECURE_COMPILE 1" >>confdefs.h SECURE_COMPILE=1 @@ -5588,7 +5768,6 @@ else case e in #( esac fi - # Checks for regular expression functions. have_regex=no have_posix_regex=unknown diff --git a/configure.ac b/configure.ac index 4c14de011741..41cc8b2dc8f8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. -# Copyright (C) 1984-2024 Mark Nudelman +# Copyright (C) 1984-2025 Mark Nudelman # # You may distribute under the terms of either the GNU General Public # License or the Less License, as specified in the README file. @@ -36,7 +36,7 @@ AC_CHECK_LIB(termlib, tgetent, [have_termlib=yes], [have_termlib=no]) AC_SEARCH_LIBS([regcmp], [gen intl PW]) # Checks for header files. -AC_CHECK_HEADERS_ONCE([ctype.h errno.h fcntl.h inttypes.h limits.h stdckdint.h stdio.h stdlib.h string.h termcap.h ncurses/termcap.h ncursesw/termcap.h termio.h termios.h time.h unistd.h values.h linux/magic.h sys/ioctl.h sys/stream.h sys/types.h sys/wait.h time.h wctype.h]) +AC_CHECK_HEADERS_ONCE([ctype.h errno.h fcntl.h inttypes.h limits.h stdckdint.h stdio.h stdlib.h string.h termcap.h ncurses/termcap.h ncursesw/termcap.h termio.h termios.h time.h unistd.h values.h sys/ioctl.h sys/stream.h sys/types.h sys/wait.h time.h wctype.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STAT @@ -215,7 +215,9 @@ AH_TEMPLATE([HAVE_FILENO], AH_TEMPLATE([HAVE_ERRNO], [Define HAVE_ERRNO if you have the errno variable.]) AH_TEMPLATE([MUST_DEFINE_ERRNO], - [Define MUST_DEFINE_ERRNO if you have errno but it is not define in errno.h.]) + [Define MUST_DEFINE_ERRNO if you have errno but it is not defined in errno.h.]) +AH_TEMPLATE([HAVE_SETTABLE_ERRNO], + [Define HAVE_SETTABLE_ERRNO if the errno variable can be assigned to.]) AH_TEMPLATE([HAVE_SYS_ERRLIST], [Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable.]) AH_TEMPLATE([HAVE_OSPEED], @@ -234,6 +236,8 @@ AH_TEMPLATE([HAVE_SIGSET_T], [Define HAVE_SIGSET_T you have the sigset_t type.]) AH_TEMPLATE([HAVE_SIGEMPTYSET], [Define HAVE_SIGEMPTYSET if you have the sigemptyset macro.]) +AH_TEMPLATE([HAVE_SIGSETJMP], + [Define HAVE_SIGSETJMP if you have sigsetjmp and siglongjmp.]) AH_TEMPLATE([EDIT_PGM], [Define EDIT_PGM to your editor.]) AH_TEMPLATE([SECURE_COMPILE], @@ -256,6 +260,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int f(int a) { return a; }]])],[AC_MS # Checks for library functions. AC_CHECK_FUNCS([fchmod fsync nanosleep poll popen realpath _setjmp sigprocmask sigsetmask snprintf stat strsignal system ttyname usleep]) +AC_CHECK_DECL(sigsetjmp, [AC_DEFINE(HAVE_SIGSETJMP)], [], [#include <setjmp.h>]) # AC_CHECK_FUNCS may not work for inline functions, so test these separately. AC_MSG_CHECKING(for memcpy) @@ -320,6 +325,17 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #endif]], [[extern int errno; static int x; x = errno;]])],[AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_ERRNO) AC_DEFINE(MUST_DEFINE_ERRNO)],[AC_MSG_RESULT(no)]) fi +have_settable_errno=no +if test $have_errno = yes; then +AC_MSG_CHECKING(for settable errno) +AC_LINK_IFELSE([AC_LANG_PROGRAM([[ +#if HAVE_ERRNO_H +#include <errno.h> +#else +extern int errno; +#endif]], [[errno = 0;]])],[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SETTABLE_ERRNO)],[]) +fi + AC_MSG_CHECKING(for locale) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <locale.h> #include <ctype.h> @@ -351,10 +367,11 @@ fi # Compile in secure mode? AC_ARG_WITH(secure, - [ --with-secure Compile in secure mode], + [ --with-secure Compile in secure mode]) +AS_IF([test "x$with_secure" = "xyes"],[ AC_DEFINE(SECURE_COMPILE, 1) - AC_SUBST(SECURE_COMPILE,1), AC_DEFINE(SECURE_COMPILE, 0) - AC_SUBST(SECURE_COMPILE,0)) + AC_SUBST(SECURE_COMPILE,1)], [AC_DEFINE(SECURE_COMPILE, 0) + AC_SUBST(SECURE_COMPILE,0)]) # Checks for regular expression functions. have_regex=no @@ -673,6 +690,7 @@ AH_TOP([ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 512 /* Max size of line in tags file */ #define TABSTOP_MAX 32 /* Max number of custom tab stops */ +#define LINENUM_POOL 200 /* Size of line number pool */ #else /* more reasonable sizes for modern machines */ #define CMDBUF_SIZE 2048 /* Buffer for multichar commands */ #define UNGOT_SIZE 200 /* Max chars to unget() */ @@ -683,6 +701,7 @@ AH_TOP([ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 1024 /* Max size of line in tags file */ #define TABSTOP_MAX 128 /* Max number of custom tab stops */ +#define LINENUM_POOL 1024 /* Size of line number pool */ #endif /* Define as the return type of signal handlers (int or void). */ @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -37,6 +37,8 @@ extern int erase_char, erase2_char, kill_char; extern int mousecap; extern int sc_height; +static constant lbool allow_drag = TRUE; + #if USERFILE /* "content" is lesskey source, never binary. */ static void add_content_table(int (*call_lesskey)(constant char *, lbool), constant char *envname, lbool sysvar); @@ -86,6 +88,9 @@ static unsigned char cmdtable[] = 'z',0, A_F_WINDOW, 'w',0, A_B_WINDOW, ESC,' ',0, A_FF_SCREEN, + ESC,'b',0, A_BF_SCREEN, + ESC,'j',0, A_F_NEWLINE, + ESC,'k',0, A_B_NEWLINE, 'F',0, A_F_FOREVER, ESC,'F',0, A_F_UNTIL_HILITE, 'R',0, A_FREPAINT, @@ -178,6 +183,8 @@ static unsigned char cmdtable[] = '!',0, A_SHELL, '#',0, A_PSHELL, '+',0, A_FIRSTCMD, + ESC,'[','2','0','0','~',0, A_START_PASTE, + ESC,'[','2','0','1','~',0, A_END_PASTE, 'H',0, A_HELP, 'h',0, A_HELP, @@ -229,6 +236,8 @@ static unsigned char edittable[] = CONTROL('G'),0, EC_ABORT, /* CTRL-G */ ESC,'[','M',0, EC_X11MOUSE, /* X11 mouse report */ ESC,'[','<',0, EC_X116MOUSE, /* X11 1006 mouse report */ + ESC,'[','2','0','0','~',0, A_START_PASTE, /* open paste bracket */ + ESC,'[','2','0','1','~',0, A_END_PASTE, /* close paste bracket */ }; static unsigned char dflt_vartable[] = @@ -514,22 +523,42 @@ static int mouse_wheel_up(void) /* * Return action for the left mouse button trigger. */ -static int mouse_button_left(int x, int y) +static int mouse_button_left(int x, int y, lbool down, lbool drag) { - /* - * {{ It would be better to return an action and then do this - * in commands() but it's nontrivial to pass y to it. }} - */ + static int last_drag_y = -1; + static int last_click_y = -1; + + if (down && !drag) + { + last_drag_y = last_click_y = y; + } + if (allow_drag && drag && last_drag_y >= 0) + { + /* Drag text up/down */ + if (y > last_drag_y) + { + cmd_exec(); + backward(y - last_drag_y, FALSE, FALSE, FALSE); + last_drag_y = y; + } else if (y < last_drag_y) + { + cmd_exec(); + forward(last_drag_y - y, FALSE, FALSE, FALSE); + last_drag_y = y; + } + } else if (!down) + { #if OSC8_LINK - if (osc8_click(y, x)) - return (A_NOACTION); + if (osc8_click(y, x)) + return (A_NOACTION); #else - (void) x; + (void) x; #endif /* OSC8_LINK */ - if (y < sc_height-1) - { - setmark('#', y); - screen_trashed(); + if (y < sc_height-1 && y == last_click_y) + { + setmark('#', y); + screen_trashed(); + } } return (A_NOACTION); } @@ -537,14 +566,14 @@ static int mouse_button_left(int x, int y) /* * Return action for the right mouse button trigger. */ -static int mouse_button_right(int x, int y) +static int mouse_button_right(int x, int y, lbool down, lbool drag) { - (void) x; + (void) x; (void) drag; /* * {{ unlike mouse_button_left, we could return an action, * but keep it near mouse_button_left for readability. }} */ - if (y < sc_height-1) + if (!down && y < sc_height-1) { gomark('#'); screen_trashed(); @@ -575,49 +604,61 @@ static int getcc_int(char *pterm) } } +static int x11mouse_button(int btn, int x, int y, lbool down, lbool drag) +{ + switch (btn) { + case X11MOUSE_BUTTON1: + return mouse_button_left(x, y, down, drag); + /* is BUTTON2 the rightmost with 2-buttons mouse? */ + case X11MOUSE_BUTTON2: + case X11MOUSE_BUTTON3: + return mouse_button_right(x, y, down, drag); + } + return (A_NOACTION); +} + /* * Read suffix of mouse input and return the action to take. * The prefix ("\e[M") has already been read. */ -static int x11mouse_action(int skip) +static int x11mouse_action(lbool skip) { static int prev_b = X11MOUSE_BUTTON_REL; + int x, y; int b = getcc() - X11MOUSE_OFFSET; - int x = getcc() - X11MOUSE_OFFSET-1; - int y = getcc() - X11MOUSE_OFFSET-1; + lbool drag = ((b & X11MOUSE_DRAG) != 0); + b &= ~X11MOUSE_DRAG; + x = getcc() - X11MOUSE_OFFSET-1; + y = getcc() - X11MOUSE_OFFSET-1; if (skip) return (A_NOACTION); switch (b) { - default: - prev_b = b; - return (A_NOACTION); case X11MOUSE_WHEEL_DOWN: return mouse_wheel_down(); case X11MOUSE_WHEEL_UP: return mouse_wheel_up(); - case X11MOUSE_BUTTON_REL: - /* to trigger on button-up, we check the last button-down */ - switch (prev_b) { - case X11MOUSE_BUTTON1: - return mouse_button_left(x, y); - /* is BUTTON2 the rightmost with 2-buttons mouse? */ - case X11MOUSE_BUTTON2: - case X11MOUSE_BUTTON3: - return mouse_button_right(x, y); - } - return (A_NOACTION); + case X11MOUSE_BUTTON1: + case X11MOUSE_BUTTON2: + case X11MOUSE_BUTTON3: + prev_b = b; + return x11mouse_button(b, x, y, TRUE, drag); + case X11MOUSE_BUTTON_REL: /* button up */ + return x11mouse_button(prev_b, x, y, FALSE, drag); } + return (A_NOACTION); } /* * Read suffix of mouse input and return the action to take. * The prefix ("\e[<") has already been read. */ -static int x116mouse_action(int skip) +static int x116mouse_action(lbool skip) { char ch; int x, y; int b = getcc_int(&ch); + lbool drag = ((b & X11MOUSE_DRAG) != 0); + b &= ~X11MOUSE_DRAG; if (b < 0 || ch != ';') return (A_NOACTION); x = getcc_int(&ch) - 1; if (x < 0 || ch != ';') return (A_NOACTION); @@ -631,106 +672,94 @@ static int x116mouse_action(int skip) case X11MOUSE_WHEEL_UP: return mouse_wheel_up(); case X11MOUSE_BUTTON1: - if (ch != 'm') return (A_NOACTION); - return mouse_button_left(x, y); - default: - if (ch != 'm') return (A_NOACTION); - /* any other button release */ - return mouse_button_right(x, y); + case X11MOUSE_BUTTON2: + case X11MOUSE_BUTTON3: { + lbool down = (ch == 'M'); + lbool up = (ch == 'm'); + if (up || down) + return x11mouse_button(b, x, y, down, drag); + break; } } + return (A_NOACTION); } /* - * Search a single command table for the command string in cmd. + * Return the largest N such that the first N chars of goal + * are equal to the last N chars of str. */ -static int cmd_search(constant char *cmd, constant char *table, constant char *endtable, constant char **sp) +static size_t cmd_match(constant char *goal, constant char *str) { - constant char *p; - constant char *q; - int a = A_INVALID; + size_t slen = strlen(str); + size_t len; + for (len = slen; len > 0; len--) + if (strncmp(str + slen - len, goal, len) == 0) + break; + return len; +} - *sp = NULL; - for (p = table, q = cmd; p < endtable; p++, q++) +/* + * Return pointer to next command table entry. + * Also return the action and the extra string from the entry. + */ +static constant unsigned char * cmd_next_entry(constant unsigned char *entry, mutable int *action, mutable constant unsigned char **extra, mutable size_t *cmdlen) +{ + int a; + constant unsigned char *oentry = entry; + while (*entry != '\0') /* skip cmd */ + ++entry; + if (cmdlen != NULL) + *cmdlen = ptr_diff(entry, oentry); + do + a = *++entry; /* get action */ + while (a == A_SKIP); + ++entry; /* skip action */ + if (extra != NULL) + *extra = (a & A_EXTRA) ? entry : NULL; + if (a & A_EXTRA) { - if (*p == *q) + while (*entry++ != '\0') /* skip extra string */ + continue; + a &= ~A_EXTRA; + } + if (action != NULL) + *action = a; + return entry; +} + +/* + * Search a single command table for the command string in cmd. + */ +static int cmd_search(constant char *cmd, constant unsigned char *table, constant unsigned char *endtable, constant unsigned char **extra, size_t *mlen) +{ + int action = A_INVALID; + size_t match_len = 0; + if (extra != NULL) + *extra = NULL; + while (table < endtable) + { + int taction; + const unsigned char *textra; + size_t cmdlen; + size_t match = cmd_match((constant char *) table, cmd); + table = cmd_next_entry(table, &taction, &textra, &cmdlen); + if (taction == A_END_LIST) + return (-action); + if (match >= match_len) { - /* - * Current characters match. - * If we're at the end of the string, we've found it. - * Return the action code, which is the character - * after the null at the end of the string - * in the command table. - */ - if (*p == '\0') + if (match == cmdlen) /* (last chars of) cmd matches this table entry */ { - a = *++p & 0377; - while (a == A_SKIP) - a = *++p & 0377; - if (a == A_END_LIST) - { - /* - * We get here only if the original - * cmd string passed in was empty (""). - * I don't think that can happen, - * but just in case ... - */ - return (A_UINVALID); - } - /* - * Check for an "extra" string. - */ - if (a & A_EXTRA) - { - *sp = ++p; - while (*p != '\0') - ++p; - a &= ~A_EXTRA; - } - if (a == A_X11MOUSE_IN) - a = x11mouse_action(0); - else if (a == A_X116MOUSE_IN) - a = x116mouse_action(0); - q = cmd-1; - } - } else if (*q == '\0') - { - /* - * Hit the end of the user's command, - * but not the end of the string in the command table. - * The user's command is incomplete. - */ - if (a == A_INVALID) - a = A_PREFIX; - q = cmd-1; - } else - { - /* - * Not a match. - * Skip ahead to the next command in the - * command table, and reset the pointer - * to the beginning of the user's command. - */ - if (*p == '\0' && p[1] == A_END_LIST) + action = taction; + *extra = textra; + } else if (match > 0) /* cmd is a prefix of this table entry */ { - /* - * A_END_LIST is a special marker that tells - * us to abort the cmd search. - * Negative action means accept this action - * without searching any more cmd tables. - */ - return -a; + action = A_PREFIX; } - while (*p++ != '\0') - continue; - while (*p == A_SKIP) - p++; - if (*p & A_EXTRA) - while (*++p != '\0') - continue; - q = cmd-1; + match_len = match; } } - return (a); + if (mlen != NULL) + *mlen = match_len; + return (action); } /* @@ -741,6 +770,7 @@ static int cmd_decode(struct tablelist *tlist, constant char *cmd, constant char { struct tablelist *t; int action = A_INVALID; + size_t match_len = 0; /* * Search for the cmd thru all the command tables. @@ -749,18 +779,30 @@ static int cmd_decode(struct tablelist *tlist, constant char *cmd, constant char *sp = NULL; for (t = tlist; t != NULL; t = t->t_next) { - constant char *tsp; - int taction = cmd_search(cmd, (char *) t->t_start, (char *) t->t_end, &tsp); - if (taction == A_UINVALID) - taction = A_INVALID; - if (taction != A_INVALID) + constant unsigned char *tsp; + size_t mlen; + int taction = cmd_search(cmd, t->t_start, t->t_end, &tsp, &mlen); + if (mlen >= match_len) { - *sp = tsp; - if (taction < 0) - return (-taction); - action = taction; + match_len = mlen; + if (taction == A_UINVALID) + taction = A_INVALID; + if (taction != A_INVALID) + { + *sp = (constant char *) tsp; + if (taction < 0) + { + action = -taction; + break; + } + action = taction; + } } } + if (action == A_X11MOUSE_IN) + action = x11mouse_action(FALSE); + else if (action == A_X116MOUSE_IN) + action = x116mouse_action(FALSE); return (action); } @@ -780,6 +822,7 @@ public int ecmd_decode(constant char *cmd, constant char **sp) return (cmd_decode(list_ecmd_tables, cmd, sp)); } + /* * Get the value of an environment variable. * Looks first in the lesskey file, then in the real environment. @@ -1003,10 +1046,12 @@ public int lesskey(constant char *filename, lbool sysvar) #if HAVE_LESSKEYSRC static int lesskey_text(constant char *filename, lbool sysvar, lbool content) { + int r; static struct lesskey_tables tables; + if (!secure_allow(SF_LESSKEY)) return (1); - int r = content ? parse_lesskey_content(filename, &tables) : parse_lesskey(filename, &tables); + r = content ? parse_lesskey_content(filename, &tables) : parse_lesskey(filename, &tables); if (r != 0) return (r); add_fcmd_table(tables.cmdtable.buf.data, tables.cmdtable.buf.end); @@ -1080,8 +1125,10 @@ static int add_hometable(int (*call_lesskey)(constant char *, lbool), constant c */ static void add_content_table(int (*call_lesskey)(constant char *, lbool), constant char *envname, lbool sysvar) { + constant char *content; + (void) call_lesskey; /* not used */ - constant char *content = lgetenv(envname); + content = lgetenv(envname); if (isnullenv(content)) return; lesskey_content(content, sysvar); @@ -1130,9 +1177,9 @@ public int editchar(char c, int flags) } while (action == A_PREFIX && nch < MAX_CMDLEN); if (action == EC_X11MOUSE) - return (x11mouse_action(1)); + return (x11mouse_action(TRUE)); if (action == EC_X116MOUSE) - return (x116mouse_action(1)); + return (x116mouse_action(TRUE)); if (flags & ECF_NORIGHTLEFT) { @@ -1160,7 +1207,6 @@ public int editchar(char c, int flags) } } #endif -#if TAB_COMPLETE_FILENAME if (flags & ECF_NOCOMPLETE) { /* @@ -1176,7 +1222,6 @@ public int editchar(char c, int flags) break; } } -#endif if ((flags & ECF_PEEK) || action == A_INVALID) { /* diff --git a/defines.ds b/defines.ds index 03b9cc13165c..f48cf752b8c9 100644 --- a/defines.ds +++ b/defines.ds @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -210,6 +210,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 512 /* Max size of line in tags file */ #define TABSTOP_MAX 32 /* Max number of custom tab stops */ +#define LINENUM_POOL 200 /* Size of line number pool */ #else /* more reasonable sizes for modern machines */ #define CMDBUF_SIZE 2048 /* Buffer for multichar commands */ #define UNGOT_SIZE 200 /* Max chars to unget() */ @@ -220,6 +221,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 1024 /* Max size of line in tags file */ #define TABSTOP_MAX 128 /* Max number of custom tab stops */ +#define LINENUM_POOL 1024 /* Size of line number pool */ #endif /* Define to `long' if <sys/types.h> doesn't define. */ @@ -278,6 +280,7 @@ #define HAVE_ERRNO 1 #define MUST_DEFINE_ERRNO 1 #endif +#define HAVE_SETTABLE_ERRNO 1 /* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */ #define HAVE_SYS_ERRLIST 1 diff --git a/defines.h.in b/defines.h.in index 2b53b6ba48ef..a48bc341cc3e 100644 --- a/defines.h.in +++ b/defines.h.in @@ -207,6 +207,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 512 /* Max size of line in tags file */ #define TABSTOP_MAX 32 /* Max number of custom tab stops */ +#define LINENUM_POOL 200 /* Size of line number pool */ #else /* more reasonable sizes for modern machines */ #define CMDBUF_SIZE 2048 /* Buffer for multichar commands */ #define UNGOT_SIZE 200 /* Max chars to unget() */ @@ -217,6 +218,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 1024 /* Max size of line in tags file */ #define TABSTOP_MAX 128 /* Max number of custom tab stops */ +#define LINENUM_POOL 1024 /* Size of line number pool */ #endif /* Define as the return type of signal handlers (int or void). */ @@ -261,9 +263,6 @@ /* Define to 1 if you have the <limits.h> header file. */ #undef HAVE_LIMITS_H -/* Define to 1 if you have the <linux/magic.h> header file. */ -#undef HAVE_LINUX_MAGIC_H - /* Define HAVE_LOCALE if you have locale.h and setlocale. */ #undef HAVE_LOCALE @@ -306,12 +305,18 @@ /* BSD re_comp() */ #undef HAVE_RE_COMP +/* Define HAVE_SETTABLE_ERRNO if the errno variable can be assigned to. */ +#undef HAVE_SETTABLE_ERRNO + /* Define HAVE_SIGEMPTYSET if you have the sigemptyset macro. */ #undef HAVE_SIGEMPTYSET /* Define to 1 if you have the 'sigprocmask' function. */ #undef HAVE_SIGPROCMASK +/* Define HAVE_SIGSETJMP if you have sigsetjmp and siglongjmp. */ +#undef HAVE_SIGSETJMP + /* Define to 1 if you have the 'sigsetmask' function. */ #undef HAVE_SIGSETMASK @@ -420,8 +425,8 @@ /* Define to 1 if you have the '_setjmp' function. */ #undef HAVE__SETJMP -/* Define MUST_DEFINE_ERRNO if you have errno but it is not define in errno.h. - */ +/* Define MUST_DEFINE_ERRNO if you have errno but it is not defined in + errno.h. */ #undef MUST_DEFINE_ERRNO /* Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined in diff --git a/defines.o2 b/defines.o2 index a4755bd46887..6b540f739c3f 100644 --- a/defines.o2 +++ b/defines.o2 @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -191,6 +191,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 512 /* Max size of line in tags file */ #define TABSTOP_MAX 32 /* Max number of custom tab stops */ +#define LINENUM_POOL 200 /* Size of line number pool */ #else /* more reasonable sizes for modern machines */ #define CMDBUF_SIZE 2048 /* Buffer for multichar commands */ #define UNGOT_SIZE 200 /* Max chars to unget() */ @@ -201,6 +202,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 1024 /* Max size of line in tags file */ #define TABSTOP_MAX 128 /* Max number of custom tab stops */ +#define LINENUM_POOL 1024 /* Size of line number pool */ #endif /* Define to `long' if <sys/types.h> doesn't define. */ @@ -245,10 +247,11 @@ #define HAVE_FILENO 1 /* Define HAVE_ERRNO if you have the errno variable */ -/* Define MUST_DEFINE_ERRNO if you have errno but it is not define - * in errno.h */ #define HAVE_ERRNO 1 +/* Define MUST_DEFINE_ERRNO if you have errno but it is not defined in errno.h */ /* #undef MUST_DEFINE_ERRNO */ +/* Define HAVE_SETTABLE_ERRNO if the errno variable can be assigned to. */ +#define HAVE_SETTABLE_ERRNO 1 /* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */ #define HAVE_SYS_ERRLIST 1 diff --git a/defines.o9 b/defines.o9 index e387257d1728..fd53cf3a9fe8 100644 --- a/defines.o9 +++ b/defines.o9 @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -198,6 +198,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 512 /* Max size of line in tags file */ #define TABSTOP_MAX 32 /* Max number of custom tab stops */ +#define LINENUM_POOL 200 /* Size of line number pool */ #else /* more reasonable sizes for modern machines */ #define CMDBUF_SIZE 2048 /* Buffer for multichar commands */ #define UNGOT_SIZE 200 /* Max chars to unget() */ @@ -208,6 +209,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 1024 /* Max size of line in tags file */ #define TABSTOP_MAX 128 /* Max number of custom tab stops */ +#define LINENUM_POOL 1024 /* Size of line number pool */ #endif /* Define to `long' if <sys/types.h> doesn't define. */ @@ -256,10 +258,11 @@ #define HAVE_FILENO 1 /* Define HAVE_ERRNO if you have the errno variable */ -/* Define MUST_DEFINE_ERRNO if you have errno but it is not define - * in errno.h */ #define HAVE_ERRNO 1 +/* Define MUST_DEFINE_ERRNO if you have errno but it is not defined in errno.h */ #define MUST_DEFINE_ERRNO 0 +/* Define HAVE_SETTABLE_ERRNO if the errno variable can be assigned to. */ +#define HAVE_SETTABLE_ERRNO 1 /* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */ #define HAVE_SYS_ERRLIST 0 diff --git a/defines.wn b/defines.wn index e64ab594e1a0..120d29ed98ae 100644 --- a/defines.wn +++ b/defines.wn @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -192,6 +192,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 512 /* Max size of line in tags file */ #define TABSTOP_MAX 32 /* Max number of custom tab stops */ +#define LINENUM_POOL 200 /* Size of line number pool */ #else /* more reasonable sizes for modern machines */ #define CMDBUF_SIZE 2048 /* Buffer for multichar commands */ #define UNGOT_SIZE 200 /* Max chars to unget() */ @@ -202,6 +203,7 @@ #define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */ #define TAGLINE_SIZE 1024 /* Max size of line in tags file */ #define TABSTOP_MAX 128 /* Max number of custom tab stops */ +#define LINENUM_POOL 1024 /* Size of line number pool */ #endif /* Define to `long' if <sys/types.h> doesn't define. */ @@ -263,10 +265,11 @@ #define HAVE_FILENO 1 /* Define HAVE_ERRNO if you have the errno variable */ -/* Define MUST_DEFINE_ERRNO if you have errno but it is not define - * in errno.h */ #define HAVE_ERRNO 1 +/* Define MUST_DEFINE_ERRNO if you have errno but it is not defined in errno.h */ #define MUST_DEFINE_ERRNO 0 +/* Define HAVE_SETTABLE_ERRNO if the errno variable can be assigned to. */ +#define HAVE_SETTABLE_ERRNO 1 /* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */ #define HAVE_SYS_ERRLIST 1 @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -36,6 +36,7 @@ extern IFILE curr_ifile; extern IFILE old_ifile; extern struct scrpos initial_scrpos; extern void *ml_examine; +extern POSITION soft_eof; #if SPACES_IN_FILENAMES extern char openquote; extern char closequote; @@ -531,7 +532,7 @@ public int edit_ifile(IFILE ifile) error("%s", &parg); free(p); return edit_error(filename, alt_filename, altpipe, ifile); - } else if ((f = open(open_filename, OPEN_READ)) < 0) + } else if ((f = iopen(open_filename, OPEN_READ)) < 0) { /* * Got an error trying to open it. @@ -604,6 +605,7 @@ public int edit_ifile(IFILE ifile) * Get the saved position for the file. */ curr_ifile = ifile; + soft_eof = NULL_POSITION; set_altfilename(curr_ifile, alt_filename); set_altpipe(curr_ifile, altpipe); set_open(curr_ifile); /* File has been opened */ @@ -656,6 +658,7 @@ public int edit_ifile(IFILE ifile) #if HILITE_SEARCH clr_hilite(); #endif + undo_osc8(); hshift = 0; if (strcmp(filename, FAKE_HELPFILE) && strcmp(filename, FAKE_EMPTYFILE)) { @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -28,7 +28,7 @@ static size_t skipsl(constant char *buf, size_t len, size_t e) lbool esc = FALSE; while (e < len && buf[e] != '\0' && (esc || (buf[e] != '/' && buf[e] != '}'))) { - esc = (!esc && buf[e] == '\\'); + esc = (!esc && buf[e] == '\\' && buf[e+1] != '\0'); ++e; } return e; @@ -150,7 +150,7 @@ static size_t add_evar(struct xbuffer *xbuf, mutable char *buf, size_t len, size size_t r; for (r = 0; repl[r] != '\0'; r++) { - if (repl[r] == '\\') ++r; + if (repl[r] == '\\' && repl[r+1] != '\0') ++r; xbuf_add_char(xbuf, repl[r]); } } diff --git a/filename.c b/filename.c index 219eac730e80..28ff25e4dcb8 100644 --- a/filename.c +++ b/filename.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -288,7 +288,7 @@ public char * homefile(constant char *filename) if (pathname != NULL) return (pathname); #endif -#if MSDOS_COMPILER || OS2 +#if (MSDOS_COMPILER && MSDOS_COMPILER!=WIN32C) || OS2 /* Look for the file anywhere on search path. */ pathname = (char *) ecalloc(_MAX_PATH, sizeof(char)); #if MSDOS_COMPILER==DJGPPC @@ -496,7 +496,7 @@ public int bin_file(int f, ssize_t *n) struct ansi_state *pansi; if (ctldisp == OPT_ONPLUS && (pansi = ansi_start(c)) != NULL) { - skip_ansi(pansi, &p, edata); + skip_ansi(pansi, c, &p, edata); ansi_done(pansi); } else if (binary_char(c)) bin_count++; @@ -1,4 +1,4 @@ -/* Generated by "./mkutable -f2 Cf -- unicode/UnicodeData.txt" on Sun Sep 17 17:56:27 PDT 2023 */ +/* Generated by "./mkutable -f2 Cf -- unicode/UnicodeData.txt" on Oct 1 18:10:07 GMT 2024 */ { 0x00ad, 0x00ad }, /* Cf */ { 0x0600, 0x0605 }, /* Cf */ { 0x061c, 0x061c }, /* Cf */ diff --git a/forwback.c b/forwback.c index b0efc47f0ad6..992365749063 100644 --- a/forwback.c +++ b/forwback.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -19,8 +19,11 @@ public lbool squished; public int no_back_scroll = 0; public int forw_prompt; -public int first_time = 1; -public lbool no_eof_bell = FALSE; +public lbool first_time = TRUE; /* We're printing the first screen of output */ +public int shell_lines = 1; +/* soft_eof is set as end-of-file when a read attempt returns EOF. This can + * differ from actual EOF (ch_length()) if & filtering is in effect. */ +public POSITION soft_eof = NULL_POSITION; extern int sigs; extern int top_scroll; @@ -35,9 +38,10 @@ extern int ignore_eoi; extern int header_lines; extern int header_cols; extern int full_screen; +extern int stop_on_form_feed; extern POSITION header_start_pos; +extern lbool getting_one_screen; #if HILITE_SEARCH -extern size_t size_linebuf; extern int hilite_search; extern int status_col; #endif @@ -50,14 +54,14 @@ extern char *tagoption; */ public void eof_bell(void) { - if (no_eof_bell) - return; #if HAVE_TIME - static time_type last_eof_bell = 0; - time_type now = get_time(); - if (now == last_eof_bell) /* max once per second */ - return; - last_eof_bell = now; + { + static time_type last_eof_bell = 0; + time_type now = get_time(); + if (now == last_eof_bell) /* max once per second */ + return; + last_eof_bell = now; + } #endif if (quiet == NOT_QUIET) bell(); @@ -68,7 +72,7 @@ public void eof_bell(void) /* * Check to see if the end of file is currently displayed. */ -public lbool eof_displayed(void) +public lbool eof_displayed(lbool offset) { POSITION pos; @@ -87,8 +91,8 @@ public lbool eof_displayed(void) * If the bottom line ends at the file length, * we must be just at EOF. */ - pos = position(BOTTOM_PLUS_ONE); - return (pos == NULL_POSITION || pos == ch_length()); + pos = position(offset ? BOTTOM_OFFSET : BOTTOM_PLUS_ONE); + return (pos == NULL_POSITION || pos == ch_length() || pos == soft_eof); } /* @@ -99,7 +103,7 @@ public lbool entire_file_displayed(void) POSITION pos; /* Make sure last line of file is displayed. */ - if (!eof_displayed()) + if (!eof_displayed(TRUE)) return (FALSE); /* Make sure first line of file is displayed. */ @@ -134,7 +138,7 @@ static POSITION forw_line_pfx(POSITION pos, int pfx, int skipeol) sc_width = pfx + line_pfx_width(); auto_wrap = 0; hshift = 0; - pos = forw_line_seg(pos, skipeol, FALSE, FALSE); + pos = forw_line_seg(pos, skipeol, FALSE, FALSE, NULL, NULL); sc_width = save_sc_width; auto_wrap = save_auto_wrap; hshift = save_hshift; @@ -169,10 +173,10 @@ public int overlay_header(void) home(); for (ln = 0; ln < header_lines; ++ln) { - pos = forw_line(pos); + pos = forw_line(pos, NULL, NULL); set_attr_header(ln); clear_eol(); - put_line(); + put_line(FALSE); } moved = TRUE; } @@ -192,7 +196,7 @@ public int overlay_header(void) /* Need skipeol for all header lines except the last one. */ pos = forw_line_pfx(pos, header_cols, ln+1 < header_lines); set_attr_header(ln); - put_line(); + put_line(FALSE); } } moved = TRUE; @@ -210,11 +214,14 @@ public int overlay_header(void) * "nblank" is the number of blank lines to draw before the first * real line. If nblank > 0, the pos must be NULL_POSITION. * The first real line after the blanks will start at ch_zero(). + * "to_newline" means count file lines rather than screen lines. */ -public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) +public void forw(int n, POSITION pos, lbool force, lbool only_last, lbool to_newline, int nblank) { int nlines = 0; lbool do_repaint; + lbool newline; + lbool first_line = TRUE; if (pos != NULL_POSITION) pos = after_header_pos(pos); @@ -231,14 +238,6 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) */ do_repaint = (only_last && n > sc_height-1) || (forw_scroll >= 0 && n > forw_scroll && n != sc_height-1); - -#if HILITE_SEARCH - if (pos != NULL_POSITION && (hilite_search == OPT_ONPLUS || is_filtering() || status_col)) { - prep_hilite(pos, pos + (POSITION) (4*size_linebuf), ignore_eoi ? 1 : -1); - pos = next_unfiltered(pos); - } -#endif - if (!do_repaint) { if (top_scroll && n >= sc_height - 1 && pos != ch_length()) @@ -250,7 +249,6 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) * but we don't yet know if that will happen. }} */ pos_clear(); - add_forw_pos(pos); force = TRUE; clear(); home(); @@ -264,7 +262,6 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) * (position table) and start a new screen. */ pos_clear(); - add_forw_pos(pos); force = TRUE; if (top_scroll) { @@ -279,6 +276,7 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) while (--n >= 0) { + POSITION linepos = NULL_POSITION; /* * Read the next line of input. */ @@ -297,10 +295,10 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) /* * Get the next line from the file. */ - pos = forw_line(pos); -#if HILITE_SEARCH - pos = next_unfiltered(pos); -#endif + POSITION opos = pos; + pos = forw_line(pos, &linepos, &newline); + if (to_newline && !newline) + ++n; if (pos == NULL_POSITION) { /* @@ -309,19 +307,23 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) * Even if force is true, stop when the last * line in the file reaches the top of screen. */ - if (!force && position(TOP) != NULL_POSITION) - break; - if (!empty_lines(0, 0) && - !empty_lines(1, 1) && - empty_lines(2, sc_height-1)) + soft_eof = opos; + linepos = opos; + if (ABORT_SIGS() || + (!force && position(TOP) != NULL_POSITION) || + (!empty_lines(0, 0) && !empty_lines(1, 1) && empty_lines(2, sc_height-1))) + { + pos = opos; break; + } } } /* * Add the position of the next line to the position table. * Display the current line on the screen. */ - add_forw_pos(pos); + add_forw_pos(linepos, first_line); + first_line = FALSE; nlines++; if (do_repaint) continue; @@ -345,30 +347,13 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) squished = TRUE; continue; } - put_line(); -#if 0 - /* {{ - * Can't call clear_eol here. The cursor might be at end of line - * on an ignaw terminal, so clear_eol would clear the last char - * of the current line instead of all of the next line. - * If we really need to do this on clear_bg terminals, we need - * to find a better way. - * }} - */ - if (clear_bg && apply_at_specials(final_attr) != AT_NORMAL) - { - /* - * Writing the last character on the last line - * of the display may have scrolled the screen. - * If we were in standout mode, clear_bg terminals - * will fill the new line with the standout color. - * Now we're in normal mode again, so clear the line. - */ - clear_eol(); - } -#endif + put_line(TRUE); + if (stop_on_form_feed && !do_repaint && line_is_ff() && position(TOP) != NULL_POSITION) + break; forw_prompt = 1; } + if (!first_line) + add_forw_pos(pos, FALSE); if (nlines == 0 && !ignore_eoi) eof_bell(); else if (do_repaint) @@ -378,34 +363,30 @@ public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank) overlay_header(); /* lower_left(); {{ considered harmful? }} */ } - first_time = 0; + first_time = FALSE; (void) currline(BOTTOM); } /* * Display n lines, scrolling backward. */ -public void back(int n, POSITION pos, lbool force, lbool only_last) +public void back(int n, POSITION pos, lbool force, lbool only_last, lbool to_newline) { int nlines = 0; lbool do_repaint; + lbool newline; squish_check(); do_repaint = (n > get_back_scroll() || (only_last && n > sc_height-1) || header_lines > 0); -#if HILITE_SEARCH - if (pos != NULL_POSITION && (hilite_search == OPT_ONPLUS || is_filtering() || status_col)) { - prep_hilite((pos < (POSITION) (3*size_linebuf)) ? 0 : pos - (POSITION) (3*size_linebuf), pos, -1); - } -#endif + while (--n >= 0) { /* * Get the previous line of input. */ -#if HILITE_SEARCH - pos = prev_unfiltered(pos); -#endif - pos = back_line(pos); + pos = back_line(pos, &newline); + if (to_newline && !newline) + ++n; if (pos == NULL_POSITION) { /* @@ -431,7 +412,9 @@ public void back(int n, POSITION pos, lbool force, lbool only_last) { home(); add_line(); - put_line(); + put_line(FALSE); + if (stop_on_form_feed && line_is_ff()) + break; } } if (nlines == 0) @@ -450,11 +433,11 @@ public void back(int n, POSITION pos, lbool force, lbool only_last) * Display n more lines, forward. * Start just after the line currently displayed at the bottom of the screen. */ -public void forward(int n, lbool force, lbool only_last) +public void forward(int n, lbool force, lbool only_last, lbool to_newline) { POSITION pos; - if (get_quit_at_eof() && eof_displayed() && !(ch_getflags() & CH_HELPFILE)) + if (get_quit_at_eof() && eof_displayed(FALSE) && !(ch_getflags() & CH_HELPFILE)) { /* * If the -e flag is set and we're trying to go @@ -481,7 +464,7 @@ public void forward(int n, lbool force, lbool only_last) { do { - back(1, position(TOP), 1, 0); + back(1, position(TOP), TRUE, FALSE, FALSE); pos = position(BOTTOM_PLUS_ONE); } while (pos == NULL_POSITION && !ABORT_SIGS()); } @@ -491,14 +474,14 @@ public void forward(int n, lbool force, lbool only_last) return; } } - forw(n, pos, force, only_last, 0); + forw(n, pos, force, only_last, to_newline, 0); } /* * Display n more lines, backward. * Start just before the line currently displayed at the top of the screen. */ -public void backward(int n, lbool force, lbool only_last) +public void backward(int n, lbool force, lbool only_last, lbool to_newline) { POSITION pos; @@ -508,7 +491,7 @@ public void backward(int n, lbool force, lbool only_last) eof_bell(); return; } - back(n, pos, force, only_last); + back(n, pos, force, only_last, to_newline); } /* @@ -531,15 +514,25 @@ public int get_back_scroll(void) /* * Will the entire file fit on one screen? */ -public int get_one_screen(void) +public lbool get_one_screen(void) { int nlines; POSITION pos = ch_zero(); + lbool ret = FALSE; - for (nlines = 0; nlines < sc_height; nlines++) + /* Disable polling until we know whether we will exit early due to -F. */ + getting_one_screen = TRUE; + for (nlines = 0; nlines + shell_lines <= sc_height; nlines++) { - pos = forw_line(pos); - if (pos == NULL_POSITION) break; + pos = forw_line(pos, NULL, NULL); + if (ABORT_SIGS()) + break; + if (pos == NULL_POSITION) + { + ret = TRUE; + break; + } } - return (nlines < sc_height); + getting_one_screen = FALSE; + return ret; } @@ -31,6 +31,8 @@ public void bell(void); public void clear(void); public void clear_eol(void); public void clear_bot(void); +public void init_bracketed_paste(void); +public void deinit_bracketed_paste(void); public COLOR_TYPE parse_color(constant char *str, mutable int *p_fg, mutable int *p_bg, mutable CHAR_ATTR *p_cattr); public void at_enter(int attr); public void at_exit(void); @@ -39,6 +41,7 @@ public lbool is_at_equiv(int attr1, int attr2); public int apply_at_specials(int attr); public void putbs(void); public void WIN32ungetch(int ch); +public lbool win32_kbhit2(lbool no_queued); public lbool win32_kbhit(void); public char WIN32getch(void); public void win32_getch_clear(void); @@ -53,6 +56,7 @@ public int ch_end_seek(void); public int ch_end_buffer_seek(void); public int ch_beg_seek(void); public POSITION ch_length(void); +public void ch_resize(void); public POSITION ch_tell(void); public int ch_forw_get(void); public int ch_back_get(void); @@ -84,6 +88,7 @@ public void cmd_reset(void); public void clear_cmd(void); public void cmd_putstr(constant char *s); public int len_cmdbuf(void); +public lbool cmdbuf_empty(void); public void cmd_repaint(constant char *old_cp); public void set_mlist(void *mlist, int cmdflags); public ssize_t save_updown_match(void); @@ -91,11 +96,13 @@ public void restore_updown_match(ssize_t udm); public void cmd_addhist(struct mlist *mlist, constant char *cmd, lbool modified); public void cmd_accept(void); public int cmd_char(char c); +public int cmd_setstring(constant char *s, lbool uc); public LINENUM cmd_int(mutable long *frac); public constant char * get_cmdbuf(void); public constant char * cmd_lastpattern(void); public void init_cmdhist(void); public void save_cmdhist(void); +public void cmd_exec(void); public int in_mca(void); public int norm_search_type(int st); public void screen_trashed_num(int trashed); @@ -109,6 +116,9 @@ public void ungetcc_back(char c); public void ungetcc_end_command(void); public void ungetsc(constant char *s); public char peekcc(void); +public void start_ignoring_input(); +public void stop_ignoring_input(); +public lbool is_ignoring_input(int action); public void commands(void); public size_t cvt_length(size_t len, int ops); public int * cvt_alloc_chpos(size_t len); @@ -171,16 +181,16 @@ public lbool curr_ifile_changed(void); public constant char * shell_coption(void); public constant char * last_component(constant char *name); public void eof_bell(void); -public lbool eof_displayed(void); +public lbool eof_displayed(lbool offset); public lbool entire_file_displayed(void); public void squish_check(void); public int overlay_header(void); -public void forw(int n, POSITION pos, lbool force, lbool only_last, int nblank); -public void back(int n, POSITION pos, lbool force, lbool only_last); -public void forward(int n, lbool force, lbool only_last); -public void backward(int n, lbool force, lbool only_last); +public void forw(int n, POSITION pos, lbool force, lbool only_last, lbool to_newline, int nblank); +public void back(int n, POSITION pos, lbool force, lbool only_last, lbool to_newline); +public void forward(int n, lbool force, lbool only_last, lbool to_newline); +public void backward(int n, lbool force, lbool only_last, lbool to_newline); public int get_back_scroll(void); -public int get_one_screen(void); +public lbool get_one_screen(void); public void del_ifile(IFILE h); public IFILE next_ifile(IFILE h); public IFILE prev_ifile(IFILE h); @@ -203,9 +213,9 @@ public void *get_altpipe(IFILE ifile); public void set_altfilename(IFILE ifile, char *altfilename); public char * get_altfilename(IFILE ifile); public void if_dump(void); -public POSITION forw_line_seg(POSITION curr_pos, lbool skipeol, lbool rscroll, lbool nochop); -public POSITION forw_line(POSITION curr_pos); -public POSITION back_line(POSITION curr_pos); +public POSITION forw_line_seg(POSITION curr_pos, lbool skipeol, lbool rscroll, lbool nochop, POSITION *p_linepos, lbool *p_newline); +public POSITION forw_line(POSITION curr_pos, POSITION *p_linepos, lbool *p_newline); +public POSITION back_line(POSITION curr_pos, lbool *p_newline); public void set_attnpos(POSITION pos); public void jump_forw(void); public void jump_forw_buffered(void); @@ -227,20 +237,22 @@ public void savec(void); public void loadc(void); public lbool is_ansi_end(LWCHAR ch); public lbool is_ansi_middle(LWCHAR ch); -public void skip_ansi(struct ansi_state *pansi, constant char **pp, constant char *limit); +public void skip_ansi(struct ansi_state *pansi, LWCHAR ch, constant char **pp, constant char *limit); public struct ansi_state * ansi_start(LWCHAR ch); public ansi_state ansi_step(struct ansi_state *pansi, LWCHAR ch); public osc8_state ansi_osc8_state(struct ansi_state *pansi); public void ansi_done(struct ansi_state *pansi); public int pappend_b(char c, POSITION pos, lbool before_pendc); public int pappend(char c, POSITION pos); +public lbool line_is_ff(void); public int pflushmbc(void); -public void pdone(int endline, int chopped, int forw); +public void pdone(lbool endline, lbool chopped, lbool forw); public int col_from_pos(POSITION linepos, POSITION spos, POSITION saved_pos, int saved_col); public POSITION pos_from_col(POSITION linepos, int col, POSITION saved_pos, int saved_col); public void set_attr_line(int a); public void set_status_col(char c, int attr); public int gline(size_t i, int *ap); +public lbool should_clear_after_line(void); public void null_line(void); public POSITION forw_raw_line_len(POSITION curr_pos, size_t read_len, constant char **linep, size_t *line_lenp); public POSITION forw_raw_line(POSITION curr_pos, constant char **linep, size_t *line_lenp); @@ -309,12 +321,13 @@ public void opt_search_type(int type, constant char *s); public void opt_nosearch_headers(int type, constant char *s); public void opt_nosearch_header_lines(int type, constant char *s); public void opt_nosearch_header_cols(int type, constant char *s); +public void opt_no_paste(int type, constant char *s); public void opt_ttyin_name(int type, constant char *s); public int chop_line(void); public int get_swindow(void); public constant char * propt(char c); -public void scan_option(constant char *s); -public void toggle_option(struct loption *o, int lower, constant char *s, int how_toggle); +public void scan_option(constant char *s, lbool is_env); +public void toggle_option(struct loption *o, lbool lower, constant char *s, int how_toggle); public int opt_has_param(struct loption *o); public constant char * opt_prompt(struct loption *o); public constant char * opt_toggle_disallowed(int c); @@ -328,10 +341,12 @@ public int get_quit_at_eof(void); public void init_option(void); public struct loption * findopt(int c); public struct loption * findopt_name(constant char **p_optname, constant char **p_oname, lbool *p_ambig); +public char * findopts_name(constant char *pfx); public void init_poll(void); public int supports_ctrl_x(void); public ssize_t iread(int fd, unsigned char *buf, size_t len); -public void intread(void); +public int iopen(constant char *filename, int flags); +public void intio(void); public time_type get_time(void); public char * errno_message(constant char *filename); public constant char * signal_message(int sig); @@ -340,7 +355,7 @@ public int percentage(POSITION num, POSITION den); public POSITION percent_pos(POSITION pos, int percent, long fraction); public int os9_signal(int type, RETSIGTYPE (*handler)()); public void sleep_ms(int ms); -public void put_line(void); +public void put_line(lbool forw_scroll); public void flush(void); public void set_output(int fd); public int putchr(int ch); @@ -356,10 +371,10 @@ public int compile_pattern(constant char *pattern, int search_type, int show_err public void uncompile_pattern(PATTERN_TYPE *pattern); public int valid_pattern(char *pattern); public lbool is_null_pattern(PATTERN_TYPE pattern); -public int match_pattern(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t line_len, constant char **sp, constant char **ep, int nsp, int notbol, int search_type); +public lbool match_pattern(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t line_len, size_t line_off, constant char **sp, constant char **ep, int nsp, int notbol, int search_type); public constant char * pattern_lib_name(void); public POSITION position(int sindex); -public void add_forw_pos(POSITION pos); +public void add_forw_pos(POSITION pos, lbool no_scroll); public void add_back_pos(POSITION pos); public void pos_clear(void); public void pos_init(void); @@ -379,13 +394,13 @@ public int get_cvt_ops(int search_type); public void repaint_hilite(lbool on); public void clear_attn(void); public void undo_search(lbool clear); +public void undo_osc8(void); public void clr_hlist(struct hilite_tree *anchor); public void clr_hilite(void); public void clr_filter(void); public void set_header(POSITION pos); public lbool is_filtered(POSITION pos); public POSITION next_unfiltered(POSITION pos); -public POSITION prev_unfiltered(POSITION pos); public int is_hilited_attr(POSITION pos, POSITION epos, int nohide, int *p_matches); public void chg_hilite(void); public void osc8_search(int search_type, constant char *param, int matches); @@ -1,4 +1,4 @@ -/* This file was generated by mkhelp.pl from less.hlp at 22:29 on 2024/10/6 */ +/* This file was generated by mkhelp.pl from less.hlp at 20:41 on 2025/5/1 */ #include "less.h" constant char helpdata[] = { '\n', @@ -16,11 +16,14 @@ constant char helpdata[] = { '\n', ' ',' ','e',' ',' ','^','E',' ',' ','j',' ',' ','^','N',' ',' ','C','R',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','l','i','n','e',' ',' ',' ','(','o','r',' ','_','\b','N',' ','l','i','n','e','s',')','.','\n', ' ',' ','y',' ',' ','^','Y',' ',' ','k',' ',' ','^','K',' ',' ','^','P',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','l','i','n','e',' ',' ',' ','(','o','r',' ','_','\b','N',' ','l','i','n','e','s',')','.','\n', +' ',' ','E','S','C','-','j',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','f','i','l','e',' ','l','i','n','e',' ','(','o','r',' ','_','\b','N',' ','f','i','l','e',' ','l','i','n','e','s',')','.','\n', +' ',' ','E','S','C','-','k',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','f','i','l','e',' ','l','i','n','e',' ','(','o','r',' ','_','\b','N',' ','f','i','l','e',' ','l','i','n','e','s',')','.','\n', ' ',' ','f',' ',' ','^','F',' ',' ','^','V',' ',' ','S','P','A','C','E',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','w','i','n','d','o','w',' ','(','o','r',' ','_','\b','N',' ','l','i','n','e','s',')','.','\n', ' ',' ','b',' ',' ','^','B',' ',' ','E','S','C','-','v',' ',' ',' ',' ',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','w','i','n','d','o','w',' ','(','o','r',' ','_','\b','N',' ','l','i','n','e','s',')','.','\n', ' ',' ','z',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','w','i','n','d','o','w',' ','(','a','n','d',' ','s','e','t',' ','w','i','n','d','o','w',' ','t','o',' ','_','\b','N',')','.','\n', ' ',' ','w',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','w','i','n','d','o','w',' ','(','a','n','d',' ','s','e','t',' ','w','i','n','d','o','w',' ','t','o',' ','_','\b','N',')','.','\n', ' ',' ','E','S','C','-','S','P','A','C','E',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','w','i','n','d','o','w',',',' ','b','u','t',' ','d','o','n','\'','t',' ','s','t','o','p',' ','a','t',' ','e','n','d','-','o','f','-','f','i','l','e','.','\n', +' ',' ','E','S','C','-','b',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','w','i','n','d','o','w',',',' ','b','u','t',' ','d','o','n','\'','t',' ','s','t','o','p',' ','a','t',' ','b','e','g','i','n','n','i','n','g','-','o','f','-','f','i','l','e','.','\n', ' ',' ','d',' ',' ','^','D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','h','a','l','f','-','w','i','n','d','o','w',' ','(','a','n','d',' ','s','e','t',' ','h','a','l','f','-','w','i','n','d','o','w',' ','t','o',' ','_','\b','N',')','.','\n', ' ',' ','u',' ',' ','^','U',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','h','a','l','f','-','w','i','n','d','o','w',' ','(','a','n','d',' ','s','e','t',' ','h','a','l','f','-','w','i','n','d','o','w',' ','t','o',' ','_','\b','N',')','.','\n', ' ',' ','E','S','C','-',')',' ',' ','R','i','g','h','t','A','r','r','o','w',' ','*',' ',' ','R','i','g','h','t',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',' ','(','o','r',' ','_','\b','N',' ','p','o','s','i','t','i','o','n','s',')','.','\n', @@ -51,6 +54,7 @@ constant char helpdata[] = { ' ',' ','E','S','C','-','U',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','l','e','a','r',' ','s','e','a','r','c','h',' ','h','i','g','h','l','i','g','h','t','i','n','g','.','\n', ' ',' ','&','_','\b','p','_','\b','a','_','\b','t','_','\b','t','_','\b','e','_','\b','r','_','\b','n',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','D','i','s','p','l','a','y',' ','o','n','l','y',' ','m','a','t','c','h','i','n','g',' ','l','i','n','e','s','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n', +'\t','\t','S','e','a','r','c','h',' ','i','s',' ','c','a','s','e','-','s','e','n','s','i','t','i','v','e',' ','u','n','l','e','s','s',' ','c','h','a','n','g','e','d',' ','w','i','t','h',' ','-','i',' ','o','r',' ','-','I','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ','A',' ','s','e','a','r','c','h',' ','p','a','t','t','e','r','n',' ','m','a','y',' ','b','e','g','i','n',' ','w','i','t','h',' ','o','n','e',' ','o','r',' ','m','o','r','e',' ','o','f',':','\n', ' ',' ',' ',' ',' ',' ',' ',' ','^','N',' ','o','r',' ','!',' ',' ','S','e','a','r','c','h',' ','f','o','r',' ','N','O','N','-','m','a','t','c','h','i','n','g',' ','l','i','n','e','s','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ','^','E',' ','o','r',' ','*',' ',' ','S','e','a','r','c','h',' ','m','u','l','t','i','p','l','e',' ','f','i','l','e','s',' ','(','p','a','s','s',' ','t','h','r','u',' ','E','N','D',' ','O','F',' ','F','I','L','E',')','.','\n', @@ -224,6 +228,8 @@ constant char helpdata[] = { ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','A','u','t','o','m','a','t','i','c','a','l','l','y',' ','d','e','t','e','r','m','i','n','e',' ','t','h','e',' ','s','i','z','e',' ','o','f',' ','t','h','e',' ','i','n','p','u','t',' ','f','i','l','e','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','f','o','l','l','o','w','-','n','a','m','e','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','T','h','e',' ','F',' ','c','o','m','m','a','n','d',' ','c','h','a','n','g','e','s',' ','f','i','l','e','s',' ','i','f',' ','t','h','e',' ','i','n','p','u','t',' ','f','i','l','e',' ','i','s',' ','r','e','n','a','m','e','d','.','\n', +' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','f','o','r','m','-','f','e','e','d','\n', +' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S','t','o','p',' ','s','c','r','o','l','l','i','n','g',' ','w','h','e','n',' ','a',' ','f','o','r','m',' ','f','e','e','d',' ','c','h','a','r','a','c','t','e','r',' ','i','s',' ','r','e','a','c','h','e','d','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','h','e','a','d','e','r','=','[','_','\b','L','[',',','_','\b','C','[',',','_','\b','N',']',']',']','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','U','s','e',' ','_','\b','L',' ','l','i','n','e','s',' ','(','s','t','a','r','t','i','n','g',' ','a','t',' ','l','i','n','e',' ','_','\b','N',')',' ','a','n','d',' ','_','\b','C',' ','c','o','l','u','m','n','s',' ','a','s',' ','h','e','a','d','e','r','s','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','i','n','c','s','e','a','r','c','h','\n', @@ -242,12 +248,16 @@ constant char helpdata[] = { ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','R','e','a','d',' ','_','\b','N',' ','l','i','n','e','s',' ','f','r','o','m',' ','t','h','e',' ','i','n','p','u','t',' ','f','i','l','e',' ','a','n','d',' ','l','o','o','k',' ','f','o','r',' ','v','i','m',' ','m','o','d','e','l','i','n','e','s','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','m','o','u','s','e','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','n','a','b','l','e',' ','m','o','u','s','e',' ','i','n','p','u','t','.','\n', +' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','e','d','i','t','-','w','a','r','n','\n', +' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','w','a','r','n',' ','w','h','e','n',' ','u','s','i','n','g',' ','v',' ','c','o','m','m','a','n','d',' ','o','n',' ','a',' ','f','i','l','e',' ','o','p','e','n','e','d',' ','v','i','a',' ','L','E','S','S','O','P','E','N','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','k','e','y','p','a','d','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','s','e','n','d',' ','t','e','r','m','c','a','p',' ','k','e','y','p','a','d',' ','i','n','i','t','/','d','e','i','n','i','t',' ','s','t','r','i','n','g','s','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','h','i','s','t','d','u','p','s','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','R','e','m','o','v','e',' ','d','u','p','l','i','c','a','t','e','s',' ','f','r','o','m',' ','c','o','m','m','a','n','d',' ','h','i','s','t','o','r','y','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','n','u','m','b','e','r','-','h','e','a','d','e','r','s','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','g','i','v','e',' ','l','i','n','e',' ','n','u','m','b','e','r','s',' ','t','o',' ','h','e','a','d','e','r',' ','l','i','n','e','s','.','\n', +' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','p','a','s','t','e','\n', +' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','I','g','n','o','r','e',' ','p','a','s','t','e','d',' ','i','n','p','u','t','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','s','e','a','r','c','h','-','h','e','a','d','e','r','-','l','i','n','e','s','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S','e','a','r','c','h','e','s',' ','d','o',' ','n','o','t',' ','i','n','c','l','u','d','e',' ','h','e','a','d','e','r',' ','l','i','n','e','s','.','\n', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','n','o','-','s','e','a','r','c','h','-','h','e','a','d','e','r','-','c','o','l','u','m','n','s','\n', @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -29,7 +29,6 @@ extern POSITION start_attnpos; extern POSITION end_attnpos; #if HILITE_SEARCH extern int hilite_search; -extern size_t size_linebuf; extern int show_attn; #endif @@ -68,9 +67,9 @@ static void init_status_col(POSITION base_pos, POSITION disp_pos, POSITION edisp attr = is_hilited_attr(disp_pos, edisp_pos, TRUE, NULL); ch = '*'; } else - { - attr = 0; - } + { + attr = 0; + } if (attr) set_status_col(ch, attr); } @@ -82,7 +81,7 @@ static void init_status_col(POSITION base_pos, POSITION disp_pos, POSITION edisp * a line. The new position is the position of the first character * of the NEXT line. The line obtained is the line starting at curr_pos. */ -public POSITION forw_line_seg(POSITION curr_pos, lbool skipeol, lbool rscroll, lbool nochop) +public POSITION forw_line_seg(POSITION curr_pos, lbool skipeol, lbool rscroll, lbool nochop, POSITION *p_linepos, lbool *p_newline) { POSITION base_pos; POSITION new_pos; @@ -95,6 +94,9 @@ public POSITION forw_line_seg(POSITION curr_pos, lbool skipeol, lbool rscroll, l POSITION wrap_pos; lbool skipped_leading; + if (p_linepos != NULL) + *p_linepos = NULL_POSITION; + get_forw_line: if (curr_pos == NULL_POSITION) { @@ -111,8 +113,7 @@ get_forw_line: * If we're not ignoring EOI, we *could* do the same, but * for efficiency we prepare several lines ahead at once. */ - prep_hilite(curr_pos, curr_pos + (POSITION) (3*size_linebuf), ignore_eoi ? 1 : -1); - curr_pos = next_unfiltered(curr_pos); + prep_hilite(curr_pos, NULL_POSITION, 1); } #endif if (ch_seek(curr_pos)) @@ -295,7 +296,7 @@ get_forw_line: pappend_b(' ', ch_tell()-1, TRUE); } #endif - pdone(endline, rscroll && chopped, 1); + pdone(endline, rscroll && chopped, TRUE); #if HILITE_SEARCH if (is_filtered(base_pos)) @@ -324,14 +325,16 @@ get_forw_line: (void) ch_back_get(); new_pos = ch_tell(); } - + if (p_linepos != NULL) + *p_linepos = curr_pos; + if (p_newline != NULL) + *p_newline = endline; return (new_pos); } -public POSITION forw_line(POSITION curr_pos) +public POSITION forw_line(POSITION curr_pos, POSITION *p_linepos, lbool *p_newline) { - - return forw_line_seg(curr_pos, (chop_line() || hshift > 0), TRUE, FALSE); + return forw_line_seg(curr_pos, (chop_line() || hshift > 0), TRUE, FALSE, p_linepos, p_newline); } /* @@ -341,7 +344,7 @@ public POSITION forw_line(POSITION curr_pos) * a line. The new position is the position of the first character * of the PREVIOUS line. The line obtained is the one starting at new_pos. */ -public POSITION back_line(POSITION curr_pos) +public POSITION back_line(POSITION curr_pos, lbool *p_newline) { POSITION base_pos; POSITION new_pos; @@ -360,11 +363,6 @@ get_back_line: null_line(); return (NULL_POSITION); } -#if HILITE_SEARCH - if (hilite_search == OPT_ONPLUS || is_filtering() || status_col) - prep_hilite((curr_pos < (POSITION) (3*size_linebuf)) ? 0 : - curr_pos - (POSITION) (3*size_linebuf), curr_pos, -1); -#endif if (ch_seek(curr_pos-1)) { null_line(); @@ -427,6 +425,11 @@ get_back_line: } } +#if HILITE_SEARCH + if (hilite_search == OPT_ONPLUS || is_filtering() || status_col) + prep_hilite(base_pos, NULL_POSITION, 1); +#endif + /* * Now scan forwards from the beginning of this line. * We keep discarding "printable lines" (based on screen width) @@ -445,6 +448,8 @@ get_back_line: endline = FALSE; prewind(); plinestart(new_pos); + if (p_newline != NULL) + *p_newline = TRUE; loop: wrap_pos = NULL_POSITION; skipped_leading = FALSE; @@ -489,6 +494,8 @@ get_back_line: edisp_pos = new_pos; break; } + if (p_newline != NULL) + *p_newline = FALSE; shift: if (!wordwrap) { @@ -550,7 +557,7 @@ get_back_line: } } - pdone(endline, chopped, 0); + pdone(endline, chopped, FALSE); #if HILITE_SEARCH if (is_filtered(base_pos)) @@ -565,7 +572,6 @@ get_back_line: if (status_col) init_status_col(base_pos, line_position(), edisp_pos, new_pos); #endif - return (begin_new_pos); } @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -53,7 +53,7 @@ public void jump_forw(void) * to get to the beginning of the last line. */ pos_clear(); - pos = back_line(end_pos); + pos = back_line(end_pos, NULL); if (pos == NULL_POSITION) jump_loc(ch_zero(), sc_height-1); else @@ -232,6 +232,7 @@ public void jump_loc(POSITION pos, int sline) * Normalize sline. */ pos = after_header_pos(pos); + pos = next_unfiltered(pos); sindex = sindex_from_sline(sline); if ((nline = onscreen(pos)) >= 0) @@ -242,9 +243,9 @@ public void jump_loc(POSITION pos, int sline) */ nline -= sindex; if (nline > 0) - forw(nline, position(BOTTOM_PLUS_ONE), 1, 0, 0); + forw(nline, position(BOTTOM_PLUS_ONE), TRUE, FALSE, FALSE, 0); else - back(-nline, position(TOP), 1, 0); + back(-nline, position(TOP), TRUE, FALSE, FALSE); #if HILITE_SEARCH if (show_attn) repaint_hilite(TRUE); @@ -285,14 +286,14 @@ public void jump_loc(POSITION pos, int sline) * close enough to the current screen * that we can just scroll there after all. */ - forw(sc_height-sindex+nline-1, bpos, 1, 0, 0); + forw(sc_height-sindex+nline-1, bpos, TRUE, FALSE, FALSE, 0); #if HILITE_SEARCH if (show_attn) repaint_hilite(TRUE); #endif return; } - pos = back_line(pos); + pos = back_line(pos, NULL); if (pos == NULL_POSITION) { /* @@ -307,7 +308,7 @@ public void jump_loc(POSITION pos, int sline) lastmark(); squished = FALSE; screen_trashed_num(0); - forw(sc_height-1, pos, 1, 0, sindex-nline); + forw(sc_height-1, pos, TRUE, FALSE, FALSE, sindex-nline); } else { /* @@ -318,7 +319,8 @@ public void jump_loc(POSITION pos, int sline) */ for (nline = sindex; nline < sc_height - 1; nline++) { - pos = forw_line(pos); + POSITION linepos; + pos = forw_line(pos, &linepos, NULL); if (pos == NULL_POSITION) { /* @@ -328,17 +330,14 @@ public void jump_loc(POSITION pos, int sline) */ break; } -#if HILITE_SEARCH - pos = next_unfiltered(pos); -#endif - if (pos >= tpos) + if (linepos >= tpos) { /* * Surprise! The desired line is * close enough to the current screen * that we can just scroll there after all. */ - back(nline+1, tpos, 1, 0); + back(nline, tpos, TRUE, FALSE, FALSE); #if HILITE_SEARCH if (show_attn) repaint_hilite(TRUE); @@ -353,6 +352,6 @@ public void jump_loc(POSITION pos, int sline) home(); screen_trashed_num(0); add_back_pos(pos); - back(sc_height-1, pos, 1, 0); + back(sc_height-1, pos, TRUE, FALSE, FALSE); } } @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -7,8 +7,6 @@ * For more information, see the README file. */ -#define NEWBOT 1 - /* * Standard include file for "less". */ @@ -169,7 +167,7 @@ void free(); #define IS_DIGIT(c) ((c) >= '0' && (c) <= '9') #endif -#define IS_CSI_START(c) (((LWCHAR)(c)) == ESC || (((LWCHAR)(c)) == CSI)) +#define IS_CSI_START(c) (control_char(c) && (((LWCHAR)(c)) == ESC || (((LWCHAR)(c)) == CSI))) #define OPT_OFF 0 #define OPT_ON 1 @@ -290,15 +288,6 @@ typedef off_t LINENUM; #endif #endif -/* - * Does the shell treat "?" as a metacharacter? - */ -#if MSDOS_COMPILER || OS2 || _OSK -#define SHELL_META_QUEST 0 -#else -#define SHELL_META_QUEST 1 -#endif - #define SPACES_IN_FILENAMES 1 /* @@ -364,6 +353,14 @@ typedef short POLL_EVENTS; #define NUM_FRAC_DENOM 1000000 #define NUM_LOG_FRAC_DENOM 6 +/* + * Max expected reasonable duration of a paste. + * Increasing this value avoids accidentally reenabling unwanted paste input + * in the middle of a very long paste but risks apparently frozen UI if the + * end bracket is missing. + */ +#define MAX_PASTE_IGNORE_SEC 5 + /* How quiet should we be? */ #define NOT_QUIET 0 /* Ring bell at eof and for errors */ #define LITTLE_QUIET 1 /* Ring bell only for errors */ @@ -404,12 +401,16 @@ typedef short POLL_EVENTS; (((t) & ~SRCH_BACK) | SRCH_FORW)) /* Parsing position in an OSC8 link: "\e]8;PARAMS;URI\e\\" (final "\e\\" may be "\7") */ typedef enum osc8_state { + OSC_START, /* Waiting for initial \e */ + OSC_INTRO, /* Waiting for intro char, usually ']' */ + OSC_TYPENUM, /* Reading OS command type */ + OSC_STRING, /* Reading OS command string */ + OSC_END_CSI, /* Waiting for backslash after the final ESC. */ + OSC_END, /* At end */ + + OSC8_PARAMS, /* In the OSC8 parameters */ + OSC8_URI, /* In the OSC8 URI */ OSC8_NOT, /* This is not an OSC8 link */ - OSC8_PREFIX, /* In the "\e]8;" */ - OSC8_PARAMS, /* In the parameters */ - OSC8_URI, /* In the URI */ - OSC8_ST_ESC, /* After the final \e */ - OSC8_END, /* At end */ } osc8_state; /* */ @@ -422,7 +423,8 @@ typedef enum osc8_state { #define CC_ERROR 2 /* Char could not be accepted due to error */ #define CC_PASS 3 /* Char was rejected (internal) */ -#define CF_QUIT_ON_ERASE 0001 /* Abort cmd if its entirely erased */ +#define CF_QUIT_ON_ERASE (1<<0) /* Abort cmd if its entirely erased */ +#define CF_OPTION (1<<1) /* A_OPT_TOGGLE */ /* Special char bit-flags used to tell put_line() to do something special */ #define AT_NORMAL (0) @@ -625,6 +627,7 @@ typedef enum { #define X11MOUSE_BUTTON2 1 /* Middle button press */ #define X11MOUSE_BUTTON3 2 /* Right button press */ #define X11MOUSE_BUTTON_REL 3 /* Button release */ +#define X11MOUSE_DRAG 0x20 /* Drag with button down */ #define X11MOUSE_WHEEL_UP 0x40 /* Wheel scroll up */ #define X11MOUSE_WHEEL_DOWN 0x41 /* Wheel scroll down */ #define X11MOUSE_OFFSET 0x20 /* Added to button & pos bytes to create a char */ @@ -13,11 +13,14 @@ e ^E j ^N CR * Forward one line (or _N lines). y ^Y k ^K ^P * Backward one line (or _N lines). + ESC-j * Forward one file line (or _N file lines). + ESC-k * Backward one file line (or _N file lines). f ^F ^V SPACE * Forward one window (or _N lines). b ^B ESC-v * Backward one window (or _N lines). z * Forward one window (and set window to _N). w * Backward one window (and set window to _N). ESC-SPACE * Forward one window, but don't stop at end-of-file. + ESC-b * Backward one window, but don't stop at beginning-of-file. d ^D * Forward one half-window (and set half-window to _N). u ^U * Backward one half-window (and set half-window to _N). ESC-) RightArrow * Right one half screen width (or _N positions). @@ -48,6 +51,7 @@ ESC-U Clear search highlighting. &_p_a_t_t_e_r_n * Display only matching lines. --------------------------------------------------- + Search is case-sensitive unless changed with -i or -I. A search pattern may begin with one or more of: ^N or ! Search for NON-matching lines. ^E or * Search multiple files (pass thru END OF FILE). @@ -221,6 +225,8 @@ Automatically determine the size of the input file. --follow-name The F command changes files if the input file is renamed. + --form-feed + Stop scrolling when a form feed character is reached. --header=[_L[,_C[,_N]]] Use _L lines (starting at line _N) and _C columns as headers. --incsearch @@ -239,12 +245,16 @@ Read _N lines from the input file and look for vim modelines. --mouse Enable mouse input. + --no-edit-warn + Don't warn when using v command on a file opened via LESSOPEN. --no-keypad Don't send termcap keypad init/deinit strings. --no-histdups Remove duplicates from command history. --no-number-headers Don't give line numbers to header lines. + --no-paste + Ignore pasted input. --no-search-header-lines Searches do not include header lines. --no-search-header-columns @@ -25,11 +25,11 @@ terminals. (On a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.) +[1mCOMMANDS[0m Commands are based on both [1mmore [22mand [1mvi[22m. Commands may be preceded by a decimal number, called N in the descriptions below. The number is used by some commands, as indicated. -[1mCOMMANDS[0m In the following descriptions, ^X means control‐X. ESC stands for the ESCAPE key; for example ESC‐v means the two character sequence "ES‐ CAPE", then "v". @@ -46,42 +46,50 @@ z Like SPACE, but if N is specified, it becomes the new window size. - ESC‐SPACE - Like SPACE, but scrolls a full screenful, even if it reaches - end‐of‐file in the process. - ENTER or RETURN or ^N or e or ^E or j or ^J - Scroll forward N lines, default 1. The entire N lines are dis‐ + Scroll forward N lines, default 1. The entire N lines are dis‐ played, even if N is more than the screen size. d or ^D Scroll forward N lines, default one half of the screen size. If - N is specified, it becomes the new default for subsequent d and + N is specified, it becomes the new default for subsequent d and u commands. b or ^B or ESC‐v - Scroll backward N lines, default one window (see option -z be‐ + Scroll backward N lines, default one window (see option -z be‐ low). If N is more than the screen size, only the final screen‐ ful is displayed. - w Like ESC‐v, but if N is specified, it becomes the new window + w Like ESC‐v, but if N is specified, it becomes the new window size. y or ^Y or ^P or k or ^K Scroll backward N lines, default 1. The entire N lines are dis‐ - played, even if N is more than the screen size. Warning: some + played, even if N is more than the screen size. Warning: some systems use ^Y as a special job control character. u or ^U - Scroll backward N lines, default one half of the screen size. - If N is specified, it becomes the new default for subsequent d + Scroll backward N lines, default one half of the screen size. + If N is specified, it becomes the new default for subsequent d and u commands. J Like j, but continues to scroll beyond the end of the file. - K or Y Like k, but continues to scroll beyond the beginning of the + K or Y Like k, but continues to scroll beyond the beginning of the file. + ESC‐SPACE + Like SPACE, but scrolls a full screenful, even if it reaches the + end of the file. + + ESC‐b Like b, but scrolls a full screenful, even if it reaches the be‐ + ginning of the file. + + ESC‐j Scroll forward N file lines, default 1. A file line is a com‐ + plete line in the file, terminated by a newline. + + ESC‐k Scroll backwards N file lines, default 1. + ESC‐) or RIGHTARROW Scroll horizontally right N characters, default half the screen width (see the -# option). If a number N is specified, it be‐ @@ -234,24 +242,27 @@ ^S Followed by a digit N between 1 and 5. Only text which has a non‐empty match for the N‐th parenthesized SUB‐PAT‐ - TERN will be considered to match the pattern. (Supported - only if [1mless [22mis built with one of the regular expression - libraries [1mposix[22m, [1mpcre[22m, or [1mpcre2[22m.) Multiple ^S modifiers - can be specified, to match more than one sub‐pattern. + TERN will be considered to match the pattern. For exam‐ + ple, searching for "(abc)|(def)" modified with ^S1 would + search for instances of "abc", but would highlight in‐ + stances of both "abc" and "def". (Supported only if [1mless[0m + is built with one of the regular expression libraries + [1mposix[22m, [1mpcre[22m, or [1mpcre2[22m.) Multiple ^S modifiers can be + specified, to match more than one sub‐pattern. - ^W WRAP around the current file. That is, if the search - reaches the end of the current file without finding a - match, the search continues from the first line of the - current file up to the line where it started. If the ^W + ^W WRAP around the current file. That is, if the search + reaches the end of the current file without finding a + match, the search continues from the first line of the + current file up to the line where it started. If the ^W modifier is set, the ^E modifier is ignored. - ^L The next character is taken literally; that is, it be‐ - comes part of the pattern even if it is one of the above + ^L The next character is taken literally; that is, it be‐ + comes part of the pattern even if it is one of the above search modifier characters. ?pattern - Search backward in the file for the N‐th line containing the - pattern. The search starts at the last line displayed (but see + Search backward in the file for the N‐th line containing the + pattern. The search starts at the last line displayed (but see the -a and -j options, which change this). Certain characters are special as in the / command: @@ -260,15 +271,15 @@ Search for lines which do NOT match the pattern. ^E or * - Search multiple files. That is, if the search reaches - the beginning of the current file without finding a - match, the search continues in the previous file in the + Search multiple files. That is, if the search reaches + the beginning of the current file without finding a + match, the search continues in the previous file in the command line list. ^F or @ Begin the search at the last line of the last file in the - command line list, regardless of what is currently dis‐ - played on the screen or the settings of the -a or -j op‐ + command line list, regardless of what is currently dis‐ + played on the screen or the settings of the -a or -j op‐ tions. ^K As in forward searches. @@ -277,53 +288,57 @@ ^S As in forward searches. - ^W WRAP around the current file. That is, if the search + ^W WRAP around the current file. That is, if the search reaches the beginning of the current file without finding - a match, the search continues from the last line of the + a match, the search continues from the last line of the current file up to the line where it started. + ^L As in forward searches. + ESC‐/pattern Same as "/*". ESC‐?pattern Same as "?*". - n Repeat previous search, for N‐th line containing the last pat‐ - tern. If the previous search was modified by ^N, the search is - made for the N‐th line NOT containing the pattern. If the pre‐ - vious search was modified by ^E, the search continues in the - next (or previous) file if not satisfied in the current file. - If the previous search was modified by ^R, the search is done - without using regular expressions. There is no effect if the - previous search was modified by ^F or ^K. + n Repeat previous search, for N‐th line containing the last pat‐ + tern. If the previous search was modified by ^N, the search is + made for the N‐th line NOT containing the pattern. If the pre‐ + vious search was modified by ^E, the search continues in the + next (or previous) file if not satisfied in the current file. + If the previous search was modified by ^R, the search is done + without using regular expressions. If the previous search was + modified by ^W, the search wraps at the end (or beginning) of + the file. There is no effect if the previous search was modi‐ + fied by ^F or ^K. N Repeat previous search, but in the reverse direction. - ESC‐n Repeat previous search, but crossing file boundaries. The ef‐ + ESC‐n Repeat previous search, but crossing file boundaries. The ef‐ fect is as if the previous search were modified by *. - ESC‐N Repeat previous search, but in the reverse direction and cross‐ + ESC‐N Repeat previous search, but in the reverse direction and cross‐ ing file boundaries. - ESC‐u Undo search highlighting. Turn off highlighting of strings + ESC‐u Undo search highlighting. Turn off highlighting of strings matching the current search pattern. If highlighting is already - off because of a previous ESC‐u command, turn highlighting back - on. Any search command will also turn highlighting back on. + off because of a previous ESC‐u command, turn highlighting back + on. Any search command will also turn highlighting back on. (Highlighting can also be disabled by toggling the -G option; in that case search commands do not turn highlighting back on.) - ESC‐U Like ESC‐u but also clears the saved search pattern. If the - status column is enabled via the -J option, this clears all + ESC‐U Like ESC‐u but also clears the saved search pattern. If the + status column is enabled via the -J option, this clears all search matches marked in the status column. &pattern - Display only lines which match the pattern; lines which do not - match the pattern are not displayed. If pattern is empty (if - you type & immediately followed by ENTER), any filtering is - turned off, and all lines are displayed. While filtering is in - effect, an ampersand is displayed at the beginning of the + Display only lines which match the pattern; lines which do not + match the pattern are not displayed. If pattern is empty (if + you type & immediately followed by ENTER), any filtering is + turned off, and all lines are displayed. While filtering is in + effect, an ampersand is displayed at the beginning of the prompt, as a reminder that some lines in the file may be hidden. - Multiple & commands may be entered, in which case only lines + Multiple & commands may be entered, in which case only lines which match all of the patterns will be displayed. Certain characters are special as in the / command: @@ -331,81 +346,83 @@ ^N or ! Display only lines which do NOT match the pattern. - ^R Don’t interpret regular expression metacharacters; that + ^R Don’t interpret regular expression metacharacters; that is, do a simple textual comparison. :e [filename] - Examine a new file. If the filename is missing, the "current" - file (see the :n and :p commands below) from the list of files - in the command line is re‐examined. A percent sign (%) in the - filename is replaced by the name of the current file. A pound - sign (#) is replaced by the name of the previously examined - file. However, two consecutive percent signs are simply re‐ - placed with a single percent sign. This allows you to enter a - filename that contains a percent sign in the name. Similarly, - two consecutive pound signs are replaced with a single pound - sign. The filename is inserted into the command line list of - files so that it can be seen by subsequent :n and :p commands. + Examine a new file. If the filename is missing, the "current" + file (see the :n and :p commands below) from the list of files + in the command line is re‐examined. A percent sign (%) in the + filename is replaced by the name of the current file. A pound + sign (#) is replaced by the name of the previously examined + file. However, two consecutive percent signs are simply re‐ + placed with a single percent sign. This allows you to enter a + filename that contains a percent sign in the name. Similarly, + two consecutive pound signs are replaced with a single pound + sign. The filename is inserted into the command line list of + files so that it can be seen by subsequent :n and :p commands. If the filename consists of several files, they are all inserted - into the list of files and the first one is examined. If the + into the list of files and the first one is examined. If the filename contains one or more spaces, the entire filename should be enclosed in double quotes (also see the -" option). ^X^V or E - Same as :e. Warning: some systems use ^V as a special literal‐ - ization character. On such systems, you may not be able to use + Same as :e. Warning: some systems use ^V as a special literal‐ + ization character. On such systems, you may not be able to use ^V. - :n Examine the next file (from the list of files given in the com‐ - mand line). If a number N is specified, the N‐th next file is + :n Examine the next file (from the list of files given in the com‐ + mand line). If a number N is specified, the N‐th next file is examined. :p Examine the previous file in the command line list. If a number N is specified, the N‐th previous file is examined. - :x Examine the first file in the command line list. If a number N + :x Examine the first file in the command line list. If a number N is specified, the N‐th file in the list is examined. :d Remove the current file from the list of files. - t Go to the next tag, if there were more than one matches for the + t Go to the next tag, if there were more than one matches for the current tag. See the -t option for more details about tags. - T Go to the previous tag, if there were more than one matches for + T Go to the previous tag, if there were more than one matches for the current tag. ^O^N or ^On Search forward in the file for the N‐th next OSC 8 hyperlink. ^O^P or ^Op - Search backward in the file for the N‐th previous OSC 8 hyper‐ + Search backward in the file for the N‐th previous OSC 8 hyper‐ link. ^O^L or ^Ol Jump to the currently selected OSC 8 hyperlink. = or ^G or :f - Prints some information about the file being viewed, including - its name and the line number and byte offset of the bottom line - being displayed. If possible, it also prints the length of the - file, the number of lines in the file and the percent of the + Prints some information about the file being viewed, including + its name and the line number and byte offset of the bottom line + being displayed. If possible, it also prints the length of the + file, the number of lines in the file and the percent of the file above the last displayed line. - - Followed by one of the command line option letters (see OPTIONS - below), this will change the setting of that option and print a - message describing the new setting. If a ^P (CONTROL‐P) is en‐ - tered immediately after the dash, the setting of the option is - changed but no message is printed. If the option letter has a - numeric value (such as -b or -h), or a string value (such as -P - or -t), a new value may be entered after the option letter. If - no new value is entered, a message describing the current set‐ + - Followed by one of the command line option letters (see OPTIONS + below), this will change the setting of that option and print a + message describing the new setting. If a ^P (CONTROL‐P) is en‐ + tered immediately after the dash, the setting of the option is + changed but no message is printed. If the option letter has a + numeric value (such as -b or -h), or a string value (such as -P + or -t), a new value may be entered after the option letter. If + no new value is entered, a message describing the current set‐ ting is printed and nothing is changed. - -- Like the - command, but takes a long option name (see OPTIONS - below) rather than a single option letter. You must press ENTER - or RETURN after typing the option name. A ^P immediately after - the second dash suppresses printing of a message describing the - new setting, as in the - command. + -- Like the - command, but takes a long option name (see OPTIONS + below) rather than a single option letter. Press ENTER or RE‐ + TURN after typing the option name to change it. You can enter + just the beginning of an option name, then press TAB to find all + option names which begin with that string. A ^P immediately af‐ + ter the second dash suppresses printing of a message describing + the new setting, as in the - command. -+ Followed by one of the command line option letters this will re‐ set the option to its default setting and print a message de‐ @@ -455,8 +472,8 @@ (%) in the command is replaced by the name of the current file. A pound sign (#) is replaced by the name of the previously exam‐ ined file. "!!" repeats the last shell command. "!" with no - shell command simply invokes a shell. If a ^P (CONTROL‐P) is - entered immediately after the !, no "done" message is printed + shell command invokes an interactive shell. If a ^P (CONTROL‐P) + is entered immediately after the !, no "done" message is printed after the shell command is executed. On Unix systems, the shell is taken from the environment variable SHELL, or defaults to "sh". On MS‐DOS, Windows, and OS/2 systems, the shell is the @@ -557,12 +574,12 @@ Some options may be given in one of two forms: either a dash followed by a single letter, or two dashes followed by a long option name. A long option name may be abbreviated as long as the abbreviation is un‐ - ambiguous. For example, --quit‐at‐eof may be abbreviated --quit, but - not --qui, since both --quit‐at‐eof and --quiet begin with --qui. Some - long option names are in uppercase, such as --QUIT‐AT‐EOF, as distinct - from --quit‐at‐eof. Such option names need only have their first let‐ - ter capitalized; the remainder of the name may be in either case. For - example, --Quit‐at‐eof is equivalent to --QUIT‐AT‐EOF. + ambiguous. For example, --mouse may be abbreviated --mou, but not + --mo, since both --mouse and --modelines begin with --mo. Some long + option names are in uppercase, such as --QUIT‐AT‐EOF, as distinct from + --quit‐at‐eof. Such option names need only have their first letter + capitalized; the remainder of the name may be in either case. For ex‐ + ample, --Quit‐at‐eof is equivalent to --QUIT‐AT‐EOF. Options are also taken from the environment variable "LESS". For exam‐ ple, to avoid typing "less -options ..." each time [1mless [22mis invoked, you @@ -574,77 +591,77 @@ LESS="-options"; export LESS - On MS‐DOS and Windows, you don’t need the quotes, but you should be - careful that any percent signs in the options string are not inter‐ + On MS‐DOS and Windows, you don’t need the quotes, but you should be + careful that any percent signs in the options string are not inter‐ preted as an environment variable expansion. - The environment variable is parsed before the command line, so command - line options override the LESS environment variable. If an option ap‐ + The environment variable is parsed before the command line, so command + line options override the LESS environment variable. If an option ap‐ pears in the LESS variable, it can be reset to its default value on the command line by beginning the command line option with "-+". - Some options like -k or -D require a string to follow the option let‐ - ter. The string for that option is considered to end when a dollar + Some options like -k or -D require a string to follow the option let‐ + ter. The string for that option is considered to end when a dollar sign ($) is found. For example, you can set two -D options like this: LESS="Dnwb$Dsbw" - If the --use‐backslash option appears earlier in the options, then a - dollar sign or backslash may be included literally in an option string + If the --use‐backslash option appears earlier in the options, then a + dollar sign or backslash may be included literally in an option string by preceding it with a backslash. If the --use‐backslash option is not - in effect, then backslashes are not treated specially, and there is no + in effect, then backslashes are not treated specially, and there is no way to include a dollar sign in the option string. -? or --help - This option displays a summary of the commands accepted by [1mless[0m - (the same as the h command). (Depending on how your shell in‐ - terprets the question mark, it may be necessary to quote the + This option displays a summary of the commands accepted by [1mless[0m + (the same as the h command). (Depending on how your shell in‐ + terprets the question mark, it may be necessary to quote the question mark, thus: "-\?".) -a or --search‐skip‐screen - By default, forward searches start at the top of the displayed - screen and backwards searches start at the bottom of the dis‐ - played screen (except for repeated searches invoked by the n or - N commands, which start after or before the "target" line re‐ - spectively; see the -j option for more about the target line). - The -a option causes forward searches to instead start at the - bottom of the screen and backward searches to start at the top + By default, forward searches start at the top of the displayed + screen and backwards searches start at the bottom of the dis‐ + played screen (except for repeated searches invoked by the n or + N commands, which start after or before the "target" line re‐ + spectively; see the -j option for more about the target line). + The -a option causes forward searches to instead start at the + bottom of the screen and backward searches to start at the top of the screen, thus skipping all lines displayed on the screen. -A or --SEARCH‐SKIP‐SCREEN - Causes all forward searches (not just non‐repeated searches) to - start just after the target line, and all backward searches to - start just before the target line. Thus, forward searches will + Causes all forward searches (not just non‐repeated searches) to + start just after the target line, and all backward searches to + start just before the target line. Thus, forward searches will skip part of the displayed screen (from the first line up to and - including the target line). Similarly backwards searches will + including the target line). Similarly backwards searches will skip the displayed screen from the last line up to and including the target line. This was the default behavior in less versions prior to 441. -b[4mn[24m or --buffers=[4mn[0m - Specifies the amount of buffer space [1mless [22mwill use for each - file, in units of kilobytes (1024 bytes). By default 64 KB of - buffer space is used for each file (unless the file is a pipe; - see the -B option). The -b option specifies instead that [4mn[0m + Specifies the amount of buffer space [1mless [22mwill use for each + file, in units of kilobytes (1024 bytes). By default 64 KB of + buffer space is used for each file (unless the file is a pipe; + see the -B option). The -b option specifies instead that [4mn[0m kilobytes of buffer space should be used for each file. If [4mn[24m is - -1, buffer space is unlimited; that is, the entire file can be + -1, buffer space is unlimited; that is, the entire file can be read into memory. -B or --auto‐buffers By default, when data is read from a pipe, buffers are allocated automatically as needed. If a large amount of data is read from - the pipe, this can cause a large amount of memory to be allo‐ - cated. The -B option disables this automatic allocation of - buffers for pipes, so that only 64 KB (or the amount of space - specified by the -b option) is used for the pipe. Warning: use - of -B can result in erroneous display, since only the most re‐ + the pipe, this can cause a large amount of memory to be allo‐ + cated. The -B option disables this automatic allocation of + buffers for pipes, so that only 64 KB (or the amount of space + specified by the -b option) is used for the pipe. Warning: use + of -B can result in erroneous display, since only the most re‐ cently viewed part of the piped data is kept in memory; any ear‐ - lier data is lost. Lost characters are displayed as question + lier data is lost. Lost characters are displayed as question marks. -c or --clear‐screen - Causes full screen repaints to be painted from the top line - down. By default, full screen repaints are done by scrolling + Causes full screen repaints to be painted from the top line + down. By default, full screen repaints are done by scrolling from the bottom of the screen. -C or --CLEAR‐SCREEN @@ -652,13 +669,13 @@ -d or --dumb The -d option suppresses the error message normally displayed if - the terminal is dumb; that is, lacks some important capability, + the terminal is dumb; that is, lacks some important capability, such as the ability to clear the screen or scroll backward. The - -d option does not otherwise change the behavior of [1mless [22mon a + -d option does not otherwise change the behavior of [1mless [22mon a dumb terminal. -D[1mx[4m[22mcolor[24m or --color=[1mx[4m[22mcolor[0m - Changes the color of different parts of the displayed text. [1mx[0m + Changes the color of different parts of the displayed text. [1mx[0m is a single character which selects the type of text whose color is being set: @@ -682,7 +699,7 @@ W The highlight enabled via the -w option. - 1‐5 The text in a search result which matches the first + 1‐5 The text in a search result which matches the first through fifth parenthesized sub‐pattern. Sub‐pattern coloring works only if [1mless [22mis built with one of the reg‐ ular expression libraries [1mposix[22m, [1mpcre[22m, or [1mpcre2[22m. @@ -695,30 +712,30 @@ u Underlined text. - The uppercase letters and digits can be used only when the - --use‐color option is enabled. When text color is specified by - both an uppercase letter and a lowercase letter, the uppercase - letter takes precedence. For example, error messages are nor‐ - mally displayed as standout text. So if both "s" and "E" are - given a color, the "E" color applies to error messages, and the + The uppercase letters and digits can be used only when the + --use‐color option is enabled. When text color is specified by + both an uppercase letter and a lowercase letter, the uppercase + letter takes precedence. For example, error messages are nor‐ + mally displayed as standout text. So if both "s" and "E" are + given a color, the "E" color applies to error messages, and the "s" color applies to other standout text. The lowercase letters - refer to bold and underline text formed by overstriking with - backspaces (see the -U option) and to non‐content text (such as - line numbers and prompts), but not to text formatted using ANSI - escape sequences with the -R option (but see the note below for + refer to bold and underline text formed by overstriking with + backspaces (see the -U option) and to non‐content text (such as + line numbers and prompts), but not to text formatted using ANSI + escape sequences with the -R option (but see the note below for different behavior on Windows and MS‐DOS). - A lowercase letter may be followed by a + to indicate that the - normal format change and the specified color should both be + A lowercase letter may be followed by a + to indicate that the + normal format change and the specified color should both be used. For example, -Dug displays underlined text as green with‐ - out underlining; the green color has replaced the usual under‐ - line formatting. But -Du+g displays underlined text as both + out underlining; the green color has replaced the usual under‐ + line formatting. But -Du+g displays underlined text as both green and in underlined format. [4mcolor[24m is either a 4‐bit color string or an 8‐bit color string: - A 4‐bit color string is one or two characters, where the first - character specifies the foreground color and the second speci‐ + A 4‐bit color string is one or two characters, where the first + character specifies the foreground color and the second speci‐ fies the background color as follows: b Blue @@ -737,24 +754,24 @@ y Yellow - The corresponding uppercase letter denotes a brighter shade of - the color. For example, -DNGk displays line numbers as bright - green text on a black background, and -DEbR displays error mes‐ - sages as blue text on a bright red background. If either char‐ - acter is a "‐" or is omitted, the corresponding color is set to + The corresponding uppercase letter denotes a brighter shade of + the color. For example, -DNGk displays line numbers as bright + green text on a black background, and -DEbR displays error mes‐ + sages as blue text on a bright red background. If either char‐ + acter is a "‐" or is omitted, the corresponding color is set to that of normal text. - An 8‐bit color string is one or two decimal integers separated + An 8‐bit color string is one or two decimal integers separated by a dot, where the first integer specifies the foreground color - and the second specifies the background color. Each integer is - a value between 0 and 255 inclusive which selects a "CSI 38;5" + and the second specifies the background color. Each integer is + a value between 0 and 255 inclusive which selects a "CSI 38;5" color value (see - https://en.wikipedia.org/wiki/ANSI_escape_code#SGR). If either - integer is a "‐" or is omitted, the corresponding color is set - to that of normal text. + ⟨https://en.wikipedia.org/wiki/ANSI_escape_code#SGR⟩). If ei‐ + ther integer is a "‐" or is omitted, the corresponding color is + set to that of normal text. - A 4‐bit or 8‐bit color string may be followed by one or more of - the following characters to set text attributes in addition to + A 4‐bit or 8‐bit color string may be followed by one or more of + the following characters to set text attributes in addition to the color. s or ˜ Standout (reverse video) @@ -765,48 +782,48 @@ l or & Blinking - On MS‐DOS and Windows, the --color option behaves differently + On MS‐DOS and Windows, the --color option behaves differently from what is described above in these ways: • The bold (d and *) and blinking (l and &) text attributes at the end of a color string are not supported. - • Lowercase color selector letters refer to text formatted - by ANSI escape sequences with -R, in addition to over‐ + • Lowercase color selector letters refer to text formatted + by ANSI escape sequences with -R, in addition to over‐ struck and non‐content text (but see -Da). - • For historical reasons, when a lowercase color selector - letter is followed by a numeric color value, the number - is not interpreted as an "CSI 38;5" color value as de‐ - scribed above, but instead as a 4‐bit - CHAR_INFO.Attributes value, between 0 and 15 inclusive - (see https://learn.microsoft.com/en‐ - us/windows/console/char‐info‐str). + • For historical reasons, when a lowercase color selector + letter is followed by a numeric color value, the number + is not interpreted as an "CSI 38;5" color value as de‐ + scribed above, but instead as a 4‐bit + CHAR_INFO.Attributes value, between 0 and 15 inclusive + (see ⟨https://learn.microsoft.com/en‐ + us/windows/console/char‐info‐str⟩). To avoid confusion, it is recommended that the equivalent - letters rather than numbers be used after a lowercase + letters rather than numbers be used after a lowercase color selector on MS‐DOS/Windows. - • Numeric color values ("CSI 38;5" color) following an up‐ - percase color selector letter are not supported on sys‐ + • Numeric color values ("CSI 38;5" color) following an up‐ + percase color selector letter are not supported on sys‐ tems earlier than Windows 10. - • Only a limited set of ANSI escape sequences to set color - in the content work correctly. 4‐bit color sequences + • Only a limited set of ANSI escape sequences to set color + in the content work correctly. 4‐bit color sequences work, but "CSI 38;5" color sequences do not. • The -Da option makes the behavior of --color more similar to its behavior on non‐MS‐DOS/Windows systems by (1) mak‐ ing lowercase color selector letters not affect text for‐ - matted with ANSI escape sequences, and (2) allowing "CSI + matted with ANSI escape sequences, and (2) allowing "CSI 38;5" color sequences in the content work by passing them to the terminal (only on Windows 10 and later; on earlier Windows systems, such sequences do not work regardless of the setting of -Da). -e or --quit‐at‐eof - Causes [1mless [22mto automatically exit the second time it reaches - end‐of‐file. By default, the only way to exit [1mless [22mis via the + Causes [1mless [22mto automatically exit the second time it reaches + end‐of‐file. By default, the only way to exit [1mless [22mis via the "q" command. -E or --QUIT‐AT‐EOF @@ -815,14 +832,15 @@ -f or --force Forces non‐regular files to be opened. (A non‐regular file is a - directory or a device special file.) Also suppresses the warn‐ + directory or a device special file.) Also suppresses the warn‐ ing message when a binary file is opened. By default, [1mless [22mwill refuse to open non‐regular files. Note that some operating sys‐ tems will not allow directories to be read, even if -f is set. -F or --quit‐if‐one‐screen Causes [1mless [22mto automatically exit if the entire file can be dis‐ - played on the first screen. + played on the first screen. Also see the description of the + LESS_SHELL_LINES environment variable below. -g or --hilite‐search Normally, [1mless [22mwill highlight ALL strings which match the last @@ -868,87 +886,85 @@ number is recalculated if the terminal window is resized. If the --header option is used and the target line specified by -j would be obscured by the header, the target line is moved to the - first line after the header. While the --header option is ac‐ - tive, the -S option is ignored, and lines longer than the screen - width are truncated. - - If any form of the -j option is used, repeated forward searches - (invoked with "n" or "N") begin at the line immediately after - the target line, and repeated backward searches begin at the - target line, unless changed by -a or -A. For example, if "-j4" - is used, the target line is the fourth line on the screen, so + first line after the header. + + If any form of the -j option is used, repeated forward searches + (invoked with "n" or "N") begin at the line immediately after + the target line, and repeated backward searches begin at the + target line, unless changed by -a or -A. For example, if "-j4" + is used, the target line is the fourth line on the screen, so forward searches begin at the fifth line on the screen. However - nonrepeated searches (invoked with "/" or "?") always begin at + nonrepeated searches (invoked with "/" or "?") always begin at the start or end of the current screen respectively. -J or --status‐column - Displays a status column at the left edge of the screen. The + Displays a status column at the left edge of the screen. The character displayed in the status column may be one of: > The line is chopped with the -S option, and the text that - is chopped off beyond the right edge of the screen con‐ + is chopped off beyond the right edge of the screen con‐ tains a match for the current search. - < The line is horizontally shifted, and the text that is - shifted beyond the left side of the screen contains a + < The line is horizontally shifted, and the text that is + shifted beyond the left side of the screen contains a match for the current search. - = The line is both chopped and shifted, and there are + = The line is both chopped and shifted, and there are matches beyond both sides of the screen. - * There are matches in the visible part of the line but + * There are matches in the visible part of the line but none to the right or left of it. a‐z, A‐Z - The line has been marked with the corresponding letter - via the m command. + The line has been marked with the corresponding letter + via the m or M command. -k[4mfilename[24m or --lesskey‐file=[4mfilename[0m Causes [1mless [22mto open and interpret the named file as a [1mlesskey[22m(1) - binary file. Multiple -k options may be specified. If the - LESSKEY or LESSKEY_SYSTEM environment variable is set, or if a + binary file. Multiple -k options may be specified. If the + LESSKEY or LESSKEY_SYSTEM environment variable is set, or if a lesskey file is found in a standard place (see KEY BINDINGS), it - is also used as a [1mlesskey [22mfile. Note the warning under + is also used as a [1mlesskey [22mfile. Note the warning under "--lesskey‐content" below. --lesskey‐src=[4mfilename[0m Causes [1mless [22mto open and interpret the named file as a [1mlesskey[22m(1) - source file. If the LESSKEYIN or LESSKEYIN_SYSTEM environment + source file. If the LESSKEYIN or LESSKEYIN_SYSTEM environment variable is set, or if a lesskey source file is found in a stan‐ - dard place (see KEY BINDINGS), it is also used as a [4mlesskey[0m - [4msource[24m file. Prior to version 582, the [1mlesskey [22mprogram needed - to be run to convert a [4mlesskey[24m [4msource[24m file to a [4mlesskey[24m [4mbinary[0m - file for [1mless [22mto use. Newer versions of [1mless [22mread the [4mlesskey[0m - [4msource[24m file directly and ignore the binary file if the source + dard place (see KEY BINDINGS), it is also used as a lesskey + source file. Prior to version 582, the [1mlesskey [22mprogram needed + to be run to convert a lesskey [4msource[24m file to a lesskey [4mbinary[0m + file for [1mless [22mto use. Newer versions of [1mless [22mread the lesskey + source file directly and ignore the binary file if the source file exists. Note the warning under "--lesskey‐content" below. --lesskey‐content=[4mtext[0m - Causes less to interpret the specified text as the contents of a + Causes [1mless [22mto interpret the specified text as the contents of a [1mlesskey[22m(1) source file. In the text, [1mlesskey [22mlines may be sepa‐ - rated by either newlines as usual, or by semicolons. A literal - semicolon may be represented by a backslash followed by a semi‐ + rated by either newlines as usual, or by semicolons. A literal + semicolon may be represented by a backslash followed by a semi‐ colon. Warning: certain environment variables such as LESS, LESSSECURE, - LESSCHARSET and others, which are used early in startup, cannot - be set in a file specified by a command line option (--lesskey, - --lesskey‐src or --lesskey‐content). When using a [1mlesskey [22mfile - to set environment variables, it is safer to use the default - lesskey file, or to specify the file using the LESSKEYIN or - LESSKEY_CONTENT environment variables rather than using a com‐ + LESSCHARSET and others, which are used early in startup, cannot + be set in a file specified by a command line option (--lesskey, + --lesskey‐src or --lesskey‐content). When using a [1mlesskey [22mfile + to set environment variables, it is safer to use the default + lesskey file, or to specify the file using the LESSKEYIN or + LESSKEY_CONTENT environment variables rather than using a com‐ mand line option. -K or --quit‐on‐intr - Causes [1mless [22mto exit immediately (with status 2) when an inter‐ - rupt character (usually ^C) is typed. Normally, an interrupt + Causes [1mless [22mto exit immediately (with status 2) when an inter‐ + rupt character (usually ^C) is typed. Normally, an interrupt character causes [1mless [22mto stop whatever it is doing and return to - its command prompt. Note that use of this option makes it im‐ + its command prompt. Note that use of this option makes it im‐ possible to return to the command prompt from the "F" command. -L or --no‐lessopen - Ignore the LESSOPEN environment variable (see the INPUT PRE‐ - PROCESSOR section below). This option can be set from within - [1mless[22m, but it will apply only to files opened subsequently, not + Ignore the LESSOPEN environment variable (see the INPUT PRE‐ + PROCESSOR section below). This option can be set from within + [1mless[22m, but it will apply only to files opened subsequently, not to the file which is currently open. -m or --long‐prompt @@ -959,14 +975,12 @@ Causes [1mless [22mto prompt even more verbosely than [1mmore[22m(1). -n or --line‐numbers - Suppresses line numbers. The default (to use line numbers) may - cause [1mless [22mto run more slowly in some cases, especially with a - very large input file. Suppressing line numbers with the -n op‐ - tion will avoid this problem. Using line numbers means: the - line number will be displayed in the verbose prompt and in the = - command, and the v command will pass the current line number to - the editor (see also the discussion of LESSEDIT in PROMPTS be‐ - low). + Suppresses line numbers. The default (to use line numbers) may + cause [1mless [22mto run more slowly in some cases, especially with a + very large input file. Using line numbers means: the line num‐ + ber will be displayed in the verbose prompt and in the = com‐ + mand, and the v command will pass the current line number to the + editor (see also the discussion of LESSEDIT in PROMPTS below). -N or --LINE‐NUMBERS Causes a line number to be displayed at the beginning of each @@ -1034,51 +1048,67 @@ play problems may result, such as long lines being split in the wrong place. - USE OF THE -r OPTION IS NOT RECOMMENDED. + USE OF THE -r OPTION IS DANGEROUS AND IS NOT RECOMMENDED. + The -r option can be set on the command line or via the - com‐ + mand, but to avoid unintentional use, it cannot be set in a LESS + environment variable. If -r appears in a LESS environment vari‐ + able, it is treated as if it were -R. -R or --RAW‐CONTROL‐CHARS - Like -r, but only ANSI "color" escape sequences and OSC 8 hyper‐ - link sequences are output in "raw" form. Unlike -r, the screen - appearance is maintained correctly, provided that there are no - escape sequences in the file other than these types of escape - sequences. Color escape sequences are only supported when the - color is changed within one line, not across lines. In other - words, the beginning of each line is assumed to be normal (non‐ - colored), regardless of any escape sequences in previous lines. - For the purpose of keeping track of screen appearance, these es‐ - cape sequences are assumed to not move the cursor. + Like -r, but only a limited set of escape sequences are output + in "raw" form. Unlike -r, the screen appearance is maintained + correctly. The sequences which are output raw are: - OSC 8 hyperlinks are sequences of the form: + 1. ANSI SGR ("color") sequences - ESC ] 8 ; ... \7 + 2. OSC 8 hyperlinks - The terminating sequence may be either a BEL character (\7) or - the two‐character sequence "ESC \". + 3. Other OSC sequences, if the OSC type number is listed in the + LESSANSIOSCALLOW environment variable + + 4. OSC sequences starting with a non‐standard introductory char‐ + acter (that is, something other than "]"), if the character is + listed in the LESSANSIOSCCHARS environment variable followed by + an asterisk ANSI color escape sequences are sequences of the form: ESC [ ... m where the "..." is zero or more color specification characters. - You can make [1mless [22mthink that characters other than "m" can end - ANSI color escape sequences by setting the environment variable + Color escape sequences are only supported when the color is + changed within one line, not across lines. In other words, the + beginning of each line is assumed to be normal (non‐colored), + regardless of any escape sequences in previous lines. + + You can make [1mless [22mthink that characters other than "m" can end + ANSI color escape sequences by setting the environment variable LESSANSIENDCHARS to the list of characters which can end a color - escape sequence. And you can make [1mless [22mthink that characters - other than the standard ones may appear between the ESC and the - m by setting the environment variable LESSANSIMIDCHARS to the + escape sequence. And you can make [1mless [22mthink that characters + other than the standard ones may appear between the ESC and the + m by setting the environment variable LESSANSIMIDCHARS to the list of characters which can appear. + OSC sequences are of the form: + + ESC ] N ; ... \7 + + where the OSC type number N is a decimal integer. The terminat‐ + ing sequence may be either a BEL character (\7) as above, or the + two‐character sequence "ESC \". + -s or --squeeze‐blank‐lines - Causes consecutive blank lines to be squeezed into a single - blank line. This is useful when viewing [1mnroff [22moutput. + Causes consecutive blank lines to be squeezed into a single + blank line. This is useful when viewing [1mnroff[22m(1) output. -S or --chop‐long‐lines - Causes lines longer than the screen width to be chopped (trun‐ + Causes lines longer than the screen width to be chopped (trun‐ cated) rather than wrapped. That is, the portion of a long line that does not fit in the screen width is not displayed until you - press RIGHT‐ARROW. The default is to wrap long lines; that is, + press RIGHT‐ARROW. The default is to wrap long lines; that is, display the remainder on the next line. See also the --wordwrap - option. + option. While the --header option is active, the -S option is + ignored, and lines longer than the screen width are truncated. -t[4mtag[24m or --tag=[4mtag[0m The -t option, followed immediately by a TAG, will edit the file @@ -1088,7 +1118,7 @@ an equivalent command. If the environment variable LESSGLOBALT‐ AGS is set, it is taken to be the name of a command compatible with [1mglobal[22m(1), and that command is executed to find the tag. - (See http://www.gnu.org/software/global/global.html). The -t + (See ⟨http://www.gnu.org/software/global/global.html⟩). The -t option may also be specified from within [1mless [22m(using the - com‐ mand) as a way of examining a new file. The command ":t" is equivalent to specifying -t from within [1mless[22m. @@ -1111,12 +1141,12 @@ the underlined text is displayed using the terminal’s hardware underlining capability. Also, backspaces which appear between two identical characters are treated specially: the overstruck - text is printed using the terminal’s hardware boldface capabili‐ - ty. Other backspaces are deleted, along with the preceding - character. Carriage returns immediately followed by a newline + text is printed using the terminal’s hardware boldface capabil‐ + ity. Other backspaces are deleted, along with the preceding + character. Carriage returns immediately followed by a newline are deleted. Other carriage returns are handled as specified by - the -r option. Unicode formatting characters, such as the Byte - Order Mark, are sent to the terminal. Text which is overstruck + the -r option. Unicode formatting characters, such as the Byte + Order Mark, are sent to the terminal. Text which is overstruck or underlined can be searched for if neither -u nor -U is in ef‐ fect. @@ -1127,14 +1157,14 @@ Displays the version number of [1mless[22m. -w or --hilite‐unread - Temporarily highlights the first "new" line after a forward + Temporarily highlights the first "new" line after a forward movement of a full page. The first "new" line is the line imme‐ - diately following the line previously at the bottom of the + diately following the line previously at the bottom of the screen. Also highlights the target line after a g or p command. - The highlight is removed at the next command which causes move‐ + The highlight is removed at the next command which causes move‐ ment. If the --status‐line option is in effect, the entire line - (the width of the screen) is highlighted. Otherwise, only the - text in the line is highlighted, unless the -J option is in ef‐ + (the width of the screen) is highlighted. Otherwise, only the + text in the line is highlighted, unless the -J option is in ef‐ fect, in which case only the status column is highlighted. -W or --HILITE‐UNREAD @@ -1142,48 +1172,48 @@ forward movement command larger than one line. -x[4mn[24m,... or --tabs=[4mn[24m,... - Sets tab stops. If only one [4mn[24m is specified, tab stops are set - at multiples of [4mn[24m. If multiple values separated by commas are - specified, tab stops are set at those positions, and then con‐ - tinue with the same spacing as the last two. For example, + Sets tab stops. If only one [4mn[24m is specified, tab stops are set + at multiples of [4mn[24m. If multiple values separated by commas are + specified, tab stops are set at those positions, and then con‐ + tinue with the same spacing as the last two. For example, "‐x9,17" will set tabs at positions 9, 17, 25, 33, etc. The de‐ fault for [4mn[24m is 8. -X or --no‐init Disables sending the termcap initialization and deinitialization - strings to the terminal. This is sometimes desirable if the - deinitialization string does something unnecessary, like clear‐ + strings to the terminal. This is sometimes desirable if the + deinitialization string does something unnecessary, like clear‐ ing the screen. -y[4mn[24m or --max‐forw‐scroll=[4mn[0m Specifies a maximum number of lines to scroll forward. If it is necessary to scroll forward more than [4mn[24m lines, the screen is re‐ - painted instead. The -c or -C option may be used to repaint - from the top of the screen if desired. By default, any forward + painted instead. The -c or -C option may be used to repaint + from the top of the screen if desired. By default, any forward movement causes scrolling. -z[4mn[24m or --window=[4mn[24m or -[4mn[0m - Changes the default scrolling window size to [4mn[24m lines. The de‐ - fault is one screenful. The z and w commands can also be used - to change the window size. The "z" may be omitted for compati‐ - bility with some versions of [1mmore[22m(1). If the number [4mn[24m is nega‐ - tive, it indicates [4mn[24m lines less than the current screen size. - For example, if the screen is 24 lines, [4m-z-4[24m sets the scrolling - window to 20 lines. If the screen is resized to 40 lines, the + Changes the default scrolling window size to [4mn[24m lines. The de‐ + fault is one screenful. The z and w commands can also be used + to change the window size. The "z" may be omitted for compati‐ + bility with some versions of [1mmore[22m(1). If the number [4mn[24m is nega‐ + tive, it indicates [4mn[24m lines less than the current screen size. + For example, if the screen is 24 lines, [4m-z-4[24m sets the scrolling + window to 20 lines. If the screen is resized to 40 lines, the scrolling window automatically changes to 36 lines. -"[4mcc[24m or --quotes=[4mcc[0m - Changes the filename quoting character. This may be necessary - if you are trying to name a file which contains both spaces and - quote characters. Followed by a single character, this changes - the quote character to that character. Filenames containing a + Changes the filename quoting character. This may be necessary + if you are trying to name a file which contains both spaces and + quote characters. Followed by a single character, this changes + the quote character to that character. Filenames containing a space should then be surrounded by that character rather than by - double quotes. Followed by two characters, changes the open - quote to the first character, and the close quote to the second + double quotes. Followed by two characters, changes the open + quote to the first character, and the close quote to the second character. Filenames containing a space should then be preceded - by the open quote character and followed by the close quote - character. Note that even after the quote characters are - changed, this option remains -" (a dash followed by a double + by the open quote character and followed by the close quote + character. Note that even after the quote characters are + changed, this option remains -" (a dash followed by a double quote). -~ or --tilde @@ -1193,60 +1223,69 @@ -# or --shift Specifies the default number of positions to scroll horizontally - in the RIGHTARROW and LEFTARROW commands. If the number speci‐ - fied is zero, it sets the default number of positions to one + in the RIGHTARROW and LEFTARROW commands. If the number speci‐ + fied is zero, it sets the default number of positions to one half of the screen width. Alternately, the number may be speci‐ - fied as a fraction of the width of the screen, starting with a - decimal point: .5 is half of the screen width, .3 is three - tenths of the screen width, and so on. If the number is speci‐ + fied as a fraction of the width of the screen, starting with a + decimal point: .5 is half of the screen width, .3 is three + tenths of the screen width, and so on. If the number is speci‐ fied as a fraction, the actual number of scroll positions is re‐ calculated if the terminal window is resized. --exit‐follow‐on‐close - When using the "F" command on a pipe, [1mless [22mwill automatically - stop waiting for more data when the input side of the pipe is + When using the "F" command on a pipe, [1mless [22mwill automatically + stop waiting for more data when the input side of the pipe is closed. --file‐size If --file‐size is specified, [1mless [22mwill determine the size of the - file immediately after opening the file. Then the "=" command - will display the number of lines in the file. Normally this is - not done, because it can be slow if the input file is non‐seek‐ + file immediately after opening the file. Then the "=" command + will display the number of lines in the file. Normally this is + not done, because it can be slow if the input file is non‐seek‐ able (such as a pipe) and is large. --follow‐name Normally, if the input file is renamed while an F command is ex‐ ecuting, [1mless [22mwill continue to display the contents of the orig‐ - inal file despite its name change. If --follow‐name is speci‐ - fied, during an F command [1mless [22mwill periodically attempt to re‐ + inal file despite its name change. If --follow‐name is speci‐ + fied, during an F command [1mless [22mwill periodically attempt to re‐ open the file by name. If the reopen succeeds and the file is a - different file from the original (which means that a new file - has been created with the same name as the original (now re‐ + different file from the original (which means that a new file + has been created with the same name as the original (now re‐ named) file), [1mless [22mwill display the contents of that new file. + --form‐feed + When scrolling forward or backward in the file, stop if a line + beginning with a form feed character (^L) is reached. This can + be useful when viewing a file which uses form feeds between + pages. + --header=[4mL[24m,[4mC[24m,[4mN[0m Sets the number of header lines and columns displayed on the screen. The number of header lines is set to [4mL[24m. If [4mL[24m is 0, header lines are disabled. If [4mL[24m is empty or missing, the number of header lines is unchanged. The number of header columns is - set to [4mC[24m. If [4mC[24m is 0, header columns are disabled. If [4mC[24m is emp‐ - ty or missing, the number of header columns is unchanged. The - first header line is set to line number [4mN[24m in the file. If [4mN[24m is - empty or missing, it is taken to be the number of the line cur‐ - rently displayed in the first line of the screen (if the --head‐ - er command has been issued from within [1mless[22m), or 1 (if the + set to [4mC[24m. If [4mC[24m is 0, header columns are disabled. If [4mC[24m is + empty or missing, the number of header columns is unchanged. + The first header line is set to line number [4mN[24m in the file. If [4mN[0m + is empty or missing, it is taken to be the number of the line + currently displayed in the first line of the screen (if the + --header command has been issued from within [1mless[22m), or 1 (if the --header option has been given on the command line). The spe‐ cial form "--header=-" disables header lines and header columns, and is equivalent to "--header=0,0". When [4mL[24m is nonzero, the first [4mL[24m lines at the top of the screen are replaced with the [4mL[24m lines of the file beginning at line [4mN[24m, - regardless of what part of the file is being viewed. When head‐ - er lines are displayed, any file contents before the header line - cannot be viewed. When [4mC[24m is nonzero, the first [4mC[24m characters - displayed at the beginning of each line are replaced with the - first [4mC[24m characters of the line, even if the rest of the line is - scrolled horizontally. + regardless of what part of the file is being viewed. When + header lines are displayed, any file contents before the header + line cannot be viewed. When [4mC[24m is nonzero, the first [4mC[24m charac‐ + ters displayed at the beginning of each line are replaced with + the first [4mC[24m characters of the line, even if the rest of the line + is scrolled horizontally. + + While the --header option is active, lines longer than the + screen width are truncated, and the -S option is ignored. --incsearch Subsequent search commands will be "incremental"; that is, [1mless[0m @@ -1303,12 +1342,13 @@ ward in the file, scrolling the mouse wheel up moves backwards in the file, left‐click sets the "#" mark to the line where the mouse is clicked, and right‐click (or any other) returns to the - "#" mark position. If a left‐click is performed with the mouse - cursor on an OSC 8 hyperlink, the hyperlink is selected as if by - the ^O^N command. If a left‐click is performed with the mouse - cursor on an OSC 8 hyperlink which is already selected, the hy‐ - perlink is opened as if by the ^O^O command. The number of - lines to scroll when the wheel is moved can be set by the + "#" mark position. Holding down the left button and dragging + also moves in the file. If a left‐click is performed with the + mouse cursor on an OSC 8 hyperlink, the hyperlink is selected as + if by the ^O^N command. If a left‐click is performed with the + mouse cursor on an OSC 8 hyperlink which is already selected, + the hyperlink is opened as if by the ^O^O command. The number + of lines to scroll when the wheel is moved can be set by the --wheel‐lines option. Mouse input works only on terminals which support X11 mouse reporting, and on the Windows version of [1mless[22m. @@ -1316,6 +1356,11 @@ Like --mouse, except the direction scrolled on mouse wheel move‐ ment is reversed. + --no‐edit‐warn + Don’t print a warning message when using the v command on a file + which was opened using a LESSOPEN preprocessor (see the INPUT + PREPROCESSOR section below). + --no‐keypad Disables sending the keypad initialization and deinitialization strings to the terminal. This is sometimes useful if the keypad @@ -1334,6 +1379,14 @@ line numbers. Line number 1 is assigned to the first line after any header lines. + --no‐paste + If the terminal supports xterm‐compatible "bracketed paste", any + text pasted into [1mless [22mis ignored, except that one line of text + may be pasted into the command line at the bottom of the screen + (search strings, file names, etc). That is, the first newline + of text pasted into the command line and any text that follows + it is ignored. + --no‐search‐header‐lines Searches do not include header lines, but still include header columns. @@ -1379,7 +1432,7 @@ is, tabs are expanded to spaces. This option overrides the -U option, so that display of tabs can be controlled separate from that of backspaces and carriage returns. If not set, tab dis‐ - play is controlled by the -U options. + play is controlled by the -U option. --PROC‐TAB If set, tabs are handled as if the -U option were set; that is @@ -1438,8 +1491,8 @@ Enables colored text in various places. The -D option can be used to change the colors. Colored text works only if the ter‐ minal supports ANSI color escape sequences (as defined in - https://www.ecma‐international.org/publications‐and‐ - standards/standards/ecma‐48). + ⟨https://www.ecma‐international.org/publications‐and‐ + standards/standards/ecma‐48⟩). --wheel‐lines=[4mn[0m Set the number of lines to scroll when the mouse wheel is @@ -1474,7 +1527,7 @@ certain keys can be used to manipulate the command line. Most commands have an alternate form in [ brackets ] which can be used if a key does not exist on a particular keyboard. (Note that the forms beginning - with ESC do not work in some MS‐DOS and Windows systems because ESC is + with ESC do not work on some MS‐DOS and Windows systems because ESC is the line erase character.) Any of these special keys may be entered literally by preceding it with the "literal" character, either ^V or ^A. A backslash itself may also be entered literally by entering two @@ -1544,84 +1597,84 @@ ^U (Unix and OS/2) or ESC (MS‐DOS and Windows) Delete the entire command line, or cancel the command if the - command line is empty. If you have changed your line‐kill char‐ - acter in Unix to something other than ^U, that character is used - instead of ^U. + cursor is at the beginning of the command line. If you have + changed your line‐kill character in Unix to something other than + ^U, that character is used instead of ^U. ^G Delete the entire command line and return to the main prompt. [1mKEY BINDINGS[0m - You may define your own [1mless [22mcommands by creating a lesskey source - file. This file specifies a set of command keys and an action associ‐ - ated with each key. You may also change the line‐editing keys (see - LINE EDITING), and set environment variables used by [1mless[22m. See the + You may define your own [1mless [22mcommands by creating a lesskey source + file. This file specifies a set of command keys and an action associ‐ + ated with each key. You may also change the line‐editing keys (see + LINE EDITING), and set environment variables used by [1mless[22m. See the [1mlesskey[22m(1) manual page for details about the file format. - If the environment variable LESSKEYIN is set, [1mless [22muses that as the - name of the lesskey source file. Otherwise, [1mless [22mlooks in a standard - place for the lesskey source file: On Unix systems, [1mless [22mlooks for a - lesskey file called "$XDG_CONFIG_HOME/lesskey" or "$HOME/.con‐ - fig/lesskey" or "$HOME/.lesskey". On MS‐DOS and Windows systems, [1mless[0m - looks for a lesskey file called "$HOME/_lesskey", and if it is not + If the environment variable LESSKEYIN is set, [1mless [22muses that as the + name of the lesskey source file. Otherwise, [1mless [22mlooks in a standard + place for the lesskey source file: On Unix systems, [1mless [22mlooks for a + lesskey file called "$XDG_CONFIG_HOME/lesskey" or "$HOME/.con‐ + fig/lesskey" or "$HOME/.lesskey". On MS‐DOS and Windows systems, [1mless[0m + looks for a lesskey file called "$HOME/_lesskey", and if it is not found there, then looks for a lesskey file called "_lesskey" in any di‐ - rectory specified in the PATH environment variable. On OS/2 systems, - [1mless [22mlooks for a lesskey file called "$HOME/lesskey.ini", and if it is - not found, then looks for a lesskey file called "lesskey.ini" in any - directory specified in the INIT environment variable, and if it not - found there, then looks for a lesskey file called "lesskey.ini" in any + rectory specified in the PATH environment variable. On OS/2 systems, + [1mless [22mlooks for a lesskey file called "$HOME/lesskey.ini", and if it is + not found, then looks for a lesskey file called "lesskey.ini" in any + directory specified in the INIT environment variable, and if it not + found there, then looks for a lesskey file called "lesskey.ini" in any directory specified in the PATH environment variable. - A system‐wide lesskey source file may also be set up to provide key - bindings. If a key is defined in both a local lesskey file and in the - system‐wide file, key bindings in the local file take precedence over - those in the system‐wide file. If the environment variable - LESSKEYIN_SYSTEM is set, [1mless [22muses that as the name of the system‐wide - lesskey file. Otherwise, [1mless [22mlooks in a standard place for the sys‐ + A system‐wide lesskey source file may also be set up to provide key + bindings. If a key is defined in both a local lesskey file and in the + system‐wide file, key bindings in the local file take precedence over + those in the system‐wide file. If the environment variable + LESSKEYIN_SYSTEM is set, [1mless [22muses that as the name of the system‐wide + lesskey file. Otherwise, [1mless [22mlooks in a standard place for the sys‐ tem‐wide lesskey file: On Unix systems, the system‐wide lesskey file is - /usr/local/etc/syslesskey. (However, if [1mless [22mwas built with a differ‐ - ent sysconf directory than /usr/local/etc, that directory is where the + /usr/local/etc/syslesskey. (However, if [1mless [22mwas built with a differ‐ + ent sysconf directory than /usr/local/etc, that directory is where the sysless file is found.) On MS‐DOS and Windows systems, the system‐wide - lesskey file is c:\_syslesskey. On OS/2 systems, the system‐wide + lesskey file is c:\_syslesskey. On OS/2 systems, the system‐wide lesskey file is c:\syslesskey.ini. - Previous versions of [1mless [22m(before v582) used lesskey files with a bina‐ - ry format, produced by the [1mlesskey [22mprogram. It is no longer necessary - to use the [1mlesskey [22mprogram. + Older versions of [1mless [22m(before v582) used lesskey files with a binary + format, produced by the [1mlesskey [22mprogram. It is no longer necessary to + use the [1mlesskey [22mprogram. [1mINPUT PREPROCESSOR[0m You may define an "input preprocessor" for [1mless[22m. Before [1mless [22mopens a - file, it first gives your input preprocessor a chance to modify the way - the contents of the file are displayed. An input preprocessor is sim‐ - ply an executable program (or shell script), which writes the contents + file, it first gives the input preprocessor a chance to modify the way + the contents of the file are displayed. An input preprocessor is sim‐ + ply an executable program (or shell script), which writes the contents of the file to a different file, called the replacement file. The con‐ - tents of the replacement file are then displayed in place of the con‐ - tents of the original file. However, it will appear to the user as if - the original file is opened; that is, [1mless [22mwill display the original + tents of the replacement file are then displayed in place of the con‐ + tents of the original file. However, it will appear to the user as if + the original file is opened; that is, [1mless [22mwill display the original filename as the name of the current file. - An input preprocessor receives one command line argument, the original - filename, as entered by the user. It should create the replacement - file, and when finished, print the name of the replacement file to its - standard output. If the input preprocessor does not output a replace‐ - ment filename, [1mless [22muses the original file, as normal. The input pre‐ - processor is not called when viewing standard input. To set up an in‐ - put preprocessor, set the LESSOPEN environment variable to a command - line which will invoke your input preprocessor. This command line - should include one occurrence of the string "%s", which will be re‐ + An input preprocessor receives one command line argument, the original + filename, as entered by the user. It should create the replacement + file, and when finished, print the name of the replacement file to its + standard output. If the input preprocessor does not output a replace‐ + ment filename, [1mless [22muses the original file, as normal. The input pre‐ + processor is not called when viewing standard input. To set up an in‐ + put preprocessor, set the LESSOPEN environment variable to a command + line which will invoke your input preprocessor. This command line + should include one occurrence of the string "%s", which will be re‐ placed by the filename when the input preprocessor command is invoked. When [1mless [22mcloses a file opened in such a way, it will call another pro‐ - gram, called the input postprocessor, which may perform any desired - clean‐up action (such as deleting the replacement file created by + gram, called the input postprocessor, which may perform any desired + clean‐up action (such as deleting the replacement file created by LESSOPEN). This program receives two command line arguments, the orig‐ - inal filename as entered by the user, and the name of the replacement - file. To set up an input postprocessor, set the LESSCLOSE environment - variable to a command line which will invoke your input postprocessor. - It may include two occurrences of the string "%s"; the first is re‐ - placed with the original name of the file and the second with the name + inal filename as entered by the user, and the name of the replacement + file. To set up an input postprocessor, set the LESSCLOSE environment + variable to a command line which will invoke your input postprocessor. + It may include two occurrences of the string "%s"; the first is re‐ + placed with the original name of the file and the second with the name of the replacement file, which was output by LESSOPEN. - For example, on many Unix systems, these two scripts will allow you to + For example, on many Unix systems, these two scripts will allow you to keep files in compressed format, but still let [1mless [22mview them directly: lessopen.sh: @@ -1641,27 +1694,27 @@ #! /bin/sh rm $2 - To use these scripts, put them both where they can be executed and set + To use these scripts, put them both where they can be executed and set LESSOPEN="lessopen.sh %s", and LESSCLOSE="lessclose.sh %s %s". More - complex LESSOPEN and LESSCLOSE scripts may be written to accept other + complex LESSOPEN and LESSCLOSE scripts may be written to accept other types of compressed files, and so on. - It is also possible to set up an input preprocessor to pipe the file - data directly to [1mless[22m, rather than putting the data into a replacement + It is also possible to set up an input preprocessor to pipe the file + data directly to [1mless[22m, rather than putting the data into a replacement file. This avoids the need to decompress the entire file before start‐ ing to view it. An input preprocessor that works this way is called an - input pipe. An input pipe, instead of writing the name of a replace‐ + input pipe. An input pipe, instead of writing the name of a replace‐ ment file on its standard output, writes the entire contents of the re‐ - placement file on its standard output. If the input pipe does not - write any characters on its standard output, then there is no replace‐ - ment file and [1mless [22muses the original file, as normal. To use an input - pipe, make the first character in the LESSOPEN environment variable a - vertical bar (|) to signify that the input preprocessor is an input - pipe. As with non‐pipe input preprocessors, the command string must - contain one occurrence of %s, which is replaced with the filename of + placement file on its standard output. If the input pipe does not + write any characters on its standard output, then there is no replace‐ + ment file and [1mless [22muses the original file, as normal. To use an input + pipe, make the first character in the LESSOPEN environment variable a + vertical bar (|) to signify that the input preprocessor is an input + pipe. As with non‐pipe input preprocessors, the command string must + contain one occurrence of %s, which is replaced with the filename of the input file. - For example, on many Unix systems, this script will work like the pre‐ + For example, on many Unix systems, this script will work like the pre‐ vious example scripts: lesspipe.sh: @@ -1678,29 +1731,29 @@ LESSOPEN="|lesspipe.sh %s". Note that a preprocessor cannot output an empty file, since that is in‐ - terpreted as meaning there is no replacement, and the original file is - used. To avoid this, if LESSOPEN starts with two vertical bars, the - exit status of the script determines the behavior when the output is - empty. If the output is empty and the exit status is zero, the empty - output is considered to be replacement text. If the output is empty + terpreted as meaning there is no replacement, and the original file is + used. To avoid this, if LESSOPEN starts with two vertical bars, the + exit status of the script determines the behavior when the output is + empty. If the output is empty and the exit status is zero, the empty + output is considered to be replacement text. If the output is empty and the exit status is nonzero, the original file is used. For compat‐ - ibility with previous versions of [1mless[22m, if LESSOPEN starts with only + ibility with previous versions of [1mless[22m, if LESSOPEN starts with only one vertical bar, the exit status of the preprocessor is ignored. - When an input pipe is used, a LESSCLOSE postprocessor can be used, but + When an input pipe is used, a LESSCLOSE postprocessor can be used, but it is usually not necessary since there is no replacement file to clean - up. In this case, the replacement file name passed to the LESSCLOSE + up. In this case, the replacement file name passed to the LESSCLOSE postprocessor is "-". - For compatibility with previous versions of [1mless[22m, the input preproces‐ + For compatibility with previous versions of [1mless[22m, the input preproces‐ sor or pipe is not used if [1mless [22mis viewing standard input. However, if - the first character of LESSOPEN is a dash (-), the input preprocessor - is used on standard input as well as other files. In this case, the - dash is not considered to be part of the preprocessor command. If + the first character of LESSOPEN is a dash (-), the input preprocessor + is used on standard input as well as other files. In this case, the + dash is not considered to be part of the preprocessor command. If standard input is being viewed, the input preprocessor is passed a file - name consisting of a single dash. Similarly, if the first two charac‐ - ters of LESSOPEN are vertical bar and dash (|-) or two vertical bars - and a dash (||-), the input pipe is used on standard input as well as + name consisting of a single dash. Similarly, if the first two charac‐ + ters of LESSOPEN are vertical bar and dash (|-) or two vertical bars + and a dash (||-), the input pipe is used on standard input as well as other files. Again, in this case the dash is not considered to be part of the input pipe command. @@ -1711,25 +1764,25 @@ can be displayed directly to the screen. control characters - should not be displayed directly, but are expected to be found + should not be displayed directly, but are expected to be found in ordinary text files (such as backspace and tab). binary characters - should not be displayed directly and are not expected to be + should not be displayed directly and are not expected to be found in text files. A "character set" is simply a description of which characters are to be - considered normal, control, and binary. The LESSCHARSET environment - variable may be used to select a character set. Possible values for + considered normal, control, and binary. The LESSCHARSET environment + variable may be used to select a character set. Possible values for LESSCHARSET are: - ascii BS, TAB, NL, CR, and formfeed are control characters, all chars - with values between 32 and 126 are normal, and all others are + ascii BS, TAB, NL, CR, and formfeed are control characters, all chars + with values between 32 and 126 are normal, and all others are binary. iso8859 - Selects an ISO 8859 character set. This is the same as ASCII, - except characters between 160 and 255 are treated as normal + Selects an ISO 8859 character set. This is the same as ASCII, + except characters between 160 and 255 are treated as normal characters. latin1 Same as iso8859. @@ -1741,8 +1794,8 @@ ebcdic Selects an EBCDIC character set. IBM‐1047 - Selects an EBCDIC character set used by OS/390 Unix Services. - This is the EBCDIC analogue of latin1. You get similar results + Selects an EBCDIC character set used by OS/390 Unix Services. + This is the EBCDIC analogue of latin1. You get similar results by setting either LESSCHARSET=IBM‐1047 or LC_CTYPE=en_US in your environment. @@ -1750,10 +1803,10 @@ next Selects a character set appropriate for NeXT computers. - utf‐8 Selects the UTF‐8 encoding of the ISO 10646 character set. - UTF‐8 is special in that it supports multi‐byte characters in - the input file. It is the only character set that supports mul‐ - ti‐byte characters. + utf‐8 Selects the UTF‐8 encoding of the ISO 10646 character set. + UTF‐8 is special in that it supports multi‐byte characters in + the input file. It is the only character set that supports + multi‐byte characters. windows Selects a character set appropriate for Microsoft Windows (cp @@ -1766,13 +1819,13 @@ one character in the character set. The character "." is used for a normal character, "c" for control, and "b" for binary. A decimal num‐ ber may be used for repetition. For example, "bccc4b." would mean - character 0 is binary, 1, 2 and 3 are control, 4, 5, 6 and 7 are bina‐ - ry, and 8 is normal. All characters after the last are taken to be the - same as the last, so characters 9 through 255 would be normal. (This - is an example, and does not necessarily represent any real character - set.) + character 0 is binary, 1, 2 and 3 are control, 4, 5, 6 and 7 are bi‐ + nary, and 8 is normal. All characters after the last are taken to be + the same as the last, so characters 9 through 255 would be normal. + (This is an example, and does not necessarily represent any real char‐ + acter set.) - This table shows the value of LESSCHARDEF which is equivalent to each + This table shows the value of LESSCHARDEF which is equivalent to each of the possible values for LESSCHARSET: ascii 8bcccbcc18b95.b dos 8bcccbcc12bc5b95.b. @@ -1785,61 +1838,61 @@ latin1 8bcccbcc18b95.33b. next 8bcccbcc18b95.bb125.bb - If neither LESSCHARSET nor LESSCHARDEF is set, but any of the strings - "UTF‐8", "UTF8", "utf‐8" or "utf8" is found in the LC_ALL, LC_CTYPE or + If neither LESSCHARSET nor LESSCHARDEF is set, but any of the strings + "UTF‐8", "UTF8", "utf‐8" or "utf8" is found in the LC_ALL, LC_CTYPE or LANG environment variables, then the default character set is utf‐8. If that string is not found, but your system supports the [1msetlocale [22min‐ - terface, [1mless [22mwill use setlocale to determine the character set. set‐ - locale is controlled by setting the LANG or LC_CTYPE environment vari‐ + terface, [1mless [22mwill use setlocale to determine the character set. set‐ + locale is controlled by setting the LANG or LC_CTYPE environment vari‐ ables. - Finally, if the [4msetlocale[24m interface is also not available, the default + Finally, if the [4msetlocale[24m interface is also not available, the default character set is utf‐8. - Control and binary characters are displayed in standout (reverse + Control and binary characters are displayed in standout (reverse video). Each such character is displayed in caret notation if possible - (e.g. ^A for control‐A). Caret notation is used only if inverting the + (e.g. ^A for control‐A). Caret notation is used only if inverting the 0100 bit results in a normal printable character. Otherwise, the char‐ - acter is displayed as a hex number in angle brackets. This format can - be changed by setting the LESSBINFMT environment variable. LESSBINFMT + acter is displayed as a hex number in angle brackets. This format can + be changed by setting the LESSBINFMT environment variable. LESSBINFMT may begin with a "*" and one character to select the display attribute: - "*k" is blinking, "*d" is bold, "*u" is underlined, "*s" is standout, - and "*n" is normal. If LESSBINFMT does not begin with a "*", normal - attribute is assumed. The remainder of LESSBINFMT is a string which - may include one printf‐style escape sequence (a % followed by x, X, o, - d, etc.). For example, if LESSBINFMT is "*u[%x]", binary characters - are displayed in underlined hexadecimal surrounded by brackets. The - default if no LESSBINFMT is specified is "*s<%02X>". Warning: the re‐ - sult of expanding the character via LESSBINFMT must be less than 31 + "*k" is blinking, "*d" is bold, "*u" is underlined, "*s" is standout, + and "*n" is normal. If LESSBINFMT does not begin with a "*", normal + attribute is assumed. The remainder of LESSBINFMT is a string which + may include one printf‐style escape sequence (a % followed by x, X, o, + d, etc.). For example, if LESSBINFMT is "*u[%x]", binary characters + are displayed in underlined hexadecimal surrounded by brackets. The + default if no LESSBINFMT is specified is "*s<%02X>". Warning: the re‐ + sult of expanding the character via LESSBINFMT must be less than 31 characters. When the character set is utf‐8, the LESSUTFBINFMT environment variable acts similarly to LESSBINFMT but it applies to Unicode code points that - were successfully decoded but are unsuitable for display (e.g., unas‐ - signed code points). Its default value is "<U+%04lX>". Note that - LESSUTFBINFMT and LESSBINFMT share their display attribute setting - ("*x") so specifying one will affect both; LESSUTFBINFMT is read after - LESSBINFMT so its setting, if any, will have priority. Problematic - octets in a UTF‐8 file (octets of a truncated sequence, octets of a - complete but non‐shortest form sequence, invalid octets, and stray - trailing octets) are displayed individually using LESSBINFMT so as to + were successfully decoded but are unsuitable for display (e.g., unas‐ + signed code points). Its default value is "<U+%04lX>". Note that + LESSUTFBINFMT and LESSBINFMT share their display attribute setting + ("*x") so specifying one will affect both; LESSUTFBINFMT is read after + LESSBINFMT so its setting, if any, will have priority. Problematic + octets in a UTF‐8 file (octets of a truncated sequence, octets of a + complete but non‐shortest form sequence, invalid octets, and stray + trailing octets) are displayed individually using LESSBINFMT so as to facilitate diagnostic of how the UTF‐8 file is ill‐formed. - When the character set is utf‐8, in rare cases it may be desirable to + When the character set is utf‐8, in rare cases it may be desirable to override the Unicode definition of the type of certain characters. For - example, characters in a Private Use Area are normally treated as con‐ - trol characters, but if you are using a custom font with printable - characters in that range, it may be desirable to tell [1mless [22mto treat - such characters as printable. This can be done by setting the LESSUT‐ - FCHARDEF environment variable to a comma‐separated list of [4mcharacter[0m - [4mtype[24m definitions. Each character type definition consists of either - one hexadecimal codepoint or a pair of codepoints separated by a dash, - followed by a colon and a type character. Each hexadecimal codepoint - may optionally be preceded by a "U" or "U+". If a pair of codepoints - is given, the type is set for all characters inclusively between the - two values. If there are multiple comma‐separated codepoint values, - they must be in ascending numerical order. The type character may be + example, characters in a Private Use Area are normally treated as con‐ + trol characters, but if you are using a custom font with printable + characters in that range, it may be desirable to tell [1mless [22mto treat + such characters as printable. This can be done by setting the LESSUT‐ + FCHARDEF environment variable to a comma‐separated list of [4mcharacter[0m + [4mtype[24m definitions. Each character type definition consists of either + one hexadecimal codepoint or a pair of codepoints separated by a dash, + followed by a colon and a type character. Each hexadecimal codepoint + may optionally be preceded by a "U" or "U+". If a pair of codepoints + is given, the type is set for all characters inclusively between the + two values. If there are multiple comma‐separated codepoint values, + they must be in ascending numerical order. The type character may be one of: p A normal printable character. @@ -1857,25 +1910,25 @@ would make all Private Use Area characters be treated as printable. [1mPROMPTS[0m - The -P option allows you to tailor the prompt to your preference. The - string given to the -P option replaces the specified prompt string. + The -P option allows you to tailor the prompt to your preference. The + string given to the -P option replaces the specified prompt string. Certain characters in the string are interpreted specially. The prompt - mechanism is rather complicated to provide flexibility, but the ordi‐ - nary user need not understand the details of constructing personalized + mechanism is rather complicated to provide flexibility, but the ordi‐ + nary user need not understand the details of constructing personalized prompt strings. - A percent sign followed by a single character is expanded according to - what the following character is. (References to the input file size + A percent sign followed by a single character is expanded according to + what the following character is. (References to the input file size below refer to the preprocessed size, if an input preprocessor is being used.) - %b[4mX[24m Replaced by the byte offset into the current input file. The b + %b[4mX[24m Replaced by the byte offset into the current input file. The b is followed by a single character (shown as [4mX[24m above) which spec‐ - ifies the line whose byte offset is to be used. If the charac‐ - ter is a "t", the byte offset of the top line in the display is + ifies the line whose byte offset is to be used. If the charac‐ + ter is a "t", the byte offset of the top line in the display is used, an "m" means use the middle line, a "b" means use the bot‐ - tom line, a "B" means use the line just after the bottom line, - and a "j" means use the "target" line, as specified by the -j + tom line, a "B" means use the line just after the bottom line, + and a "j" means use the "target" line, as specified by the -j option. %B Replaced by the size of the current input file. @@ -1883,54 +1936,54 @@ %c Replaced by the column number of the text appearing in the first column of the screen. - %d[4mX[24m Replaced by the page number of a line in the input file. The + %d[4mX[24m Replaced by the page number of a line in the input file. The line to be used is determined by the [4mX[24m, as with the %b option. - %D Replaced by the number of pages in the input file, or equiva‐ + %D Replaced by the number of pages in the input file, or equiva‐ lently, the page number of the last line in the input file. - %E Replaced by the name of the editor (from the VISUAL environment - variable, or the EDITOR environment variable if VISUAL is not + %E Replaced by the name of the editor (from the VISUAL environment + variable, or the EDITOR environment variable if VISUAL is not defined). See the discussion of the LESSEDIT feature below. %f Replaced by the name of the current input file. - %F Replaced by the last component of the name of the current input + %F Replaced by the last component of the name of the current input file. - %g Replaced by the shell‐escaped name of the current input file. - This is useful when the expanded string will be used in a shell + %g Replaced by the shell‐escaped name of the current input file. + This is useful when the expanded string will be used in a shell command, such as in LESSEDIT. - %i Replaced by the index of the current file in the list of input + %i Replaced by the index of the current file in the list of input files. - %l[4mX[24m Replaced by the line number of a line in the input file. The + %l[4mX[24m Replaced by the line number of a line in the input file. The line to be used is determined by the [4mX[24m, as with the %b option. %L Replaced by the line number of the last line in the input file. %m Replaced by the total number of input files. - %o Replaced by the URI of the currently selected OSC 8 hyperlink, + %o Replaced by the URI of the currently selected OSC 8 hyperlink, or a question mark if no hyperlink is selected. This is used by OSC 8 handlers as explained in the ^O^O command description. - %p[4mX[24m Replaced by the percent into the current input file, based on - byte offsets. The line used is determined by the [4mX[24m as with the + %p[4mX[24m Replaced by the percent into the current input file, based on + byte offsets. The line used is determined by the [4mX[24m as with the %b option. - %P[4mX[24m Replaced by the percent into the current input file, based on - line numbers. The line used is determined by the [4mX[24m as with the + %P[4mX[24m Replaced by the percent into the current input file, based on + line numbers. The line used is determined by the [4mX[24m as with the %b option. %s Same as %B. - %t Causes any trailing spaces to be removed. Usually used at the + %t Causes any trailing spaces to be removed. Usually used at the end of the string, but may appear anywhere. - %T Normally expands to the word "file". However if viewing files - via a tags list using the -t option, it expands to the word + %T Normally expands to the word "file". However if viewing files + via a tags list using the -t option, it expands to the word "tag". %x Replaced by the name of the next input file in the list. @@ -1938,15 +1991,15 @@ If any item is unknown (for example, the file size if input is a pipe), a question mark is printed instead. - The format of the prompt string can be changed depending on certain - conditions. A question mark followed by a single character acts like - an "IF": depending on the following character, a condition is evaluat‐ - ed. If the condition is true, any characters following the question - mark and condition character, up to a period, are included in the - prompt. If the condition is false, such characters are not included. - A colon appearing between the question mark and the period can be used + The format of the prompt string can be changed depending on certain + conditions. A question mark followed by a single character acts like + an "IF": depending on the following character, a condition is evalu‐ + ated. If the condition is true, any characters following the question + mark and condition character, up to a period, are included in the + prompt. If the condition is false, such characters are not included. + A colon appearing between the question mark and the period can be used to establish an "ELSE": any characters between the colon and the period - are included in the string if and only if the IF condition is false. + are included in the string if and only if the IF condition is false. Condition characters (which follow a question mark) may be: ?a True if any characters have been included in the prompt so far. @@ -1961,7 +2014,7 @@ ?e True if at end‐of‐file. - ?f True if there is an input filename (that is, if input is not a + ?f True if there is an input filename (that is, if input is not a pipe). ?l[4mX[24m True if the line number of the specified line is known. @@ -1972,45 +2025,45 @@ ?n True if this is the first prompt in a new input file. - ?p[4mX[24m True if the percent into the current input file, based on byte + ?p[4mX[24m True if the percent into the current input file, based on byte offsets, of the specified line is known. - ?P[4mX[24m True if the percent into the current input file, based on line + ?P[4mX[24m True if the percent into the current input file, based on line numbers, of the specified line is known. ?s Same as "?B". - ?x True if there is a next input file (that is, if the current in‐ + ?x True if there is a next input file (that is, if the current in‐ put file is not the last one). - Any characters other than the special ones (question mark, colon, peri‐ - od, percent, and backslash) become literally part of the prompt. Any - of the special characters may be included in the prompt literally by + Any characters other than the special ones (question mark, colon, pe‐ + riod, percent, and backslash) become literally part of the prompt. Any + of the special characters may be included in the prompt literally by preceding it with a backslash. Some examples: ?f%f:Standard input. - This prompt prints the filename, if known; otherwise the string "Stan‐ + This prompt prints the filename, if known; otherwise the string "Stan‐ dard input". ?f%f .?ltLine %lt:?pt%pt\%:?btByte %bt:‐... - This prompt would print the filename, if known. The filename is fol‐ - lowed by the line number, if known, otherwise the percent if known, + This prompt would print the filename, if known. The filename is fol‐ + lowed by the line number, if known, otherwise the percent if known, otherwise the byte offset if known. Otherwise, a dash is printed. No‐ - tice how each question mark has a matching period, and how the % after + tice how each question mark has a matching period, and how the % after the %pt is included literally by escaping it with a backslash. ?n?f%f .?m(%T %i of %m) ..?e(END) ?x‐ Next\: %x..%t - This prints the filename if this is the first prompt in a file, fol‐ - lowed by the "file N of N" message if there is more than one input - file. Then, if we are at end‐of‐file, the string "(END)" is printed - followed by the name of the next file, if there is one. Finally, any + This prints the filename if this is the first prompt in a file, fol‐ + lowed by the "file N of N" message if there is more than one input + file. Then, if we are at end‐of‐file, the string "(END)" is printed + followed by the name of the next file, if there is one. Finally, any trailing spaces are truncated. This is the default prompt. For refer‐ - ence, here are the defaults for the other two prompts (-m and -M re‐ + ence, here are the defaults for the other two prompts (-m and -M re‐ spectively). Each is broken into two lines here for readability only. ?n?f%f .?m(%T %i of %m) ..?e(END) ?x‐ Next\: %x.: @@ -2024,22 +2077,22 @@ ?f%f .?m(%T %i of %m) .?ltlines %lt‐%lb?L/%L. . byte %bB?s/%s. ?e(END) :?pB%pB\%..%t - The prompt expansion features are also used for another purpose: if an - environment variable LESSEDIT is defined, it is used as the command to - be executed when the v command is invoked. The LESSEDIT string is ex‐ - panded in the same way as the prompt strings. The default value for + The prompt expansion features are also used for another purpose: if an + environment variable LESSEDIT is defined, it is used as the command to + be executed when the v command is invoked. The LESSEDIT string is ex‐ + panded in the same way as the prompt strings. The default value for LESSEDIT is: %E ?lm+%lm. %g Note that this expands to the editor name, followed by a + and the line - number, followed by the shell‐escaped file name. If your editor does - not accept the "+linenumber" syntax, or has other differences in invo‐ - cation syntax, the LESSEDIT variable can be changed to modify this de‐ + number, followed by the shell‐escaped file name. If your editor does + not accept the "+linenumber" syntax, or has other differences in invo‐ + cation syntax, the LESSEDIT variable can be changed to modify this de‐ fault. [1mSECURITY[0m - When the environment variable LESSSECURE is set to 1, [1mless [22mruns in a + When the environment variable LESSSECURE is set to 1, [1mless [22mruns in a "secure" mode. In this mode, these features are disabled: edit the edit command (v) @@ -2063,69 +2116,70 @@ shell the shell and pshell commands (! and #) - stop stopping [1mless [22mvia a SIGSTOP signal + stop stopping [1mless [22mvia a SIGTSTP signal tags use of tags files (‐t) - The LESSSECURE_ALLOW environment variable can be set to a comma‐sepa‐ - rated list of names of features which are selectively enabled when + The LESSSECURE_ALLOW environment variable can be set to a comma‐sepa‐ + rated list of names of features which are selectively enabled when LESSSECURE is set. Each feature name is the first word in each line in - the above list. A feature name may be abbreviated as long as the ab‐ - breviation is unambiguous. For example, if LESSSECURE=1 and + the above list. A feature name may be abbreviated as long as the ab‐ + breviation is unambiguous. For example, if LESSSECURE=1 and LESSSECURE_ALLOW=hist,edit were set, all of the above features would be disabled except for history files and the edit command. - Less can also be compiled to be permanently in "secure" mode. In that + Less can also be compiled to be permanently in "secure" mode. In that case, the LESSSECURE and LESSSECURE_ALLOW variables are ignored. [1mCOMPATIBILITY WITH MORE[0m If the environment variable LESS_IS_MORE is set to 1, or if the program - is invoked via a file link named "more", [1mless [22mbehaves (mostly) in con‐ - formance with the POSIX [1mmore[22m(1) command specification. In this mode, - less behaves differently in these ways: + is invoked via a file link named "more" and the environment variable + LESS_IS_MORE is not set to 0, [1mless [22mbehaves (mostly) in conformance with + the POSIX [1mmore[22m(1) command specification. In this mode, less behaves + differently in these ways: The -e option works differently. If the -e option is not set, [1mless [22mbe‐ - haves as if the -e option were set. If the -e option is set, [1mless [22mbe‐ + haves as if the -e option were set. If the -e option is set, [1mless [22mbe‐ haves as if the -E option were set. - The -m option works differently. If the -m option is not set, the - medium prompt is used, and it is prefixed with the string "--More--". + The -m option works differently. If the -m option is not set, the + medium prompt is used, and it is prefixed with the string "--More--". If the -m option is set, the short prompt is used. - The -n option acts like the -z option. The normal behavior of the -n + The -n option acts like the -z option. The normal behavior of the -n option is unavailable in this mode. - The parameter to the -p option is taken to be a [1mless [22mcommand rather + The parameter to the -p option is taken to be a [1mless [22mcommand rather than a search pattern. - The LESS environment variable is ignored, and the MORE environment + The LESS environment variable is ignored, and the MORE environment variable is used in its place. [1mENVIRONMENT VARIABLES[0m Environment variables may be specified either in the system environment - as usual, or in a [1mlesskey[22m(1) file. If environment variables are de‐ + as usual, or in a [1mlesskey[22m(1) file. If environment variables are de‐ fined in more than one place, variables defined in a local lesskey file take precedence over variables defined in the system environment, which take precedence over variables defined in the system‐wide lesskey file. COLUMNS Sets the number of columns on the screen. Takes precedence over - the number of columns specified by the TERM variable. (But if + the number of columns specified by the TERM variable. (But if you have a windowing system which supports TIOCGWINSZ or - WIOCGETD, the window system’s idea of the screen size takes + WIOCGETD, the window system’s idea of the screen size takes precedence over the LINES and COLUMNS environment variables.) EDITOR The name of the editor (used for the v command). - HOME Name of the user’s home directory (used to find a lesskey file + HOME Name of the user’s home directory (used to find a lesskey file on Unix and OS/2 systems). HOMEDRIVE, HOMEPATH - Concatenation of the HOMEDRIVE and HOMEPATH environment vari‐ + Concatenation of the HOMEDRIVE and HOMEPATH environment vari‐ ables is the name of the user’s home directory if the HOME vari‐ able is not set (only in the Windows version). - INIT Name of the user’s init directory (used to find a lesskey file + INIT Name of the user’s init directory (used to find a lesskey file on OS/2 systems). LANG Language for determining the character set. @@ -2136,13 +2190,28 @@ LESS Options which are passed to [1mless [22mautomatically. LESSANSIENDCHARS - Characters which may end an ANSI color escape sequence (default + Characters which may end an ANSI color escape sequence (default "m"). LESSANSIMIDCHARS - Characters which may appear between the ESC character and the - end character in an ANSI color escape sequence (default - "0123456789:;[?!"'#%()*+ ". + Characters which may appear between the ESC character and the + end character in an ANSI color escape sequence (default + "0123456789:;[?!"'#%()*+ "). + + LESSANSIOSCALLOW + A comma‐separated list of OSC types which are output directly to + the terminal when -R is in effect. By default, only OSC 8 se‐ + quences are output directly. + + LESSANSIOSCCHARS + Characters which may follow an ESC character to mark the start + of an "OS Command" sequence. All characters that follow this + character up to a String Terminator (ESC‐backslash or BEL) are + considered to be part of the OSC sequence (default "]"). If a + character in LESSANSIOSCCHARS is followed by an asterisk, se‐ + quences that begin with that character in the file contents are + passed through to the terminal; otherwise only sequences that + appear in a prompt string are passed through. LESSBINFMT Format for displaying non‐printable, non‐control characters. @@ -2158,21 +2227,21 @@ LESSECHO Name of the lessecho program (default "lessecho"). The lessecho - program is needed to expand metacharacters, such as * and ?, in + program is needed to expand metacharacters, such as * and ?, in filenames on Unix systems. LESSEDIT - Editor prototype string (used for the v command). See discus‐ + Editor prototype string (used for the v command). See discus‐ sion under PROMPTS. LESSGLOBALTAGS - Name of the command used by the -t option to find global tags. - Normally should be set to "global" if your system has the [1mglob‐[0m + Name of the command used by the -t option to find global tags. + Normally should be set to "global" if your system has the [1mglob‐[0m [1mal[22m(1) command. If not set, global tags are not used. LESSHISTFILE - Name of the history file used to remember search commands and - shell commands between invocations of [1mless[22m. If set to "-" or + Name of the history file used to remember search commands and + shell commands between invocations of [1mless[22m. If set to "-" or "/dev/null", a history file is not used. The default depends on the operating system, but is usually: @@ -2193,28 +2262,28 @@ Name of the default [4mlesskey[24m [4msource[24m file. LESSKEY - Name of the default [4mlesskey[24m [4mbinary[24m file. (Not used if + Name of the default [4mlesskey[24m [4mbinary[24m file. (Not used if "$LESSKEYIN" exists.) LESSKEY_CONTENT - The value is parsed as if it were the parameter of a --lesskey‐ + The value is parsed as if it were the parameter of a --lesskey‐ content option. LESSKEYIN_SYSTEM Name of the default system‐wide [4mlesskey[24m [4msource[24m file. LESSKEY_SYSTEM - Name of the default system‐wide [4mlesskey[24m [4mbinary[24m file. (Not used + Name of the default system‐wide [4mlesskey[24m [4mbinary[24m file. (Not used if "$LESSKEYIN_SYSTEM" exists.) LESSMETACHARS - List of characters which are considered "metacharacters" by the + List of characters which are considered "metacharacters" by the shell. LESSMETAESCAPE - Prefix which less will add before each metacharacter in a com‐ - mand sent to the shell. If LESSMETAESCAPE is an empty string, - commands containing metacharacters will not be passed to the + Prefix which less will add before each metacharacter in a com‐ + mand sent to the shell. If LESSMETAESCAPE is an empty string, + commands containing metacharacters will not be passed to the shell. LESSOPEN @@ -2224,11 +2293,11 @@ Runs less in "secure" mode. See discussion under SECURITY. LESSSECURE_ALLOW - Enables individual features which are normally disabled by + Enables individual features which are normally disabled by LESSSECURE. See discussion under SECURITY. LESSSEPARATOR - String to be appended to a directory name in filename comple‐ + String to be appended to a directory name in filename comple‐ tion. LESSUTFBINFMT @@ -2239,30 +2308,30 @@ LESS_COLUMNS Sets the number of columns on the screen. Unlike COLUMNS, takes - precedence over the system’s idea of the screen size, so it can - be used to make [1mless [22muse less than the full screen width. If - set to a negative number, sets the number of columns used to + precedence over the system’s idea of the screen size, so it can + be used to make [1mless [22muse less than the full screen width. If + set to a negative number, sets the number of columns used to this much less than the actual screen width. LESS_LINES - Sets the number of lines on the screen. Unlike LINES, takes - precedence over the system’s idea of the screen size, so it can - be used to make [1mless [22muse less than the full screen height. If - set to a negative number, sets the number of lines used to this - much less than the actual screen height. When set, [1mless [22mre‐ + Sets the number of lines on the screen. Unlike LINES, takes + precedence over the system’s idea of the screen size, so it can + be used to make [1mless [22muse less than the full screen height. If + set to a negative number, sets the number of lines used to this + much less than the actual screen height. When set, [1mless [22mre‐ paints the entire screen on every movement command, so scrolling may be slower. LESS_DATA_DELAY - Duration (in milliseconds) after starting to read data from the - input, after which the "Waiting for data" message will be dis‐ + Duration (in milliseconds) after starting to read data from the + input, after which the "Waiting for data" message will be dis‐ played. The default is 4000 (4 seconds). LESS_IS_MORE Emulate the [1mmore[22m(1) command. LESS_OSC8_xxx - Where "xxx" is a URI scheme such as "http" or "file", sets an + Where "xxx" is a URI scheme such as "http" or "file", sets an OSC 8 handler for opening OSC 8 links containing a URI with that scheme. @@ -2270,6 +2339,20 @@ Sets an OSC 8 handler for opening OSC 8 links for which there is no specific LESS_OSC8_xxx handler set for the "xxx" scheme. + LESS_SHELL_LINES + When the -F option is set, [1mless [22mexits automatically if the num‐ + ber of screen lines used to display the file is less than or + equal to the screen height minus the value of the + LESS_SHELL_LINES variable. Thus, if you use a shell prompt + which occupies more than one screen line, this variable can be + set to the number of lines used by your prompt, to ensure that + the entire file can be seen when -F is used. If not set, + LESS_SHELL_LINES is assumed to be 1. + + LESS_SIGUSR1 + If set to a string of one or more [1mless [22mcommand characters, those + commands will be executed when [1mless [22mreceives a SIGUSR1 signal. + LESS_TERMCAP_xx Where "xx" is any two characters, overrides the definition of the termcap "xx" capability for the terminal. @@ -2318,7 +2401,7 @@ [1mlesskey[22m(1), [1mlessecho[22m(1) [1mCOPYRIGHT[0m - Copyright (C) 1984‐2024 Mark Nudelman + Copyright (C) 1984‐2025 Mark Nudelman less is part of the GNU project and is free software. You can redis‐ tribute it and/or modify it under the terms of either (1) the GNU Gen‐ @@ -2337,8 +2420,8 @@ [1mAUTHOR[0m Mark Nudelman - Report bugs at https://github.com/gwsw/less/issues. + Report bugs at ⟨https://github.com/gwsw/less/issues⟩. For more information, see the less homepage at - https://greenwoodsoftware.com/less. + ⟨https://greenwoodsoftware.com/less⟩. - Version 668: 06 Oct 2024 [4mLESS[24m(1) + Version 678: 01 May 2025 [4mLESS[24m(1) @@ -1,5 +1,5 @@ '\" t -.TH LESS 1 "Version 668: 06 Oct 2024" +.TH LESS 1 "Version 678: 01 May 2025" .SH NAME less \- display the contents of a file in a terminal .SH SYNOPSIS @@ -38,7 +38,7 @@ so it can run on a variety of terminals. There is even limited support for hardcopy terminals. (On a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.) -.PP +.SH COMMANDS Commands are based on both .B more and @@ -46,8 +46,7 @@ and Commands may be preceded by a decimal number, called N in the descriptions below. The number is used by some commands, as indicated. -. -.SH COMMANDS +.PP In the following descriptions, \(haX means control-X. ESC stands for the ESCAPE key; for example ESC-v means the two character sequence "ESCAPE", then "v". @@ -60,9 +59,6 @@ If N is more than the screen size, only the final screenful is displayed. Warning: some systems use \(haV as a special literalization character. .IP "z" Like SPACE, but if N is specified, it becomes the new window size. -.IP "ESC-SPACE" -Like SPACE, but scrolls a full screenful, even if it reaches -end-of-file in the process. .IP "ENTER or RETURN or \(haN or e or \(haE or j or \(haJ" Scroll forward N lines, default 1. The entire N lines are displayed, even if N is more than the screen size. @@ -87,6 +83,17 @@ subsequent d and u commands. Like j, but continues to scroll beyond the end of the file. .IP "K or Y" Like k, but continues to scroll beyond the beginning of the file. +.IP "ESC-SPACE" +Like SPACE, but scrolls a full screenful, +even if it reaches the end of the file. +.IP "ESC-b" +Like b, but scrolls a full screenful, +even if it reaches the beginning of the file. +.IP "ESC-j" +Scroll forward N file lines, default 1. +A file line is a complete line in the file, terminated by a newline. +.IP "ESC-k" +Scroll backwards N file lines, default 1. .IP "ESC-) or RIGHTARROW" Scroll horizontally right N characters, default half the screen width (see the \-# option). @@ -239,6 +246,9 @@ that is, do a simple textual comparison. Followed by a digit N between 1 and 5. Only text which has a non-empty match for the N-th parenthesized SUB-PATTERN will be considered to match the pattern. +For example, searching for "(abc)|(def)" modified with \(haS1 +would search for instances of "abc", but would highlight +instances of both "abc" and "def". (Supported only if .B less is built with one of the regular expression libraries @@ -285,6 +295,8 @@ WRAP around the current file. That is, if the search reaches the beginning of the current file without finding a match, the search continues from the last line of the current file up to the line where it started. +.IP "\(haL" +As in forward searches. .RE .IP "ESC-/pattern" Same as "/*". @@ -298,6 +310,8 @@ If the previous search was modified by \(haE, the search continues in the next (or previous) file if not satisfied in the current file. If the previous search was modified by \(haR, the search is done without using regular expressions. +If the previous search was modified by \(haW, the search wraps at +the end (or beginning) of the file. There is no effect if the previous search was modified by \(haF or \(haK. .IP N Repeat previous search, but in the reverse direction. @@ -404,7 +418,9 @@ the current setting is printed and nothing is changed. .IP \-\- Like the \- command, but takes a long option name (see OPTIONS below) rather than a single option letter. -You must press ENTER or RETURN after typing the option name. +Press ENTER or RETURN after typing the option name to change it. +You can enter just the beginning of an option name, +then press TAB to find all option names which begin with that string. A \(haP immediately after the second dash suppresses printing of a message describing the new setting, as in the \- command. .IP \-+ @@ -465,7 +481,7 @@ A percent sign (%) in the command is replaced by the name of the current file. A pound sign (#) is replaced by the name of the previously examined file. "!!" repeats the last shell command. -"!" with no shell command simply invokes a shell. +"!" with no shell command invokes an interactive shell. If a \(haP (CONTROL-P) is entered immediately after the !, no "done" message is printed after the shell command is executed. On Unix systems, the shell is taken from the environment variable SHELL, @@ -582,8 +598,8 @@ either a dash followed by a single letter, or two dashes followed by a long option name. A long option name may be abbreviated as long as the abbreviation is unambiguous. -For example, \-\-quit-at-eof may be abbreviated \-\-quit, but not -\-\-qui, since both \-\-quit-at-eof and \-\-quiet begin with \-\-qui. +For example, \-\-mouse may be abbreviated \-\-mou, but not +\-\-mo, since both \-\-mouse and \-\-modelines begin with \-\-mo. Some long option names are in uppercase, such as \-\-QUIT-AT-EOF, as distinct from \-\-quit-at-eof. Such option names need only have their first letter capitalized; @@ -784,9 +800,8 @@ where the first integer specifies the foreground color and the second specifies the background color. Each integer is a value between 0 and 255 inclusive which selects a "CSI 38;5" color value (see -.nh -https://en.wikipedia.org/wiki/ANSI_escape_code#SGR). -.hy +.UR https://en.wikipedia.org/wiki/ANSI_escape_code#SGR +.UE ). If either integer is a "-" or is omitted, the corresponding color is set to that of normal text. .PP @@ -820,9 +835,8 @@ CHAR_INFO.Attributes .hy value, between 0 and 15 inclusive (see -.nh -https://learn.microsoft.com/en-us/windows/console/char-info-str). -.hy +.UR https://learn.microsoft.com/en-us/windows/console/char-info-str +.UE ). To avoid confusion, it is recommended that the equivalent letters rather than numbers be used after a lowercase color selector on MS-DOS/Windows. @@ -867,6 +881,7 @@ Causes .B less to automatically exit if the entire file can be displayed on the first screen. +Also see the description of the LESS_SHELL_LINES environment variable below. .IP "\-g or \-\-hilite-search" Normally, .B less @@ -913,8 +928,6 @@ is recalculated if the terminal window is resized. If the \-\-header option is used and the target line specified by \-j would be obscured by the header, the target line is moved to the first line after the header. -While the \-\-header option is active, the \-S option is ignored, -and lines longer than the screen width are truncated. .RS .PP If any form of the \-j option is used, @@ -947,7 +960,7 @@ and there are matches beyond both sides of the screen. There are matches in the visible part of the line but none to the right or left of it. .IP "a-z, A-Z" -The line has been marked with the corresponding letter via the m command. +The line has been marked with the corresponding letter via the m or M command. .RE .IP "\-k\fIfilename\fP or \-\-lesskey-file=\fIfilename\fP" Causes @@ -970,26 +983,25 @@ to open and interpret the named file as a source file. If the LESSKEYIN or LESSKEYIN_SYSTEM environment variable is set, or if a lesskey source file is found in a standard place (see KEY BINDINGS), -it is also used as a -.I "lesskey source" -file. +it is also used as a lesskey source file. Prior to version 582, the .B lesskey -program needed to be run to convert a -.I "lesskey source" -file to a -.I "lesskey binary" +program needed to be run to convert a lesskey +.I source +file to a lesskey +.I binary file for .B less to use. Newer versions of .B less -read the -.I "lesskey source" +read the lesskey source file directly and ignore the binary file if the source file exists. Note the warning under "\-\-lesskey-content" below. .IP "\-\-lesskey-content=\fItext\fP" -Causes less to interpret the specified text as the contents of a +Causes +.B less +to interpret the specified text as the contents of a .BR lesskey (1) source file. In the text, @@ -1043,7 +1055,6 @@ Suppresses line numbers. The default (to use line numbers) may cause .B less to run more slowly in some cases, especially with a very large input file. -Suppressing line numbers with the \-n option will avoid this problem. Using line numbers means: the line number will be displayed in the verbose prompt and in the = command, and the v command will pass the current line number to the editor @@ -1124,32 +1135,38 @@ each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place. .sp -USE OF THE \-r OPTION IS NOT RECOMMENDED. +USE OF THE \-r OPTION IS DANGEROUS AND IS NOT RECOMMENDED. +.br +The \-r option can be set on the command line or via the \- command, +but to avoid unintentional use, it cannot be set in a LESS environment variable. +If \-r appears in a LESS environment variable, it is treated as if it were \-R. .IP "\-R or \-\-RAW-CONTROL-CHARS" -Like \-r, but only ANSI "color" escape sequences and OSC 8 hyperlink +Like \-r, but only a limited set of escape sequences are output in "raw" form. -Unlike \-r, the screen appearance is maintained correctly, -provided that there are no escape sequences in the file -other than these types of escape sequences. -Color escape sequences are only supported when the color -is changed within one line, not across lines. -In other words, the beginning of each line is assumed to be -normal (non-colored), regardless of any escape sequences in previous lines. -For the purpose of keeping track of screen appearance, -these escape sequences are assumed to not move the cursor. +Unlike \-r, the screen appearance is maintained correctly. +The sequences which are output raw are: .sp -OSC 8 hyperlinks are sequences of the form: +1. ANSI SGR ("color") sequences .sp - ESC ] 8 ; \&...\& \\7 +2. OSC 8 hyperlinks .sp -The terminating sequence may be either a BEL character (\\7) -or the two-character sequence "ESC \\". +3. Other OSC sequences, if the OSC type number is listed in +the LESSANSIOSCALLOW environment variable +.sp +4. OSC sequences starting with a non-standard introductory character +(that is, something other than "]"), if the character is listed in +the LESSANSIOSCCHARS environment variable followed by an asterisk .sp ANSI color escape sequences are sequences of the form: .sp ESC [ \&...\& m .sp where the "...\&" is zero or more color specification characters. +Color escape sequences are only supported when the color +is changed within one line, not across lines. +In other words, the beginning of each line is assumed to be +normal (non-colored), regardless of any escape sequences in previous lines. +.sp You can make .B less think that characters other than "m" can end ANSI color escape sequences @@ -1160,10 +1177,18 @@ And you can make think that characters other than the standard ones may appear between the ESC and the m by setting the environment variable LESSANSIMIDCHARS to the list of characters which can appear. +.sp +OSC sequences are of the form: +.sp + ESC ] N ; \&...\& \\7 +.sp +where the OSC type number N is a decimal integer. +The terminating sequence may be either a BEL character (\\7) +as above, or the two-character sequence "ESC \\". .IP "\-s or \-\-squeeze-blank-lines" Causes consecutive blank lines to be squeezed into a single blank line. This is useful when viewing -.B nroff +.BR nroff (1) output. .IP "\-S or \-\-chop-long-lines" Causes lines longer than the screen width to be @@ -1173,6 +1198,8 @@ the screen width is not displayed until you press RIGHT-ARROW. The default is to wrap long lines; that is, display the remainder on the next line. See also the \-\-wordwrap option. +While the \-\-header option is active, the \-S option is ignored, +and lines longer than the screen width are truncated. .IP "\-t\fItag\fP or \-\-tag=\fItag\fP" The \-t option, followed immediately by a TAG, will edit the file containing that tag. @@ -1186,9 +1213,8 @@ the name of a command compatible with .BR global (1), and that command is executed to find the tag. (See -.nh -http://www.gnu.org/software/global/global.html). -.hy +.UR http://www.gnu.org/software/global/global.html +.UE ). The \-t option may also be specified from within .B less (using the \- command) as a way of examining a new file. @@ -1328,6 +1354,10 @@ If the reopen succeeds and the file is a different file from the original with the same name as the original (now renamed) file), .B less will display the contents of that new file. +.IP "\-\-form-feed" +When scrolling forward or backward in the file, +stop if a line beginning with a form feed character (\(haL) is reached. +This can be useful when viewing a file which uses form feeds between pages. .IP "\-\-header=\fIL\fP,\fIC\fP,\fIN\fP" .RS Sets the number of header lines and columns displayed on the screen. @@ -1353,6 +1383,10 @@ When header lines are displayed, any file contents before the header line cannot When \fIC\fP is nonzero, the first \fIC\fP characters displayed at the beginning of each line are replaced with the first \fIC\fP characters of the line, even if the rest of the line is scrolled horizontally. +.PP +While the \-\-header option is active, +lines longer than the screen width are truncated, +and the \-S option is ignored. .RE .IP "\-\-incsearch" Subsequent search commands will be "incremental"; that is, @@ -1418,6 +1452,7 @@ scrolling the mouse wheel down moves forward in the file, scrolling the mouse wheel up moves backwards in the file, left-click sets the "#" mark to the line where the mouse is clicked, and right-click (or any other) returns to the "#" mark position. +Holding down the left button and dragging also moves in the file. If a left-click is performed with the mouse cursor on an OSC 8 hyperlink, the hyperlink is selected as if by the \(haO\(haN command. If a left-click is performed with the mouse cursor on an OSC 8 hyperlink @@ -1430,6 +1465,10 @@ and on the Windows version of .IP "\-\-MOUSE" Like \-\-mouse, except the direction scrolled on mouse wheel movement is reversed. +.IP "\-\-no-edit-warn" +Don't print a warning message when using the v command +on a file which was opened using a LESSOPEN preprocessor +(see the INPUT PREPROCESSOR section below). .IP "\-\-no-keypad" Disables sending the keypad initialization and deinitialization strings to the terminal. @@ -1444,6 +1483,14 @@ Normally, a string may appear multiple times. .IP "\-\-no-number-headers" Header lines (defined via the \-\-header option) are not assigned line numbers. Line number 1 is assigned to the first line after any header lines. +.IP "\-\-no-paste" +If the terminal supports xterm-compatible "bracketed paste", +any text pasted into +.B less +is ignored, except that one line of text may be pasted into the command line +at the bottom of the screen (search strings, file names, etc). +That is, the first newline of text pasted into the command line +and any text that follows it is ignored. .IP "\-\-no-search-header-lines" Searches do not include header lines, but still include header columns. .IP "\-\-no-search-header-columns" @@ -1479,7 +1526,7 @@ If set, tabs are handled as if the \-U option were not set. That is, tabs are expanded to spaces. This option overrides the \-U option, so that display of tabs can be controlled separate from that of backspaces and carriage returns. -If not set, tab display is controlled by the \-U options. +If not set, tab display is controlled by the \-U option. .IP "\-\-PROC-TAB" If set, tabs are handled as if the \-U option were set; that is tabs are treated as control characters. @@ -1536,9 +1583,8 @@ Enables colored text in various places. The \-D option can be used to change the colors. Colored text works only if the terminal supports ANSI color escape sequences (as defined in -.nh -https://www.ecma-international.org/publications-and-standards/standards/ecma-48). -.hy +.UR https://www.ecma-international.org/publications-and-standards/standards/ecma-48 +.UE ). .IP "\-\-wheel-lines=\fIn\fP" Set the number of lines to scroll when the mouse wheel is scrolled and the \-\-mouse or \-\-MOUSE option is in effect. @@ -1576,7 +1622,7 @@ certain keys can be used to manipulate the command line. Most commands have an alternate form in [ brackets ] which can be used if a key does not exist on a particular keyboard. (Note that the forms beginning with ESC do not work -in some MS-DOS and Windows systems because ESC is the line erase character.) +on some MS-DOS and Windows systems because ESC is the line erase character.) Any of these special keys may be entered literally by preceding it with the "literal" character, either \(haV or \(haA. A backslash itself may also be entered literally by entering two backslashes. @@ -1630,7 +1676,7 @@ If it matches more than one filename, all matches are entered into the command line (if they fit). .IP "\(haU (Unix and OS/2) or ESC (MS-DOS and Windows)" Delete the entire command line, -or cancel the command if the command line is empty. +or cancel the command if the cursor is at the beginning of the command line. If you have changed your line-kill character in Unix to something other than \(haU, that character is used instead of \(haU. .IP "\(haG" @@ -1689,7 +1735,7 @@ that directory is where the sysless file is found.) On MS-DOS and Windows systems, the system-wide lesskey file is c:\e_syslesskey. On OS/2 systems, the system-wide lesskey file is c:\esyslesskey.ini. .PP -Previous versions of +Older versions of .B less (before v582) used lesskey files with a binary format, produced by the .B lesskey @@ -1702,7 +1748,7 @@ You may define an "input preprocessor" for .BR less . Before .B less -opens a file, it first gives your input preprocessor a chance to modify the +opens a file, it first gives the input preprocessor a chance to modify the way the contents of the file are displayed. An input preprocessor is simply an executable program (or shell script), which writes the contents of the file to a different file, @@ -2263,7 +2309,7 @@ the shell and pshell commands (! and #) .IP "stop" stopping .B less -via a SIGSTOP signal +via a SIGTSTP signal .IP "tags" use of tags files (-t) .PP @@ -2287,7 +2333,8 @@ In that case, the LESSSECURE and LESSSECURE_ALLOW variables are ignored. . .SH "COMPATIBILITY WITH MORE" If the environment variable LESS_IS_MORE is set to 1, -or if the program is invoked via a file link named "more", +or if the program is invoked via a file link named "more" +and the environment variable LESS_IS_MORE is not set to 0, .B less behaves (mostly) in conformance with the POSIX .BR more (1) @@ -2357,7 +2404,22 @@ Characters which may end an ANSI color escape sequence .IP LESSANSIMIDCHARS Characters which may appear between the ESC character and the end character in an ANSI color escape sequence -(default "0123456789:;[?!"\(aq#%()*+\ ". +(default "0123456789:;[?!"\(aq#%()*+\ "). +.IP LESSANSIOSCALLOW +A comma-separated list of OSC types which are output directly to the +terminal when \-R is in effect. +By default, only OSC 8 sequences are output directly. +.IP LESSANSIOSCCHARS +Characters which may follow an ESC character to mark the start +of an "OS Command" sequence. +All characters that follow this character up to a +String Terminator (ESC-backslash or BEL) +are considered to be part of the OSC sequence +(default "]"). +If a character in LESSANSIOSCCHARS is followed by an asterisk, +sequences that begin with that character in the file contents +are passed through to the terminal; +otherwise only sequences that appear in a prompt string are passed through. .IP LESSBINFMT Format for displaying non-printable, non-control characters. .IP LESSCHARDEF @@ -2469,6 +2531,22 @@ sets an OSC 8 handler for opening OSC 8 links containing a URI with that scheme. .IP LESS_OSC8_ANY Sets an OSC 8 handler for opening OSC 8 links for which there is no specific LESS_OSC8_xxx handler set for the "xxx" scheme. +.IP LESS_SHELL_LINES +When the \-F option is set, +.B less +exits automatically if the number of screen lines used to display the file +is less than or equal to the screen height minus the value of +the LESS_SHELL_LINES variable. +Thus, if you use a shell prompt which occupies more than one screen line, +this variable can be set to the number of lines used by your prompt, +to ensure that the entire file can be seen when \-F is used. +If not set, LESS_SHELL_LINES is assumed to be 1. +.IP LESS_SIGUSR1 +If set to a string of one or more +.B less +command characters, those commands will be executed when +.B less +receives a SIGUSR1 signal. .IP LESS_TERMCAP_xx Where "xx" is any two characters, overrides the definition of the termcap "xx" capability for the terminal. @@ -2515,7 +2593,7 @@ Possible location of the history file; see the description of the LESSHISTFILE e .BR lessecho (1) . .SH COPYRIGHT -Copyright (C) 1984-2024 Mark Nudelman +Copyright (C) 1984-2025 Mark Nudelman .PP less is part of the GNU project and is free software. You can redistribute it and/or modify it @@ -2541,12 +2619,10 @@ See the GNU General Public License for more details. Mark Nudelman .br Report bugs at -.nh -https://github.com/gwsw/less/issues. -.hy +.UR https://github.com/gwsw/less/issues +.UE . .br For more information, see the less homepage at .br -.nh -https://greenwoodsoftware.com/less. -.hy +.UR https://greenwoodsoftware.com/less +.UE . diff --git a/lessecho.c b/lessecho.c index cdefb9202b5a..2c5a686ed424 100644 --- a/lessecho.c +++ b/lessecho.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. diff --git a/lessecho.man b/lessecho.man index 39f4eb21193b..85fd6fd5162f 100644 --- a/lessecho.man +++ b/lessecho.man @@ -46,6 +46,6 @@ This manual page was written by Thomas Schoepf <schoepf@debian.org>, for the Debian GNU/Linux system (but may be used by others). - Report bugs at https://github.com/gwsw/less/issues. + Report bugs at ⟨https://github.com/gwsw/less/issues⟩. - Version 668: 06 Oct 2024 [4mLESSECHO[24m(1) + Version 678: 01 May 2025 [4mLESSECHO[24m(1) diff --git a/lessecho.nro b/lessecho.nro index 7f6bdf8f265e..696fcb13b214 100644 --- a/lessecho.nro +++ b/lessecho.nro @@ -1,4 +1,4 @@ -.TH LESSECHO 1 "Version 668: 06 Oct 2024" +.TH LESSECHO 1 "Version 678: 01 May 2025" .SH NAME lessecho \- expand metacharacters .SH SYNOPSIS @@ -53,4 +53,6 @@ The default is that only arguments containing metacharacters are quoted. This manual page was written by Thomas Schoepf <schoepf@debian.org>, for the Debian GNU/Linux system (but may be used by others). .PP -Report bugs at https://github.com/gwsw/less/issues. +Report bugs at +.UR https://github.com/gwsw/less/issues +.UE . diff --git a/lesskey.c b/lesskey.c index 7f925225c46b..5930056c0dfc 100644 --- a/lesskey.c +++ b/lesskey.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. diff --git a/lesskey.h b/lesskey.h index d1f59d40606f..4d9d1bf280b7 100644 --- a/lesskey.h +++ b/lesskey.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. diff --git a/lesskey.man b/lesskey.man index da072d517b43..c1fbbf9fa656 100644 --- a/lesskey.man +++ b/lesskey.man @@ -34,27 +34,28 @@ #env Defines environment variables. - Blank lines and lines which start with a hash mark (#) are ignored, ex‐ - cept as noted below. + Blank lines are ignored. Any text that follows an unescaped hash mark + (#) in a line is ignored, except as noted below. [1mCOMMAND SECTION[0m The command section begins with the line #command - If the command section is the first section in the file, this line may + If the command section is the first section in the file, this line may be omitted. The command section consists of lines of the form: - [4mstring[24m <whitespace> [4maction[24m [extra‐string] <newline> + [4mstring[24m <whitespace> [4maction[24m <whitespace> [extra‐string] <newline> - Whitespace is any sequence of one or more spaces and/or tabs. The - [4mstring[24m is the command key(s) which invoke the action. The [4mstring[24m may + Whitespace is any sequence of one or more spaces and/or tabs. The + [4mstring[24m is the command key(s) which invoke the action. The [4mstring[24m may be a single command key, or a sequence of up to 15 keys. The [4maction[24m is - the name of the less action, from the list below. The characters in - the [4mstring[24m may appear literally, or be prefixed by a caret to indicate - a control key. A backslash followed by one to three octal digits may - be used to specify a character by its octal value. A backslash fol‐ - lowed by certain characters specifies input characters as follows: + the name of the less action, from the lists in the EXAMPLE sections be‐ + low. The characters in the [4mstring[24m may appear literally, or be prefixed + by a caret to indicate a control key. A backslash followed by one to + three octal digits may be used to specify a character by its octal + value. A backslash followed by certain characters specifies input + characters as follows: \b BACKSPACE (0x08) \e ESCAPE (0x1B) \n NEWLINE (0x0A) @@ -118,6 +119,8 @@ J forw‐line‐force K back‐line‐force Y back‐line‐force + \ej forw‐newline + \ek back‐newline d forw‐scroll ˆD forw‐scroll u back‐scroll @@ -134,6 +137,7 @@ z forw‐window w back‐window \e\40 forw‐screen‐force + \eb back‐screen‐force F forw‐forever \eF forw‐until‐hilite R repaint‐flush @@ -210,6 +214,8 @@ ! shell # pshell + firstcmd + \e[M mouse + \e[< mouse6 H help h help V version @@ -292,6 +298,8 @@ \ku up \ej down ˆG abort + \e[M mouse + \e[< mouse6 [1mLESS ENVIRONMENT VARIABLES[0m @@ -376,7 +384,7 @@ represented as \340 in a lesskey file. [1mCOPYRIGHT[0m - Copyright (C) 1984‐2024 Mark Nudelman + Copyright (C) 1984‐2025 Mark Nudelman less is part of the GNU project and is free software. You can redis‐ tribute it and/or modify it under the terms of either (1) the GNU Gen‐ @@ -395,6 +403,6 @@ [1mAUTHOR[0m Mark Nudelman - Report bugs at https://github.com/gwsw/less/issues. + Report bugs at ⟨https://github.com/gwsw/less/issues⟩. - Version 668: 06 Oct 2024 [4mLESSKEY[24m(1) + Version 678: 01 May 2025 [4mLESSKEY[24m(1) diff --git a/lesskey.nro b/lesskey.nro index 8d83d516af0c..61ba056b04c6 100644 --- a/lesskey.nro +++ b/lesskey.nro @@ -1,5 +1,5 @@ '\" t -.TH LESSKEY 1 "Version 668: 06 Oct 2024" +.TH LESSKEY 1 "Version 678: 01 May 2025" .SH NAME lesskey \- customize key bindings for less .SH "SYNOPSIS (deprecated)" @@ -48,7 +48,8 @@ Customizes line-editing key bindings. .IP #env Defines environment variables. .PP -Blank lines and lines which start with a hash mark (#) are ignored, +Blank lines are ignored. +Any text that follows an unescaped hash mark (#) in a line is ignored, except as noted below. . .SH "COMMAND SECTION" @@ -60,12 +61,13 @@ If the command section is the first section in the file, this line may be omitted. The command section consists of lines of the form: .sp - \fIstring\fP <whitespace> \fIaction\fP [extra-string] <newline> + \fIstring\fP <whitespace> \fIaction\fP <whitespace> [extra-string] <newline> .sp Whitespace is any sequence of one or more spaces and/or tabs. The \fIstring\fP is the command key(s) which invoke the action. The \fIstring\fP may be a single command key, or a sequence of up to 15 keys. -The \fIaction\fP is the name of the less action, from the list below. +The \fIaction\fP is the name of the less action, +from the lists in the EXAMPLE sections below. The characters in the \fIstring\fP may appear literally, or be prefixed by a caret to indicate a control key. A backslash followed by one to three octal digits may be used to @@ -152,6 +154,8 @@ y back-line J forw-line-force K back-line-force Y back-line-force +\eej forw-newline +\eek back-newline d forw-scroll ^D forw-scroll u back-scroll @@ -168,6 +172,7 @@ b back-screen z forw-window w back-window \ee\e40 forw-screen-force +\eeb back-screen-force F forw-forever \eeF forw-until-hilite R repaint-flush @@ -244,6 +249,8 @@ v visual ! shell # pshell + firstcmd +\ee[M mouse +\ee[< mouse6 H help h help V version @@ -339,6 +346,8 @@ l l. \eku up \eej down ^G abort +\ee[M mouse +\ee[< mouse6 .TE .RE .sp @@ -452,7 +461,7 @@ which start with a NUL character (0). This NUL character should be represented as \e340 in a lesskey file. . .SH COPYRIGHT -Copyright (C) 1984-2024 Mark Nudelman +Copyright (C) 1984-2025 Mark Nudelman .PP less is part of the GNU project and is free software. You can redistribute it and/or modify it @@ -477,4 +486,6 @@ See the GNU General Public License for more details. . Mark Nudelman .br -Report bugs at https://github.com/gwsw/less/issues. +Report bugs at +.UR https://github.com/gwsw/less/issues +.UE . diff --git a/lesskey_parse.c b/lesskey_parse.c index 8d5912b7b9a9..23f09b259aca 100644 --- a/lesskey_parse.c +++ b/lesskey_parse.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -34,7 +34,9 @@ static constant struct lesskey_cmdname cmdnames[] = { "back-bracket", A_B_BRACKET }, { "back-line", A_B_LINE }, { "back-line-force", A_BF_LINE }, + { "back-newline", A_B_NEWLINE }, { "back-screen", A_B_SCREEN }, + { "back-screen-force", A_BF_SCREEN }, { "back-scroll", A_B_SCROLL }, { "back-search", A_B_SEARCH }, { "back-window", A_B_WINDOW }, @@ -55,6 +57,7 @@ static constant struct lesskey_cmdname cmdnames[] = { "forw-forever", A_F_FOREVER }, { "forw-line", A_F_LINE }, { "forw-line-force", A_FF_LINE }, + { "forw-newline", A_F_NEWLINE }, { "forw-screen", A_F_SCREEN }, { "forw-screen-force", A_FF_SCREEN }, { "forw-scroll", A_F_SCROLL }, @@ -69,6 +72,8 @@ static constant struct lesskey_cmdname cmdnames[] = { "index-file", A_INDEX_FILE }, { "invalid", A_UINVALID }, { "left-scroll", A_LSHIFT }, + { "mouse", A_X11MOUSE_IN }, + { "mouse6", A_X116MOUSE_IN }, { "next-file", A_NEXT_FILE }, { "next-tag", A_NEXT_TAG }, { "no-scroll", A_LLSHIFT }, @@ -118,6 +123,8 @@ static constant struct lesskey_cmdname editnames[] = { "abort", EC_ABORT }, { "left", EC_LEFT }, { "literal", EC_LITERAL }, + { "mouse", EC_X11MOUSE }, + { "mouse6", EC_X116MOUSE }, { "right", EC_RIGHT }, { "up", EC_UP }, { "word-backspace", EC_W_BACKSPACE }, diff --git a/lesstest/lt/filter1.lt b/lesstest/lt/filter1.lt new file mode 100644 index 000000000000..2e4a97fa7671 --- /dev/null +++ b/lesstest/lt/filter1.lt @@ -0,0 +1,1171 @@ +!lesstest! +!version 1 +!created 2025-04-27 17:39:44 +E "LESS_TERMCAP_am" "1" +E "LESS_TERMCAP_cd" "S" +E "LESS_TERMCAP_ce" "L" +E "LESS_TERMCAP_cl" "A" +E "LESS_TERMCAP_cr" "<" +E "LESS_TERMCAP_cm" "%p2%d;%p1%dj" +E "LESS_TERMCAP_ho" "h" +E "LESS_TERMCAP_ll" "l" +E "LESS_TERMCAP_mb" "b" +E "LESS_TERMCAP_md" "[1m" +E "LESS_TERMCAP_me" "[m" +E "LESS_TERMCAP_se" "[m" +E "LESS_TERMCAP_so" "[7m" +E "LESS_TERMCAP_sr" "r" +E "LESS_TERMCAP_ue" "[24m" +E "LESS_TERMCAP_us" "[4m" +E "LESS_TERMCAP_vb" "g" +E "LESS_TERMCAP_kr" "OC" +E "LESS_TERMCAP_kl" "OD" +E "LESS_TERMCAP_ku" "OA" +E "LESS_TERMCAP_kd" "OB" +E "LESS_TERMCAP_kh" "OH" +E "LESS_TERMCAP_@7" "OF" +E "COLUMNS" "79" +E "LINES" "34" +E "LANG" "C" +E "LC_CTYPE" "C.UTF-8" +T "filter1" +A "filter1" +F "filter1" 3893 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +R +=1______________________________________________________________________________2______________________________________________________________________________3______________________________________________________________________________4______________________________________________________________________________5______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________15_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________25_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________@04filter1@00#________________________________________________________________________ ++6a +=2______________________________________________________________________________3______________________________________________________________________________4______________________________________________________________________________5______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________15_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________25_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________:#______________________________________________________________________________ ++6a +=3______________________________________________________________________________4______________________________________________________________________________5______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________15_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________25_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________35_____________________________________________________________________________:#______________________________________________________________________________ ++6a +=4______________________________________________________________________________5______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________15_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________25_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________35_____________________________________________________________________________36_____________________________________________________________________________:#______________________________________________________________________________ ++2f +=4______________________________________________________________________________5______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________15_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________25_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________35_____________________________________________________________________________36_____________________________________________________________________________/#______________________________________________________________________________ ++35 +=4______________________________________________________________________________5______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________15_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________25_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________35_____________________________________________________________________________36_____________________________________________________________________________/5#_____________________________________________________________________________ ++a +=@045@00______________________________________________________________________________6______________________________________________________________________________7______________________________________________________________________________8______________________________________________________________________________9______________________________________________________________________________10_____________________________________________________________________________11_____________________________________________________________________________12_____________________________________________________________________________13_____________________________________________________________________________14_____________________________________________________________________________1@045@00_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________2@045@00_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________:#______________________________________________________________________________ ++6e +=1@045@00_____________________________________________________________________________16_____________________________________________________________________________17_____________________________________________________________________________18_____________________________________________________________________________19_____________________________________________________________________________20_____________________________________________________________________________21_____________________________________________________________________________22_____________________________________________________________________________23_____________________________________________________________________________24_____________________________________________________________________________2@045@00_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________38_____________________________________________________________________________39_____________________________________________________________________________40_____________________________________________________________________________41_____________________________________________________________________________42_____________________________________________________________________________43_____________________________________________________________________________44_____________________________________________________________________________4@045@00_____________________________________________________________________________46_____________________________________________________________________________47_____________________________________________________________________________:#______________________________________________________________________________ ++6e +=2@045@00_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________38_____________________________________________________________________________39_____________________________________________________________________________40_____________________________________________________________________________41_____________________________________________________________________________42_____________________________________________________________________________43_____________________________________________________________________________44_____________________________________________________________________________4@045@00_____________________________________________________________________________46_____________________________________________________________________________47_____________________________________________________________________________48_____________________________________________________________________________49_____________________________________________________________________________@045@000_____________________________________________________________________________@045@001_____________________________________________________________________________@045@002_____________________________________________________________________________@045@003_____________________________________________________________________________@045@004_____________________________________________________________________________@0455@00_____________________________________________________________________________@045@006_____________________________________________________________________________@045@007_____________________________________________________________________________:#______________________________________________________________________________ ++26 +=2@045@00_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________38_____________________________________________________________________________39_____________________________________________________________________________40_____________________________________________________________________________41_____________________________________________________________________________42_____________________________________________________________________________43_____________________________________________________________________________44_____________________________________________________________________________4@045@00_____________________________________________________________________________46_____________________________________________________________________________47_____________________________________________________________________________48_____________________________________________________________________________49_____________________________________________________________________________@045@000_____________________________________________________________________________@045@001_____________________________________________________________________________@045@002_____________________________________________________________________________@045@003_____________________________________________________________________________@045@004_____________________________________________________________________________@0455@00_____________________________________________________________________________@045@006_____________________________________________________________________________@045@007_____________________________________________________________________________&/#_____________________________________________________________________________ ++33 +=2@045@00_____________________________________________________________________________26_____________________________________________________________________________27_____________________________________________________________________________28_____________________________________________________________________________29_____________________________________________________________________________30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________38_____________________________________________________________________________39_____________________________________________________________________________40_____________________________________________________________________________41_____________________________________________________________________________42_____________________________________________________________________________43_____________________________________________________________________________44_____________________________________________________________________________4@045@00_____________________________________________________________________________46_____________________________________________________________________________47_____________________________________________________________________________48_____________________________________________________________________________49_____________________________________________________________________________@045@000_____________________________________________________________________________@045@001_____________________________________________________________________________@045@002_____________________________________________________________________________@045@003_____________________________________________________________________________@045@004_____________________________________________________________________________@0455@00_____________________________________________________________________________@045@006_____________________________________________________________________________@045@007_____________________________________________________________________________&/3#____________________________________________________________________________ ++a +=30_____________________________________________________________________________31_____________________________________________________________________________32_____________________________________________________________________________33_____________________________________________________________________________34_____________________________________________________________________________3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________38_____________________________________________________________________________39_____________________________________________________________________________43_____________________________________________________________________________@045@003_____________________________________________________________________________63_____________________________________________________________________________73_____________________________________________________________________________83_____________________________________________________________________________93_____________________________________________________________________________103____________________________________________________________________________113____________________________________________________________________________123____________________________________________________________________________130____________________________________________________________________________131____________________________________________________________________________132____________________________________________________________________________133____________________________________________________________________________134____________________________________________________________________________13@045@00____________________________________________________________________________136____________________________________________________________________________137____________________________________________________________________________138____________________________________________________________________________139____________________________________________________________________________143____________________________________________________________________________1@045@003____________________________________________________________________________163____________________________________________________________________________173____________________________________________________________________________& :#____________________________________________________________________________ ++6e +=3@045@00_____________________________________________________________________________36_____________________________________________________________________________37_____________________________________________________________________________38_____________________________________________________________________________39_____________________________________________________________________________43_____________________________________________________________________________@045@003_____________________________________________________________________________63_____________________________________________________________________________73_____________________________________________________________________________83_____________________________________________________________________________93_____________________________________________________________________________103____________________________________________________________________________113____________________________________________________________________________123____________________________________________________________________________130____________________________________________________________________________131____________________________________________________________________________132____________________________________________________________________________133____________________________________________________________________________134____________________________________________________________________________13@045@00____________________________________________________________________________136____________________________________________________________________________137____________________________________________________________________________138____________________________________________________________________________139____________________________________________________________________________143____________________________________________________________________________1@045@003____________________________________________________________________________163____________________________________________________________________________173____________________________________________________________________________183____________________________________________________________________________193____________________________________________________________________________203____________________________________________________________________________213____________________________________________________________________________223____________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@045@003_____________________________________________________________________________63_____________________________________________________________________________73_____________________________________________________________________________83_____________________________________________________________________________93_____________________________________________________________________________103____________________________________________________________________________113____________________________________________________________________________123____________________________________________________________________________130____________________________________________________________________________131____________________________________________________________________________132____________________________________________________________________________133____________________________________________________________________________134____________________________________________________________________________13@045@00____________________________________________________________________________136____________________________________________________________________________137____________________________________________________________________________138____________________________________________________________________________139____________________________________________________________________________143____________________________________________________________________________1@045@003____________________________________________________________________________163____________________________________________________________________________173____________________________________________________________________________183____________________________________________________________________________193____________________________________________________________________________203____________________________________________________________________________213____________________________________________________________________________223____________________________________________________________________________230____________________________________________________________________________231____________________________________________________________________________232____________________________________________________________________________233____________________________________________________________________________234____________________________________________________________________________23@045@00____________________________________________________________________________& :#____________________________________________________________________________ ++2d +=@045@003_____________________________________________________________________________63_____________________________________________________________________________73_____________________________________________________________________________83_____________________________________________________________________________93_____________________________________________________________________________103____________________________________________________________________________113____________________________________________________________________________123____________________________________________________________________________130____________________________________________________________________________131____________________________________________________________________________132____________________________________________________________________________133____________________________________________________________________________134____________________________________________________________________________13@045@00____________________________________________________________________________136____________________________________________________________________________137____________________________________________________________________________138____________________________________________________________________________139____________________________________________________________________________143____________________________________________________________________________1@045@003____________________________________________________________________________163____________________________________________________________________________173____________________________________________________________________________183____________________________________________________________________________193____________________________________________________________________________203____________________________________________________________________________213____________________________________________________________________________223____________________________________________________________________________230____________________________________________________________________________231____________________________________________________________________________232____________________________________________________________________________233____________________________________________________________________________234____________________________________________________________________________23@045@00____________________________________________________________________________-#______________________________________________________________________________ ++4a +=@045@003_____________________________________________________________________________63_____________________________________________________________________________73_____________________________________________________________________________83_____________________________________________________________________________93_____________________________________________________________________________103____________________________________________________________________________113____________________________________________________________________________123____________________________________________________________________________130____________________________________________________________________________131____________________________________________________________________________132____________________________________________________________________________133____________________________________________________________________________134____________________________________________________________________________13@045@00____________________________________________________________________________136____________________________________________________________________________137____________________________________________________________________________138____________________________________________________________________________139____________________________________________________________________________143____________________________________________________________________________1@045@003____________________________________________________________________________163____________________________________________________________________________173____________________________________________________________________________183____________________________________________________________________________193____________________________________________________________________________203____________________________________________________________________________213____________________________________________________________________________223____________________________________________________________________________230____________________________________________________________________________231____________________________________________________________________________232____________________________________________________________________________233____________________________________________________________________________234____________________________________________________________________________23@045@00____________________________________________________________________________@04Display a status column (press RETURN)@00#________________________________________ ++a +=@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________@04*@00 1@045@003__________________________________________________________________________ 163__________________________________________________________________________ 173__________________________________________________________________________ 183__________________________________________________________________________ 193__________________________________________________________________________ 203__________________________________________________________________________ 213__________________________________________________________________________ 223__________________________________________________________________________ 230__________________________________________________________________________ 231__________________________________________________________________________ 232__________________________________________________________________________ 233__________________________________________________________________________ 234__________________________________________________________________________@04*@00 23@045@00__________________________________________________________________________& :#____________________________________________________________________________ ++47 += 832__________________________________________________________________________ 833__________________________________________________________________________ 834__________________________________________________________________________@04*@00 83@045@00__________________________________________________________________________ 836__________________________________________________________________________ 837__________________________________________________________________________ 838__________________________________________________________________________ 839__________________________________________________________________________ 843__________________________________________________________________________@04*@00 8@045@003__________________________________________________________________________ 863__________________________________________________________________________ 873__________________________________________________________________________ 883__________________________________________________________________________ 893__________________________________________________________________________ 903__________________________________________________________________________ 913__________________________________________________________________________ 923__________________________________________________________________________ 930__________________________________________________________________________ 931__________________________________________________________________________ 932__________________________________________________________________________ 933__________________________________________________________________________ 934__________________________________________________________________________@04*@00 93@045@00__________________________________________________________________________ 936__________________________________________________________________________ 937__________________________________________________________________________ 938__________________________________________________________________________ 939__________________________________________________________________________ 943__________________________________________________________________________@04*@00 9@045@003__________________________________________________________________________ 963__________________________________________________________________________ 973__________________________________________________________________________ 983__________________________________________________________________________ 993__________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@04*@00 83@045@00__________________________________________________________________________ 836__________________________________________________________________________ 837__________________________________________________________________________ 838__________________________________________________________________________ 839__________________________________________________________________________ 843__________________________________________________________________________@04*@00 8@045@003__________________________________________________________________________ 863__________________________________________________________________________ 873__________________________________________________________________________ 883__________________________________________________________________________ 893__________________________________________________________________________ 903__________________________________________________________________________ 913__________________________________________________________________________ 923__________________________________________________________________________ 930__________________________________________________________________________ 931__________________________________________________________________________ 932__________________________________________________________________________ 933__________________________________________________________________________ 934__________________________________________________________________________@04*@00 93@045@00__________________________________________________________________________ 936__________________________________________________________________________ 937__________________________________________________________________________ 938__________________________________________________________________________ 939__________________________________________________________________________ 943__________________________________________________________________________@04*@00 9@045@003__________________________________________________________________________ 963__________________________________________________________________________ 973__________________________________________________________________________ 983__________________________________________________________________________ 993__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6e +=@04*@00 8@045@003__________________________________________________________________________ 863__________________________________________________________________________ 873__________________________________________________________________________ 883__________________________________________________________________________ 893__________________________________________________________________________ 903__________________________________________________________________________ 913__________________________________________________________________________ 923__________________________________________________________________________ 930__________________________________________________________________________ 931__________________________________________________________________________ 932__________________________________________________________________________ 933__________________________________________________________________________ 934__________________________________________________________________________@04*@00 93@045@00__________________________________________________________________________ 936__________________________________________________________________________ 937__________________________________________________________________________ 938__________________________________________________________________________ 939__________________________________________________________________________ 943__________________________________________________________________________@04*@00 9@045@003__________________________________________________________________________ 963__________________________________________________________________________ 973__________________________________________________________________________ 983__________________________________________________________________________ 993__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6e +=@04*@00 93@045@00__________________________________________________________________________ 936__________________________________________________________________________ 937__________________________________________________________________________ 938__________________________________________________________________________ 939__________________________________________________________________________ 943__________________________________________________________________________@04*@00 9@045@003__________________________________________________________________________ 963__________________________________________________________________________ 973__________________________________________________________________________ 983__________________________________________________________________________ 993__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++4e +=@04*@00 8@045@003__________________________________________________________________________ 863__________________________________________________________________________ 873__________________________________________________________________________ 883__________________________________________________________________________ 893__________________________________________________________________________ 903__________________________________________________________________________ 913__________________________________________________________________________ 923__________________________________________________________________________ 930__________________________________________________________________________ 931__________________________________________________________________________ 932__________________________________________________________________________ 933__________________________________________________________________________ 934__________________________________________________________________________@04*@00 93@045@00__________________________________________________________________________ 936__________________________________________________________________________ 937__________________________________________________________________________ 938__________________________________________________________________________ 939__________________________________________________________________________ 943__________________________________________________________________________@04*@00 9@045@003__________________________________________________________________________ 963__________________________________________________________________________ 973__________________________________________________________________________ 983__________________________________________________________________________ 993__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++4e +=@04*@00 83@045@00__________________________________________________________________________ 836__________________________________________________________________________ 837__________________________________________________________________________ 838__________________________________________________________________________ 839__________________________________________________________________________ 843__________________________________________________________________________@04*@00 8@045@003__________________________________________________________________________ 863__________________________________________________________________________ 873__________________________________________________________________________ 883__________________________________________________________________________ 893__________________________________________________________________________ 903__________________________________________________________________________ 913__________________________________________________________________________ 923__________________________________________________________________________ 930__________________________________________________________________________ 931__________________________________________________________________________ 932__________________________________________________________________________ 933__________________________________________________________________________ 934__________________________________________________________________________@04*@00 93@045@00__________________________________________________________________________ 936__________________________________________________________________________ 937__________________________________________________________________________ 938__________________________________________________________________________ 939__________________________________________________________________________ 943__________________________________________________________________________@04*@00 9@045@003__________________________________________________________________________ 963__________________________________________________________________________ 973__________________________________________________________________________ 983__________________________________________________________________________ 993__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++67 += 3____________________________________________________________________________ 13___________________________________________________________________________ 23___________________________________________________________________________ 30___________________________________________________________________________ 31___________________________________________________________________________ 32___________________________________________________________________________ 33___________________________________________________________________________ 34___________________________________________________________________________@04*@00 3@045@00___________________________________________________________________________ 36___________________________________________________________________________ 37___________________________________________________________________________ 38___________________________________________________________________________ 39___________________________________________________________________________ 43___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@04*@00 3@045@00___________________________________________________________________________ 36___________________________________________________________________________ 37___________________________________________________________________________ 38___________________________________________________________________________ 39___________________________________________________________________________ 43___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________@04*@00 1@045@003__________________________________________________________________________ 163__________________________________________________________________________ 173__________________________________________________________________________ 183__________________________________________________________________________ 193__________________________________________________________________________ 203__________________________________________________________________________ 213__________________________________________________________________________ 223__________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________@04*@00 1@045@003__________________________________________________________________________ 163__________________________________________________________________________ 173__________________________________________________________________________ 183__________________________________________________________________________ 193__________________________________________________________________________ 203__________________________________________________________________________ 213__________________________________________________________________________ 223__________________________________________________________________________ 230__________________________________________________________________________ 231__________________________________________________________________________ 232__________________________________________________________________________ 233__________________________________________________________________________ 234__________________________________________________________________________@04*@00 23@045@00__________________________________________________________________________& :#____________________________________________________________________________ ++4e +=@04*@00 3@045@00___________________________________________________________________________ 36___________________________________________________________________________ 37___________________________________________________________________________ 38___________________________________________________________________________ 39___________________________________________________________________________ 43___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________@04*@00 1@045@003__________________________________________________________________________ 163__________________________________________________________________________ 173__________________________________________________________________________ 183__________________________________________________________________________ 193__________________________________________________________________________ 203__________________________________________________________________________ 213__________________________________________________________________________ 223__________________________________________________________________________& :#____________________________________________________________________________ ++4e +=@04*@00 3@045@00___________________________________________________________________________ 36___________________________________________________________________________ 37___________________________________________________________________________ 38___________________________________________________________________________ 39___________________________________________________________________________ 43___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________@04*@00 1@045@003__________________________________________________________________________ 163__________________________________________________________________________ 173__________________________________________________________________________ 183__________________________________________________________________________ 193__________________________________________________________________________ 203__________________________________________________________________________ 213__________________________________________________________________________ 223__________________________________________________________________________@04Pattern not found (press RETURN)@00#______________________________________________ ++26 +=@04*@00 3@045@00___________________________________________________________________________ 36___________________________________________________________________________ 37___________________________________________________________________________ 38___________________________________________________________________________ 39___________________________________________________________________________ 43___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________ 63___________________________________________________________________________ 73___________________________________________________________________________ 83___________________________________________________________________________ 93___________________________________________________________________________ 103__________________________________________________________________________ 113__________________________________________________________________________ 123__________________________________________________________________________ 130__________________________________________________________________________ 131__________________________________________________________________________ 132__________________________________________________________________________ 133__________________________________________________________________________ 134__________________________________________________________________________@04*@00 13@045@00__________________________________________________________________________ 136__________________________________________________________________________ 137__________________________________________________________________________ 138__________________________________________________________________________ 139__________________________________________________________________________ 143__________________________________________________________________________@04*@00 1@045@003__________________________________________________________________________ 163__________________________________________________________________________ 173__________________________________________________________________________ 183__________________________________________________________________________ 193__________________________________________________________________________ 203__________________________________________________________________________ 213__________________________________________________________________________ 223__________________________________________________________________________&/#_____________________________________________________________________________ ++a +=@04*@00 3@045@00___________________________________________________________________________ 36___________________________________________________________________________ 37___________________________________________________________________________ 38___________________________________________________________________________ 39___________________________________________________________________________ 40___________________________________________________________________________ 41___________________________________________________________________________ 42___________________________________________________________________________ 43___________________________________________________________________________ 44___________________________________________________________________________@04*@00 4@045@00___________________________________________________________________________ 46___________________________________________________________________________ 47___________________________________________________________________________ 48___________________________________________________________________________ 49___________________________________________________________________________@04*@00 @045@000___________________________________________________________________________@04*@00 @045@001___________________________________________________________________________@04*@00 @045@002___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________@04*@00 @045@004___________________________________________________________________________@04*@00 @0455@00___________________________________________________________________________@04*@00 @045@006___________________________________________________________________________@04*@00 @045@007___________________________________________________________________________@04*@00 @045@008___________________________________________________________________________@04*@00 @045@009___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________:#______________________________________________________________________________ ++64 +=@04*@00 @045@002___________________________________________________________________________@04*@00 @045@003___________________________________________________________________________@04*@00 @045@004___________________________________________________________________________@04*@00 @0455@00___________________________________________________________________________@04*@00 @045@006___________________________________________________________________________@04*@00 @045@007___________________________________________________________________________@04*@00 @045@008___________________________________________________________________________@04*@00 @045@009___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 70___________________________________________________________________________ 71___________________________________________________________________________ 72___________________________________________________________________________ 73___________________________________________________________________________ 74___________________________________________________________________________@04*@00 7@045@00___________________________________________________________________________ 76___________________________________________________________________________ 77___________________________________________________________________________ 78___________________________________________________________________________ 79___________________________________________________________________________ 80___________________________________________________________________________ 81___________________________________________________________________________ 82___________________________________________________________________________ 83___________________________________________________________________________ 84___________________________________________________________________________:#______________________________________________________________________________ ++6a +=@04*@00 @045@003___________________________________________________________________________@04*@00 @045@004___________________________________________________________________________@04*@00 @0455@00___________________________________________________________________________@04*@00 @045@006___________________________________________________________________________@04*@00 @045@007___________________________________________________________________________@04*@00 @045@008___________________________________________________________________________@04*@00 @045@009___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 70___________________________________________________________________________ 71___________________________________________________________________________ 72___________________________________________________________________________ 73___________________________________________________________________________ 74___________________________________________________________________________@04*@00 7@045@00___________________________________________________________________________ 76___________________________________________________________________________ 77___________________________________________________________________________ 78___________________________________________________________________________ 79___________________________________________________________________________ 80___________________________________________________________________________ 81___________________________________________________________________________ 82___________________________________________________________________________ 83___________________________________________________________________________ 84___________________________________________________________________________@04*@00 8@045@00___________________________________________________________________________:#______________________________________________________________________________ ++6a +=@04*@00 @045@004___________________________________________________________________________@04*@00 @0455@00___________________________________________________________________________@04*@00 @045@006___________________________________________________________________________@04*@00 @045@007___________________________________________________________________________@04*@00 @045@008___________________________________________________________________________@04*@00 @045@009___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 70___________________________________________________________________________ 71___________________________________________________________________________ 72___________________________________________________________________________ 73___________________________________________________________________________ 74___________________________________________________________________________@04*@00 7@045@00___________________________________________________________________________ 76___________________________________________________________________________ 77___________________________________________________________________________ 78___________________________________________________________________________ 79___________________________________________________________________________ 80___________________________________________________________________________ 81___________________________________________________________________________ 82___________________________________________________________________________ 83___________________________________________________________________________ 84___________________________________________________________________________@04*@00 8@045@00___________________________________________________________________________ 86___________________________________________________________________________:#______________________________________________________________________________ ++6a +=@04*@00 @0455@00___________________________________________________________________________@04*@00 @045@006___________________________________________________________________________@04*@00 @045@007___________________________________________________________________________@04*@00 @045@008___________________________________________________________________________@04*@00 @045@009___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 70___________________________________________________________________________ 71___________________________________________________________________________ 72___________________________________________________________________________ 73___________________________________________________________________________ 74___________________________________________________________________________@04*@00 7@045@00___________________________________________________________________________ 76___________________________________________________________________________ 77___________________________________________________________________________ 78___________________________________________________________________________ 79___________________________________________________________________________ 80___________________________________________________________________________ 81___________________________________________________________________________ 82___________________________________________________________________________ 83___________________________________________________________________________ 84___________________________________________________________________________@04*@00 8@045@00___________________________________________________________________________ 86___________________________________________________________________________ 87___________________________________________________________________________:#______________________________________________________________________________ ++47 += 968__________________________________________________________________________ 969__________________________________________________________________________ 970__________________________________________________________________________ 971__________________________________________________________________________ 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++4a += 969__________________________________________________________________________ 970__________________________________________________________________________ 971__________________________________________________________________________ 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++4a += 970__________________________________________________________________________ 971__________________________________________________________________________ 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++4a += 971__________________________________________________________________________ 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++4a += 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++26 += 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________&/#_____________________________________________________________________________ ++36 += 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________&/6#____________________________________________________________________________ ++a += 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b +=@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6b += 961__________________________________________________________________________ 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++4e +=@04*@00 9@045@006__________________________________________________________________________ 960__________________________________________________________________________ 961__________________________________________________________________________ 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++4e +=@04*@00 86@045@00__________________________________________________________________________ 866__________________________________________________________________________ 867__________________________________________________________________________ 868__________________________________________________________________________ 869__________________________________________________________________________ 876__________________________________________________________________________ 886__________________________________________________________________________ 896__________________________________________________________________________ 906__________________________________________________________________________ 916__________________________________________________________________________ 926__________________________________________________________________________ 936__________________________________________________________________________ 946__________________________________________________________________________@04*@00 9@045@006__________________________________________________________________________ 960__________________________________________________________________________ 961__________________________________________________________________________ 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++67 += 6____________________________________________________________________________ 16___________________________________________________________________________ 26___________________________________________________________________________ 36___________________________________________________________________________ 46___________________________________________________________________________@04*@00 @045@006___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 76___________________________________________________________________________ 86___________________________________________________________________________ 96___________________________________________________________________________ 106__________________________________________________________________________ 116__________________________________________________________________________ 126__________________________________________________________________________ 136__________________________________________________________________________ 146__________________________________________________________________________@04*@00 1@045@006__________________________________________________________________________ 160__________________________________________________________________________ 161__________________________________________________________________________ 162__________________________________________________________________________ 163__________________________________________________________________________ 164__________________________________________________________________________@04*@00 16@045@00__________________________________________________________________________ 166__________________________________________________________________________ 167__________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@04*@00 @045@006___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 76___________________________________________________________________________ 86___________________________________________________________________________ 96___________________________________________________________________________ 106__________________________________________________________________________ 116__________________________________________________________________________ 126__________________________________________________________________________ 136__________________________________________________________________________ 146__________________________________________________________________________@04*@00 1@045@006__________________________________________________________________________ 160__________________________________________________________________________ 161__________________________________________________________________________ 162__________________________________________________________________________ 163__________________________________________________________________________ 164__________________________________________________________________________@04*@00 16@045@00__________________________________________________________________________ 166__________________________________________________________________________ 167__________________________________________________________________________ 168__________________________________________________________________________ 169__________________________________________________________________________ 176__________________________________________________________________________ 186__________________________________________________________________________ 196__________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 76___________________________________________________________________________ 86___________________________________________________________________________ 96___________________________________________________________________________ 106__________________________________________________________________________ 116__________________________________________________________________________ 126__________________________________________________________________________ 136__________________________________________________________________________ 146__________________________________________________________________________@04*@00 1@045@006__________________________________________________________________________ 160__________________________________________________________________________ 161__________________________________________________________________________ 162__________________________________________________________________________ 163__________________________________________________________________________ 164__________________________________________________________________________@04*@00 16@045@00__________________________________________________________________________ 166__________________________________________________________________________ 167__________________________________________________________________________ 168__________________________________________________________________________ 169__________________________________________________________________________ 176__________________________________________________________________________ 186__________________________________________________________________________ 196__________________________________________________________________________ 206__________________________________________________________________________ 216__________________________________________________________________________ 226__________________________________________________________________________ 236__________________________________________________________________________ 246__________________________________________________________________________@04*@00 2@045@006__________________________________________________________________________& :#____________________________________________________________________________ ++4e +=@04*@00 @045@006___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 76___________________________________________________________________________ 86___________________________________________________________________________ 96___________________________________________________________________________ 106__________________________________________________________________________ 116__________________________________________________________________________ 126__________________________________________________________________________ 136__________________________________________________________________________ 146__________________________________________________________________________@04*@00 1@045@006__________________________________________________________________________ 160__________________________________________________________________________ 161__________________________________________________________________________ 162__________________________________________________________________________ 163__________________________________________________________________________ 164__________________________________________________________________________@04*@00 16@045@00__________________________________________________________________________ 166__________________________________________________________________________ 167__________________________________________________________________________ 168__________________________________________________________________________ 169__________________________________________________________________________ 176__________________________________________________________________________ 186__________________________________________________________________________ 196__________________________________________________________________________& :#____________________________________________________________________________ ++4e +=@04*@00 @045@006___________________________________________________________________________ 60___________________________________________________________________________ 61___________________________________________________________________________ 62___________________________________________________________________________ 63___________________________________________________________________________ 64___________________________________________________________________________@04*@00 6@045@00___________________________________________________________________________ 66___________________________________________________________________________ 67___________________________________________________________________________ 68___________________________________________________________________________ 69___________________________________________________________________________ 76___________________________________________________________________________ 86___________________________________________________________________________ 96___________________________________________________________________________ 106__________________________________________________________________________ 116__________________________________________________________________________ 126__________________________________________________________________________ 136__________________________________________________________________________ 146__________________________________________________________________________@04*@00 1@045@006__________________________________________________________________________ 160__________________________________________________________________________ 161__________________________________________________________________________ 162__________________________________________________________________________ 163__________________________________________________________________________ 164__________________________________________________________________________@04*@00 16@045@00__________________________________________________________________________ 166__________________________________________________________________________ 167__________________________________________________________________________ 168__________________________________________________________________________ 169__________________________________________________________________________ 176__________________________________________________________________________ 186__________________________________________________________________________ 196__________________________________________________________________________@04Pattern not found (press RETURN)@00#______________________________________________ ++47 +=@04*@00 8@045@006__________________________________________________________________________ 860__________________________________________________________________________ 861__________________________________________________________________________ 862__________________________________________________________________________ 863__________________________________________________________________________ 864__________________________________________________________________________@04*@00 86@045@00__________________________________________________________________________ 866__________________________________________________________________________ 867__________________________________________________________________________ 868__________________________________________________________________________ 869__________________________________________________________________________ 876__________________________________________________________________________ 886__________________________________________________________________________ 896__________________________________________________________________________ 906__________________________________________________________________________ 916__________________________________________________________________________ 926__________________________________________________________________________ 936__________________________________________________________________________ 946__________________________________________________________________________@04*@00 9@045@006__________________________________________________________________________ 960__________________________________________________________________________ 961__________________________________________________________________________ 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________& :#____________________________________________________________________________ ++6e +=@04*@00 86@045@00__________________________________________________________________________ 866__________________________________________________________________________ 867__________________________________________________________________________ 868__________________________________________________________________________ 869__________________________________________________________________________ 876__________________________________________________________________________ 886__________________________________________________________________________ 896__________________________________________________________________________ 906__________________________________________________________________________ 916__________________________________________________________________________ 926__________________________________________________________________________ 936__________________________________________________________________________ 946__________________________________________________________________________@04*@00 9@045@006__________________________________________________________________________ 960__________________________________________________________________________ 961__________________________________________________________________________ 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6e +=@04*@00 9@045@006__________________________________________________________________________ 960__________________________________________________________________________ 961__________________________________________________________________________ 962__________________________________________________________________________ 963__________________________________________________________________________ 964__________________________________________________________________________@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6e +=@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++6e +=@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@04Pattern not found (press RETURN)@00#______________________________________________ ++a +=@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________& @04(END)@00#________________________________________________________________________ ++26 +=@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 976__________________________________________________________________________ 986__________________________________________________________________________ 996__________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________&/#_____________________________________________________________________________ ++a +=@04*@00 96@045@00__________________________________________________________________________ 966__________________________________________________________________________ 967__________________________________________________________________________ 968__________________________________________________________________________ 969__________________________________________________________________________ 970__________________________________________________________________________ 971__________________________________________________________________________ 972__________________________________________________________________________ 973__________________________________________________________________________ 974__________________________________________________________________________@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________:#______________________________________________________________________________ ++6e +=@04*@00 97@045@00__________________________________________________________________________ 976__________________________________________________________________________ 977__________________________________________________________________________ 978__________________________________________________________________________ 979__________________________________________________________________________ 980__________________________________________________________________________ 981__________________________________________________________________________ 982__________________________________________________________________________ 983__________________________________________________________________________ 984__________________________________________________________________________@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++6e +=@04*@00 98@045@00__________________________________________________________________________ 986__________________________________________________________________________ 987__________________________________________________________________________ 988__________________________________________________________________________ 989__________________________________________________________________________ 990__________________________________________________________________________ 991__________________________________________________________________________ 992__________________________________________________________________________ 993__________________________________________________________________________ 994__________________________________________________________________________@04*@00 99@045@00__________________________________________________________________________ 996__________________________________________________________________________ 997__________________________________________________________________________ 998__________________________________________________________________________ 999__________________________________________________________________________ 1000_________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@01~@00______________________________________________________________________________@04(END)@00#__________________________________________________________________________ ++71 +Q diff --git a/lesstest/lt/hdr-unicode1.lt b/lesstest/lt/hdr-unicode1.lt Binary files differindex 45b73c41420a..4fec3f8b9dcb 100644 --- a/lesstest/lt/hdr-unicode1.lt +++ b/lesstest/lt/hdr-unicode1.lt diff --git a/lesstest/lt/osc8.lt b/lesstest/lt/osc8.lt new file mode 100644 index 000000000000..f3eaa0f27af4 --- /dev/null +++ b/lesstest/lt/osc8.lt @@ -0,0 +1,8887 @@ +!lesstest! +!version 1 +!created 2025-03-24 01:16:22 +E "LESS_TERMCAP_am" "1" +E "LESS_TERMCAP_cd" "S" +E "LESS_TERMCAP_ce" "L" +E "LESS_TERMCAP_cl" "A" +E "LESS_TERMCAP_cr" "<" +E "LESS_TERMCAP_cm" "%p2%d;%p1%dj" +E "LESS_TERMCAP_ho" "h" +E "LESS_TERMCAP_ll" "l" +E "LESS_TERMCAP_mb" "b" +E "LESS_TERMCAP_md" "[1m" +E "LESS_TERMCAP_me" "[m" +E "LESS_TERMCAP_se" "[m" +E "LESS_TERMCAP_so" "[7m" +E "LESS_TERMCAP_sr" "r" +E "LESS_TERMCAP_ue" "[24m" +E "LESS_TERMCAP_us" "[4m" +E "LESS_TERMCAP_vb" "g" +E "LESS_TERMCAP_kr" "OC" +E "LESS_TERMCAP_kl" "OD" +E "LESS_TERMCAP_ku" "OA" +E "LESS_TERMCAP_kd" "OB" +E "LESS_TERMCAP_kh" "OH" +E "LESS_TERMCAP_@7" "OF" +E "COLUMNS" "108" +E "LINES" "38" +E "LESS" "R" +E "LESSCHARSET" "utf8" +E "LANG" "C" +T "osc8" +A "osc8" +F "osc8" 626685 +S-NAIL(1) BSD General Commands Manual S-NAIL(1) + +[1mNAME[22m]8;:id=1;#\]8;;\ + [1mS-nail [v14.9.24] [22m— send and receive Internet mail + +[1mSYNOPSIS[22m]8;:id=2;#\]8;;\ + [1ms-nail [22m[[1m-DdEFinv˜#[22m] [[1m-: [4m[22mspec[24m] [[1m-A [4m[22maccount[24m] [:[1m-a [4m[22mattachment[24m:] + [:[1m-b [4m[22mbcc-addr[24m:] [:[1m-C [4m[22m"field:[24m [4mbody"[24m:] [:[1m-c [4m[22mcc-addr[24m:] + [[1m-M [4m[22mtype[24m | [1m-m [4m[22mfile[24m | [1m-q [4m[22mfile[24m | [1m-t[22m] [[1m-r [4m[22mfrom-addr[24m] + [:[1m-S [4m[22mvar[24m[=[4mvalue[24m]:] [[1m-s [4m[22msubject[24m] [:[1m-T [4m[22m"field:[24m [4maddr"[24m:] [:[1m-X [4m[22mcmd[24m:] + [:[1m-Y [4m[22mcmd[24m:] [[1m-.[22m] :[4mto-addr[24m: [[1m-- [22m:[4mmta-option[24m:] + + [1ms-nail [22m[[1m-DdEeHiNnRv˜#[22m] [[1m-: [4m[22mspec[24m] [[1m-A [4m[22maccount[24m] [:[1m-C [4m[22m"field:[24m [4mbody"[24m:] + [[1m-L [4m[22mspec[24m] [[1m-r [4m[22mfrom-addr[24m] [:[1m-S [4m[22mvar[24m[=[4mvalue[24m]:] [[1m-u [4m[22muser[24m] [:[1m-X [4m[22mcmd[24m:] + [:[1m-Y [4m[22mcmd[24m:] [[1m-- [22m:[4mmta-option[24m:] + [1ms-nail [22m[[1m-DdEeHiNnRv˜#[22m] [[1m-: [4m[22mspec[24m] [[1m-A [4m[22maccount[24m] [:[1m-C [4m[22m"field:[24m [4mbody"[24m:] [1m-f[0m + [[1m-L [4m[22mspec[24m] [[1m-r [4m[22mfrom-addr[24m] [:[1m-S [4m[22mvar[24m[=[4mvalue[24m]:] [:[1m-X [4m[22mcmd[24m:] [:[1m-Y [4m[22mcmd[24m:] + [[4mfile[24m] [[1m-- [22m:[4mmta-option[24m:] + + [1ms-nail -h [22m| [1m--help[0m + [1ms-nail -V [22m| [1m--version[0m + +[1mTABLE OF CONTENTS[22m]8;:id=3;#\]8;;\ + [4mNAME[34m[24m[]8;;#1\1]8;;\][0m + [4mSYNOPSIS[34m[24m[]8;;#2\2]8;;\][0m + [4mTABLE[24m [4mOF[24m [4mCONTENTS[34m[24m[]8;;#3\3]8;;\][0m + [4mDESCRIPTION[34m[24m[]8;;#4\4]8;;\][0m + [4mOptions[34m[24m[]8;;#5\5]8;;\][0m + [4mA[24m [4mstarter[34m[24m[]8;;#6\6]8;;\][0m + [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m + [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m + [4mOn[24m [4mreading[24m [4mmail,[24m [4mand[24m [4mmore[24m [4mon[24m [4minteractive[24m [4mmode[34m[24m[]8;;#9\9]8;;\][0m + [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m + [4mMailing[24m [4mlists[34m[24m[]8;;#11\11]8;;\][0m + [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\][0m + [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m + [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m + [4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m + [4mColoured[24m [4mdisplay[34m[24m[]8;;#16\16]8;;\][0m + [4mSigned[24m [4mand[24m [4mencrypted[24m [4mmessages[24m [4mwith[24m [4mS/MIME[34m[24m[]8;;#17\17]8;;\][0m + [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m + [4mEncrypted[24m [4mnetwork[24m [4mcommunication[34m[24m[]8;;#19\19]8;;\][0m + [4mHandling[24m [4mspam[34m[24m[]8;;#20\20]8;;\][0m + [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\][0m + [4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m + [4mOld-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#23\23]8;;\][0m + [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m + [4mShell-style[24m [4mexpansions[34m[24m[]8;;#25\25]8;;\][0m + [4mMessage[24m [4mlist[24m [4marguments[34m[24m[]8;;#26\26]8;;\][0m + [4mRaw[24m [4mdata[24m [4marguments[24m [4mfor[24m [4mcodec[24m [4mcommands[34m[24m[]8;;#27\27]8;;\][0m + [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m + [4mCommands[34m[24m[]8;;#29\29]8;;\][0m + [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m + [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m + [4mInitial[24m [4msettings[34m[24m[]8;;#32\32]8;;\][0m + [4mBuilt-in[24m [4mvariables[34m[24m[]8;;#33\33]8;;\][0m + [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\][0m + [4mFILES[34m[24m[]8;;#35\35]8;;\][0m + [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m + [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m + [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\][0m + [4mThe[24m [4m.netrc[24m [4mfile[34m[24m[]8;;#39\39]8;;\][0m + [4mEXAMPLES[34m[24m[]8;;#40\40]8;;\][0m + [4mS/MIME[24m [4mstep[24m [4mby[24m [4mstep[34m[24m[]8;;#41\41]8;;\][0m + [4mUsing[24m [4mCRLs[24m [4mwith[24m [4mS/MIME[24m [4mor[24m [4mTLS[34m[24m[]8;;#42\42]8;;\][0m + [4mFAQ[34m[24m[]8;;#43\43]8;;\][0m + [4mS-nail[24m [4mshortly[24m [4mhangs[24m [4mon[24m [4mstartup[34m[24m[]8;;#44\44]8;;\][0m + [4mI[24m [4mcannot[24m [4mlogin[24m [4mto[24m [4mGoogle[24m [4mmail[24m [4m(via[24m [4mOAuth)[34m[24m[]8;;#45\45]8;;\][0m + [4mBut,[24m [4mhow[24m [4mabout[24m [4mXOAUTH2[24m [4m/[24m [4mOAUTHBEARER?[34m[24m[]8;;#46\46]8;;\][0m + [4mNot[24m [4m"defunctional",[24m [4mbut[24m [4mthe[24m [4meditor[24m [4mkey[24m [4mdoes[24m [4mnot[24m [4mwork[34m[24m[]8;;#47\47]8;;\][0m + [4mCan[24m [4mS-nail[24m [4mgit-send-email?[34m[24m[]8;;#48\48]8;;\][0m + [4mHowto[24m [4mhandle[24m [4mstale[24m [4mdotlock[24m [4mfiles[34m[24m[]8;;#49\49]8;;\][0m + [4mIMAP[24m [4mCLIENT[34m[24m[]8;;#50\50]8;;\][0m + [4mSEE[24m [4mALSO[34m[24m[]8;;#51\51]8;;\][0m + [4mHISTORY[34m[24m[]8;;#52\52]8;;\][0m + [4mAUTHORS[34m[24m[]8;;#53\53]8;;\][0m + [4mCAVEATS[34m[24m[]8;;#54\54]8;;\][0m + [4mBUGS[34m[24m[]8;;#55\55]8;;\][0m + +[1mDESCRIPTION[22m]8;:id=4;#\]8;;\ + [1mWarning! [4m[22mv15-compat[34m[24m[]8;;#615\615]8;;\] [0m(with value) is default since v14.10.0, + and the manual expects this context; Most old (other context) docu‐ + mentation has been removed. S-nail (S-nail) will see major changes + until v15.0 (circa 2023). Some backward incompatibilities cannot + be avoided, for example [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0mwill change to [4mShell-style[0m + [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m. + + S-nail provides a simple and friendly environment for sending and receiv‐ + ing mail. It is intended to provide the functionality of the POSIX + mailx(1)[34m[]8;:id=683;man:mailx(1)\683]8;;\] [0mcommand, is MIME capable, and optionally offers extensions + for line editing, S/MIME, SMTP and POP3, among others. Through many + [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0mand [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0musers are given tools for email + appraisal and management, as well as increasingly powerful, reliable + scripting capabilities. + + [1mOptions[22m]8;:id=5;#\]8;;\ + [1m-:[22m]8;:id=56;#\]8;;\ [4mspec[24m, [1m--resource-files[22m=.. + Controls loading (as via [1msource[34m[22m[]8;;#284\284]8;;\][0m) of [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m. + [4mspec[24m consists of case-insensitive letters: ‘s’ for the system- + wide [4ms-nail.rc[34m[24m[]8;;#659\659]8;;\][0m, ‘u’ for the personal file MAILRC[34m[]8;;#636\636]8;;\][0m + ([4m˜/.mailrc[34m[24m[]8;;#660\660]8;;\][0m), and ‘x’ for a compiled-in copy of the (up‐ + stream) system-wide file. The letters ‘-’ and ‘/’ disable us‐ + age of resource files. Order matters, default is ‘su’. This + option overrides [1m-n[34m[22m[]8;;#76\76]8;;\][0m. + + [1m-A[22m]8;:id=57;#\]8;;\ [4mname[24m, [1m--account[22m=.. + Activate user [1maccount[34m[22m[]8;;#144\144]8;;\] [0m[4mname[24m after program startup is com‐ + plete (resource files loaded, only [1m-X[34m[22m[]8;;#87\87]8;;\] [0mcommands to follow), + and switch to its [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0m([4minbox[34m[24m[]8;;#453\453]8;;\][0m). + Upon failure the program e[1mxit[34m[22m[]8;;#311\311]8;;\][0ms if used non-interactively, + or if any of [4merrexit[34m[24m[]8;;#419\419]8;;\] [0mor [4mposix[34m[24m[]8;;#523\523]8;;\] [0mare set. + + [1m-a[22m]8;:id=58;#\]8;;\ [4mfile[24m[[4m=[24m[!]input-charset[[4m#[24m[!]output-charset]], [1m--attach[22m=.. + (Send mode) Attach [4mfile[24m, subject to tilde expansion (see + [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mand [1mfolder[34m[22m[]8;;#203\203]8;;\][0m). In [4mCompose[0m + [4mmode[34m[24m[]8;;#8\8]8;;\] [0mthe [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0m[1m˜@[34m[22m[]8;;#320\320]8;;\] [0mand especially the + scriptable [1m˜ˆ[34m[22m[]8;;#322\322]8;;\] [0mprovide alternatives for attaching files. + + If [4mfile[24m is not accessible but contains an equal-sign ‘=’ a + character set specification is split off. ]8;:id=59;#\]8;;\If only an input one + is given it is fixated and no conversion is applied; an empty, + or the special string hyphen-minus ‘-’ means [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. + If an output one is given the conversion is performed on-the- + fly, not considering file type nor content; however, empty + string or hyphen-minus ‘-’ enforce the default [4mCharacter[0m + [4msets[34m[24m[]8;;#12\12]8;;\] [0mconversion (‘-a file’, ‘-a file=#’, and ‘-a file=-#-’ + are identical), later applied after MIME-classifying [4mfile[24m ([4mHTML[0m + [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m, [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m). + Without ‘,+iconv,’ in [4mfeatures[34m[24m[]8;;#425\425]8;;\] [0monly this mode is avail‐ + able. The character set names may be prefixed with exclamation + mark ‘!’ to enforce base64 [4mmime-encoding[34m[24m[]8;;#479\479]8;;\] [0mof the attach‐ + ment. + + [1m-b[22m]8;:id=60;#\]8;;\ [4maddr[24m, [1m--bcc[22m=.. + (Send mode) Send a blind carbon copy of the message to [4maddr[24m, + invisible for other recipients. May be used multiple times. + See also [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m. + + [1m-C[22m]8;:id=61;#\]8;;\ [4m"name:[24m [4mcontent"[24m, [1m--custom-header[22m=.. + Create a custom header [4mname[24m that lasts for the entire session. + Content follows after a colon ‘:’, for example ‘-C "Blah: + Neminem laede; imo omnes, quantum potes, juva"’. May be used + multiple times; [4mname[24m may not be a standard header. Adjustable + custom headers can be created via [4mcustomhdr[34m[24m[]8;;#409\409]8;;\][0m; in [4mCompose[0m + [4mmode[34m[24m[]8;;#8\8]8;;\] [0m[1m˜ˆ[34m[22m[]8;;#322\322]8;;\] [0m([4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m) and [1mdigmsg[34m[22m[]8;;#178\178]8;;\] [0mare the + most powerful options. + + [1m-c[22m]8;:id=62;#\]8;;\ [4maddr[24m, [1m--cc[22m=.. + (Send mode) Like [1m-b[34m[22m[]8;;#60\60]8;;\][0m, but adds carbon copies (visible recip‐ + ients). + + [1m-D[22m]8;:id=63;#\]8;;\, [1m--disconnected[0m + [Option] Startup with [4mdisconnected[34m[24m[]8;;#676\676]8;;\] [0m[1mset[34m[22m[]8;;#271\271]8;;\][0m. + + [1m-d[22m]8;:id=64;#\]8;;\, [1m--debug[0m + Enter a debug-only sandbox mode by setting [4mdebug[34m[24m[]8;;#412\412]8;;\][0m, as via + ‘[1m-S[34m[22m[]8;;#80\80]8;;\] [0m[4mdebug[24m’ or ‘[1mset[34m[22m[]8;;#271\271]8;;\] [0m[4mdebug[24m’. Also see [1m-v[34m[22m[]8;;#86\86]8;;\][0m. + + [1m-E[22m]8;:id=65;#\]8;;\, [1m--discard-empty-messages[0m + (Send mode) [1mset[34m[22m[]8;;#271\271]8;;\] [0m[4mskipemptybody[34m[24m[]8;;#558\558]8;;\] [0mand discard messages + with an empty message part body, successfully. + + [1m-e[22m]8;:id=66;#\]8;;\, [1m--check-and-exit[0m + If messages are present (in the system [4minbox[34m[24m[]8;;#453\453]8;;\] [0mor the one + given by [1m-f[34m[22m[]8;;#68\68]8;;\][0m) exit with status zero 0, with non-zero other‐ + wise. Control message selection by [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\] [0mvia + [1m-L[34m[22m[]8;;#72\72]8;;\][0m. Quickrun: does not open an interactive session. + + [1m-F[22m]8;:id=67;#\]8;;\ (Send mode) Save the message in a file named after the local + part of the first recipient’s address, overwriting [4mrecord[34m[24m[]8;;#537\537]8;;\][0m, + but honouring [4moutfolder[34m[24m[]8;;#493\493]8;;\][0m. + + [1m-f[22m]8;:id=68;#\]8;;\, [1m--file[0m + Open the user’s [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\][0m, or a given + argument [4mfile[24m, instead of the [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0m(note + [4mhold[34m[24m[]8;;#446\446]8;;\][0m, [4mkeepsave[34m[24m[]8;;#457\457]8;;\][0m). [4mfile[24m is not an option argument, but + taken from the command line after command line option process‐ + ing. It is inspected for protocol specifications and undergoes + [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m, as if given to [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. As a + special case that requires read-only mode ([1m-R[34m[22m[]8;;#78\78]8;;\][0m) hyphen-minus + ‘-’ denotes standard input (in MBOX or EML format) that can + also be a pipe instead of a regular file. + + [1m-H[22m]8;:id=69;#\]8;;\, [1m--header-summary[0m + Display a summary of [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mof the given [1mfolder[34m[22m[]8;;#203\203]8;;\] [0m(de‐ + pendent on [1m-u[34m[22m[]8;;#84\84]8;;\][0m, [4minbox[34m[24m[]8;;#453\453]8;;\] [0mor MAIL[34m[]8;;#634\634]8;;\][0m, or as specified via + [1m-f[34m[22m[]8;;#68\68]8;;\][0m), then exit. [4mshowlast[34m[24m[]8;;#553\553]8;;\] [0mis ignored. Control message + selection by [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\] [0mvia [1m-L[34m[22m[]8;;#72\72]8;;\][0m. Quickrun: + does not open an interactive session. Tip: COLUMNS[34m[]8;;#624\624]8;;\] [0mcan be + honoured in batch mode ([1m-#[34m[22m[]8;;#90\90]8;;\][0m). + + [1m-h[22m]8;:id=70;#\]8;;\, [1m--help[0m + Show a brief usage summary; use [1m--long-help [22mto list long op‐ + tions. + + [1m-i[22m]8;:id=71;#\]8;;\ [1mset[34m[22m[]8;;#271\271]8;;\] [0m[4mignore[34m[24m[]8;;#451\451]8;;\] [0mto ignore tty interrupt signals. + + [1m-L[22m]8;:id=72;#\]8;;\ [4mspec[24m, [1m--search[22m=.. + Display a summary of [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mof messages that match [4mspec[0m + ([4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m) in the [1mfolder[34m[22m[]8;;#203\203]8;;\] [0m(dependent on + [1m-u[34m[22m[]8;;#84\84]8;;\][0m, [4minbox[34m[24m[]8;;#453\453]8;;\] [0mor MAIL[34m[]8;;#634\634]8;;\][0m, or as specified via [1m-f[34m[22m[]8;;#68\68]8;;\][0m), + then exit. [4mshowlast[34m[24m[]8;;#553\553]8;;\] [0mis ignored. Nothing is displayed + with [1m-e[34m[22m[]8;;#66\66]8;;\][0m, only the exit status denotes matches. Quickrun: + does not open an interactive session. Tip: COLUMNS[34m[]8;;#624\624]8;;\] [0mcan be + honoured in batch mode ([1m-#[34m[22m[]8;;#90\90]8;;\][0m). + + [1m-M[22m]8;:id=73;#\]8;;\ [4mtype[24m (Send mode) Will flag standard input with MIME ‘Content-Type:’ + [4mtype[24m ([4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m, [4mThe[24m [4mmime.types[0m + [4mfiles[34m[24m[]8;;#37\37]8;;\][0m), and use it as the main message body. [v15 behav‐ + iour may differ] Using this option will bypass processing of + [4mmessage-inject-head[34m[24m[]8;;#473\473]8;;\] [0mand [4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\][0m. Also + see [1m-m[34m[22m[]8;;#74\74]8;;\][0m, [1m-q[34m[22m[]8;;#77\77]8;;\][0m, [1m-t[34m[22m[]8;;#83\83]8;;\][0m. + + [1m-m[22m]8;:id=74;#\]8;;\ [4mfile[24m (Send mode) Initialize the message body from MIME classified + [4mfile[24m. [v15 behaviour may differ] Using this option will bypass + processing of [4mmessage-inject-head[34m[24m[]8;;#473\473]8;;\] [0mand + [4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\][0m. Also see [1m-q[34m[22m[]8;;#77\77]8;;\][0m, [1m-M[34m[22m[]8;;#73\73]8;;\][0m, [1m-t[34m[22m[]8;;#83\83]8;;\][0m. + + [1m-N[22m]8;:id=75;#\]8;;\, [1m--no-header-summary[0m + [1munset[34m[22m[]8;;#272\272]8;;\] [0m[4mheader[34m[24m[]8;;#438\438]8;;\] [0mto inhibit displaying the summary of + [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mwhen opening a [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. + + [1m-n[22m]8;:id=76;#\]8;;\ Inhibit reading the system-wide [4ms-nail.rc[34m[24m[]8;;#659\659]8;;\][0m. + + [1m-q[22m]8;:id=77;#\]8;;\ [4mfile[24m, [1m--quote-file[22m=.. + (Send mode) Initialize the message body from [4mfile[24m; only non-in‐ + teractively this may denote standard input (hyphen-minus ‘-’). + Also see [1m-M[34m[22m[]8;;#73\73]8;;\][0m, [1m-m[34m[22m[]8;;#74\74]8;;\][0m, [1m-t[34m[22m[]8;;#83\83]8;;\][0m. + + [1m-R[22m]8;:id=78;#\]8;;\, [1m--read-only[0m + Any mailbox will be opened read-only as via [1mFolder[34m[22m[]8;;#202\202]8;;\][0m. + + [1m-r[22m]8;:id=79;#\]8;;\ [4mfrom-addr[24m, [1m--from-address[22m=.. + The RFC 5321 reverse-path used for relaying and delegating mes‐ + sages, for example to report back delivery errors, is derived + from [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or [4msender[34m[24m[]8;;#551\551]8;;\][0m). However, a file-based (local) + [4mmta[34m[24m[]8;;#482\482]8;;\] [0m(Message-Transfer-Agent) will instead use + LOGNAME[34m[]8;;#633\633]8;;\][0m. With this option [4mfrom-addr[24m is assigned to + [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, and in addition file-based [4mmta[34m[24m[]8;;#482\482]8;;\][0ms are invoked + with [1m-f [4m[22mfrom-addr[24m. If [4mfrom-addr[24m includes non-address compo‐ + nents ([4mfullnames[34m[24m[]8;;#437\437]8;;\][0m), these are instead passed via [1m-F [4m[22mname[24m. + If [4mfrom-addr[24m is an empty string [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or [4msender[34m[24m[]8;;#551\551]8;;\][0m) is + evaluated whenever [4mmta[34m[24m[]8;;#482\482]8;;\] [0mis invoked; also see + [4mr-option-implicit[34m[24m[]8;;#535\535]8;;\][0m. Even though not a recipient the + ‘shquote’ [4mexpandaddr[34m[24m[]8;;#422\422]8;;\] [0mflag is supported. + + Remarks: many MTA installations and sites disallow setting an + explicit reverse-path, but for members of dedicated user + groups, or after MTA reconfiguration. + + [1m-S[22m]8;:id=80;#\]8;;\ [4mvar[24m[=value], [1m--set[22m=.. + [1mset[34m[22m[]8;;#271\271]8;;\] [0m(or, with a ‘no’ prefix as documented in [4mINTERNAL[0m + [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m, [1munset[34m[22m[]8;;#272\272]8;;\][0m) [4mvar[24miable and optionally assign + [4mvalue[24m, if supported, evaluated as if specified within dollar- + single-quotes ([4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m). Upon failure + the program will exit if any of [4merrexit[34m[24m[]8;;#419\419]8;;\] [0mor [4mposix[34m[24m[]8;;#523\523]8;;\] [0mis + set. Settings established via [1m-S [22mcannot be changed from within + [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m, or an [1m-A[34m[22m[]8;;#57\57]8;;\][0mccount switch; they become mu‐ + table again for [1m-X[34m[22m[]8;;#87\87]8;;\] [0mcommands. + + [1m-s[22m]8;:id=81;#\]8;;\ [4msubject[24m, [1m--subject[22m=.. + (Send mode) Specify a message subject. Newline (NL) and car‐ + riage-return (CR) are normalized to space (SP). + + [1m-T[22m]8;:id=82;#\]8;;\ [4m"field:[24m [4maddr"[24m, [1m--target[22m=.. + (Send mode) Add [4maddr[24m, parsed like a message header address line + (see [1m-t[34m[22m[]8;;#83\83]8;;\][0m), and supporting the same modifiers, to the list of + recipients targeted by [4mfield[24m: supported are ‘bcc’, ‘cc’, ‘fcc’, + and ‘to’. Field and body (address) are separated by a colon + ‘:’ and optionally blank (space, tabulator) characters. The + ‘shquote’ [4mexpandaddr[34m[24m[]8;;#422\422]8;;\] [0mflag is supported. [4maddr[24m This option + may be used multiple times. + + [1m-t[22m]8;:id=83;#\]8;;\, [1m--template[0m + (Send mode) Standard input is expected to contain one or multi‐ + ple plain text message headers, an empty line, and the message + body. [v15 behaviour may differ] Readily prepared MIME mail + messages cannot be passed. Header lines are parsed as follows. + A line starting with number sign ‘#’ in the first column is ig‐ + nored. A header can span multiple consecutive lines if follow + lines start with (ignored) whitespace. + + Recipients will be [4mexpandaddr[34m[24m[]8;;#422\422]8;;\] [0mchecked, and added onto the + command line ones: ‘To:’, ‘Cc:’, ‘Bcc:’; the line is parsed as + a single recipient with the modifier ‘?single’, for example + ‘To?single: exa, <m@ple>’. ‘Fcc:’ is supported (see [4mCompose[0m + [4mmode[34m[24m[]8;;#8\8]8;;\][0m). A subject specified via ‘Subject:’ is used in favour + of the command line option [1m-s[34m[22m[]8;;#81\81]8;;\][0m. + + More optional headers are ‘Reply-To:’ (possibly overriding + [4mreply-to[34m[24m[]8;;#542\542]8;;\][0m), ‘Sender:’ ([4msender[34m[24m[]8;;#551\551]8;;\][0m), ‘From:’ ([4mfrom[34m[24m[]8;;#436\436]8;;\] [0mand + / or option [1m-r[34m[22m[]8;;#79\79]8;;\][0m). Normally created automatically, but used + if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’ + and ‘Mail-Followup-To:’. All other custom header fields (see + [1m-C[34m[22m[]8;;#61\61]8;;\][0m, [4mcustomhdr[34m[24m[]8;;#409\409]8;;\][0m, [1m˜ˆ[34m[22m[]8;;#322\322]8;;\][0m) are passed through as-is, and + in conjunction with the options [1m-˜[34m[22m[]8;;#89\89]8;;\] [0mor [1m-#[34m[22m[]8;;#90\90]8;;\] [0m[4mCOMMAND[0m + [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0mare evaluated. Also see [1m-M[34m[22m[]8;;#73\73]8;;\][0m, [1m-m[34m[22m[]8;;#74\74]8;;\][0m, [1m-q[34m[22m[]8;;#77\77]8;;\][0m. + + [1m-u[22m]8;:id=84;#\]8;;\ [4muser[24m, [1m--inbox-of[22m=.. + Open the [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mof [4muser[24m, appropriate priv‐ + ileges presumed; identical to ‘[1m-f [22m%user’. + + [1m-V[22m]8;:id=85;#\]8;;\, [1m--version[0m + Print [4mversion[34m[24m[]8;;#617\617]8;;\] [0mand exit. The command [1mversion[34m[22m[]8;;#305\305]8;;\] [0mwill + also show [4mfeatures[34m[24m[]8;;#425\425]8;;\][0m: ‘$ s-nail -:/ -#v -Xversion -Xx’. + + [1m-v[22m]8;:id=86;#\]8;;\, [1m--verbose[0m + [1mset[34m[22m[]8;;#271\271]8;;\] [0m[4mverbose[34m[24m[]8;;#616\616]8;;\][0m. (Multiple levels.) Also see [1m-d[34m[22m[]8;;#64\64]8;;\][0m. + + [1m-X[22m]8;:id=87;#\]8;;\ [4mcmd[24m, [1m--startup-cmd[22m=.. + Add (the multiline) [4mcmd[24m (block) to a list evaluated before nor‐ + mal operation starts, as via [1msource[34m[22m[]8;;#284\284]8;;\][0m. Correlates with + [1m-#[34m[22m[]8;;#90\90]8;;\] [0mand [4merrexit[34m[24m[]8;;#419\419]8;;\][0m. + + [1m-Y[22m]8;:id=88;#\]8;;\ [4mcmd[24m, [1m--cmd[22m=.. + Add (the multiline) [4mcmd[24m (block) to a list evaluated after nor‐ + mal operation has started. It is evaluated successively in the + given order, and as if given on the program’s standard input — + before interactive prompting begins in interactive mode, after + standard input has been consumed otherwise. + + [1m-˜[22m]8;:id=89;#\]8;;\, [1m--enable-cmd-escapes[0m + Enable [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0min [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m, even in non-in‐ + teractive use cases. This can for example be used to format + the composed message text: + + $ ( echo ’line one. Word. Word2.’; + echo ’˜| /usr/bin/fmt -tuw11’ ) | + LC_ALL=C s-nail -d˜:/ -Sttycharset=utf-8 bob@exam.ple + + [1m-#[22m]8;:id=90;#\]8;;\, [1m--batch-mode[0m + Enable batch mode: standard input is made line buffered, all + (interactive) commands are made available, processing of + [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0mis enabled in [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m, and diverse + [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mare adjusted for batch necessities, ex‐ + actly as via [1m-S[34m[22m[]8;;#80\80]8;;\][0m: [4memptystart[34m[24m[]8;;#418\418]8;;\][0m, no[4merrexit[34m[24m[]8;;#419\419]8;;\][0m, + no[4mheader[34m[24m[]8;;#438\438]8;;\][0m, no[4mposix[34m[24m[]8;;#523\523]8;;\][0m, [4mquiet[34m[24m[]8;;#527\527]8;;\][0m, [4msendwait[34m[24m[]8;;#552\552]8;;\][0m, + [4mtypescript-mode[34m[24m[]8;;#612\612]8;;\] [0mas well as to [4m/dev/null[34m[24m[]8;;#657\657]8;;\][0m: MAIL[34m[]8;;#634\634]8;;\][0m, + MBOX[34m[]8;;#638\638]8;;\] [0mand [4minbox[34m[24m[]8;;#453\453]8;;\][0m. The values of COLUMNS[34m[]8;;#624\624]8;;\] [0mand + LINES[34m[]8;;#631\631]8;;\] [0mare acted upon. For example : + + $ for name in bob alice@exam.ple lisa@exam.ple; do + printf ’mail %s\n˜s ubject\nText\n˜.\n’ "${name}" + done | + LC_ALL=C s-nail -#:x -Smta=test \ + -X’alias bob bob@exam.ple’ + + [1m-.[22m]8;:id=91;#\]8;;\, [1m--end-options[0m + Force termination of option processing (prevent “option + injection” attacks), and forcefully enter send mode. + + In difference to [4mmta-arguments[34m[24m[]8;;#484\484]8;;\] [0mthe setting of [4mexpandargv[34m[24m[]8;;#424\424]8;;\] [0mis + checked before [4mmta-option[24m arguments given after a ‘--’ command line sepa‐ + rator will be passed to file-based [4mmta[34m[24m[]8;;#482\482]8;;\][0ms (Message-Transfer-Agent) + during the session. The ‘shquote’ constraint of [4mexpandaddr[34m[24m[]8;;#422\422]8;;\] [0mapplies + to recipient addresses on the command line. For more see [4mOn[24m [4msending[0m + [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m. + + $ s-nail -#:/ -X ’addrcodec enc <silver@go> Hey, ho’ -Xx + + [1mA starter[22m]8;:id=6;#\]8;;\ + S-nail is a direct descendant of BSD Mail, itself a successor to the Re‐ + search UNIX mail which “was there from the start” according to + [4mHISTORY[34m[24m[]8;;#52\52]8;;\][0m. As a message user agent (MUA) it represents the user side + of the UNIX mail system, the traditional server Message-Transfer-Agent + (MTA) was sendmail(8)[34m[]8;:id=684;man:sendmail(8)\684]8;;\][0m, and for compatibility a binary of this name + usually exists to this day. If [4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mannounces the [Option]al + SMTP [4mmta[34m[24m[]8;;#482\482]8;;\] [0mmessage delivery does not require the server side. + + This program strives for POSIX mailx(1)[34m[]8;:id=685;man:mailx(1)\685]8;;\] [0mcompliance, however + [4mposix[34m[24m[]8;;#523\523]8;;\] [0m([4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m) or its [1menviron[34m[22m[]8;;#193\193]8;;\][0mmental equivalent + POSIXLY_CORRECT[34m[]8;;#642\642]8;;\] [0m([4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\][0m) needs to be set to tweak behaviour + accordingly. There is an important deviation: POSIX [4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mis ([v15 behaviour may differ] increasingly) used instead of + POSIX mailx’s [4mOld-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#23\23]8;;\][0m, which is believed to be a + feature. The built-in as well as the (default) global [4ms-nail.rc[34m[24m[]8;;#659\659]8;;\][0m + [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\] [0malso bend standard imposed settings. + + For example, [4mhold[34m[24m[]8;;#446\446]8;;\] [0mand [4mkeepsave[34m[24m[]8;;#457\457]8;;\] [0mare [1mset[34m[22m[]8;;#271\271]8;;\] [0min order to disable + the default ([4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m) automatic moving of messages to the + [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\][0m, and [4mkeep[34m[24m[]8;;#455\455]8;;\] [0mto not remove empty sys‐ + tem MBOX mailbox files (or all empty mailboxes in [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode) to + avoid mangling of file permissions when files eventually get recreated. + + Even if the opened [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mis empty interactive mode is entered due + to [4memptystart[34m[24m[]8;;#418\418]8;;\][0m, in [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0m[4meditheaders[34m[24m[]8;;#417\417]8;;\] [0menables header + editing and [4mfullnames[34m[24m[]8;;#437\437]8;;\] [0mavoids address skinning, when [1mreply[34m[22m[]8;;#261\261]8;;\][0ming + responded messages are [4mquote[34m[24m[]8;;#528\528]8;;\][0md, prefixed with an [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m + that also deviates from standard imposed settings, and + [4mfollowup-to-honour[34m[24m[]8;;#431\431]8;;\] [0mand [4mreply-to-honour[34m[24m[]8;;#543\543]8;;\] [0mare set to comply to + sender address desires. Fully enabled is [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m. + + User credentials and settings are easily addressable by grouping them in + [1maccount[34m[22m[]8;;#144\144]8;;\][0ms. The file mode creation mask can be managed with + [4mumask[34m[24m[]8;;#613\613]8;;\][0m. Files and shell pipe output can be [1msource[34m[22m[]8;;#284\284]8;;\][0md for + [1meval[34m[22m[]8;;#127\127]8;;\][0muation, also during startup from within the [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m. + Informational context can be available by [1mset[34m[22m[]8;;#271\271]8;;\][0mting [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mor + [4mdebug[34m[24m[]8;;#412\412]8;;\] [0m(as via [1m-v[34m[22m[]8;;#86\86]8;;\][0m, [1m-d[34m[22m[]8;;#64\64]8;;\][0m). Many ‘un*’ commands, like + [1munaccount[34m[22m[]8;;#145\145]8;;\][0m, [1munalias[34m[22m[]8;;#148\148]8;;\][0m, [1munalternates[34m[22m[]8;;#150\150]8;;\][0m, [1muncommandalias[34m[22m[]8;;#167\167]8;;\] [0metc. + support an asterisk ‘*’ wildcard argument that matches all covered set‐ + tings. + + [1mOn sending mail, and non-interactive mode[22m]8;:id=7;#\]8;;\ + To send a message to one or more people give their email addresses (and + [4mfullnames[34m[24m[]8;;#437\437]8;;\][0m) on the command line, the options [1m-b[34m[22m[]8;;#60\60]8;;\] [0mand [1m-c[34m[22m[]8;;#62\62]8;;\] [0madd + (blind) carbon copy recipients. When delivered through a local [4mmta[34m[24m[]8;;#482\482]8;;\][0m + (Message-Transfer-Agent) plain system-local user names can be addressed. + The message text will be read from standard input: + + # Via test MTA + $ echo Hello, world | s-nail -:/ -Smta=test -s test $LOGNAME + + # Via sendmail(1) MTA + $ </dev/null s-nail -:x -s test $LOGNAME + + # Debug dry-run mode: + $ </dev/null LC_ALL=C s-nail -d -:/ \ + -Sttycharset=utf8 -Sfullnames \ + -b bcc@exam.ple -c cc@exam.ple -. \ + ’(Lovely) Bob <bob@exam.ple>’ dave@exam.ple + + # With SMTP (no real sending due to -d debug dry-run) + $ LC_ALL=C s-nail -d -:/ -Sttycharset=utf8 \ + -S mta=smtps://me@exam.ple:465 -Ssmtp-config=-auth \ + -S from=scriptreply@exam.ple \ + --attach /etc/passwd --end-options \ + dave@exam.ple < /tmp/letter.txt + + Plain user names are expanded through [1malias[34m[22m[]8;;#147\147]8;;\] [0mand [4mmta-aliases[34m[24m[]8;;#483\483]8;;\][0m, + all recipients are subject to [1malternates[34m[22m[]8;;#149\149]8;;\] [0mfiltering. A valid local + user ‘<name>’ in angle brackets (an invalid address) expands to a quali‐ + fied address if [4mhostname[34m[24m[]8;;#447\447]8;;\] [0mis not set or non-empty; if empty conver‐ + sion is left up to the [4mmta[34m[24m[]8;;#482\482]8;;\][0m. [4mexpandaddr[34m[24m[]8;;#422\422]8;;\] [0moffers fine-grained + control over allowed recipients and more. + + Recipients are classified as follows: any name that starts with a verti‐ + cal bar ‘|’ specifies a pipe: the sh(1)[34m[]8;:id=686;man:sh(1)\686]8;;\][0mell command following the ‘|’ + is executed with the message available on its standard input. Other than + that hyphen-minus ‘-’ or any name that starts with solidus ‘/’ or dot + solidus ‘./’ is treated as a file. Any other name which contains a com‐ + mercial at ‘@’ is an (email) address. Any other name which starts with a + plus sign ‘+’, or which contains a solidus ‘/’ but no exclamation mark + ‘!’ or percent sign ‘%’ before that is a mailbox name. What remains is + treated as an (email) address. Classification can be avoided by using a + ‘Fcc:’ header, see [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m. + + $ echo bla | s-nail -S expandaddr -s test ./mbox.mbox + $ echo bla | s-nail -Sexpandaddr -stest ’|cat >> ./mbox.mbox’ + $ echo safe | LC_ALL=C s-nail -:/ -Smta=test \ + --set expandaddr=fail,-all,+addr,failinvaddr \ + -Sttycharset=utf8 -S mime-force-sendout -S fullnames \ + -s test -. ’Imagine John <cold@turk.ey>’ + + A lot of configuration can be [1mset[34m[22m[]8;;#271\271]8;;\] [0mgenerally. The envelope sender + address for example via [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, especially with the built-in SMTP + [4mmta[34m[24m[]8;;#482\482]8;;\] [0ma [4mhostname[34m[24m[]8;;#447\447]8;;\] [0mmust be set. [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\] [0mfor message + text and MIME part content are configurable via [4msendcharsets[34m[24m[]8;;#549\549]8;;\][0m, input + data is expected to be in [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. Emails need a + [4mmime-encoding[34m[24m[]8;;#479\479]8;;\][0m, MIME parts aka attachments need a [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m, usu‐ + ally taken out of [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m. Saving copies of sent mes‐ + sages in a [4mrecord[34m[24m[]8;;#537\537]8;;\] [0mmailbox may be desirable — as for most mailbox + [1mfolder[34m[22m[]8;;#203\203]8;;\][0ms [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mare performed. + + [1maccount[34m[22m[]8;;#144\144]8;;\][0ms aid in arranging complete configurations. Alternatively + so-called variable chains that automatically pick ‘USER@HOST’ or ‘HOST’ + context-dependent variants could be sufficient: for example ‘[1mset[34m[22m[]8;;#271\271]8;;\][0m + [4mmta[34m[24m[]8;;#482\482]8;;\][0m=smtp://yaa@exam.ple’ would find [4msmtp-config-yaa@exam.ple[24m, + [4msmtp-config-exam.ple[24m and [4msmtp-config[34m[24m[]8;;#573\573]8;;\][0m, in order. For more see [4mOn[24m [4mURL[0m + [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\] [0mand [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m. + + To avoid environmental noise scripts should be isolated by excluding con‐ + figuration files via [1m-:[34m[22m[]8;;#56\56]8;;\][0m, and use repetitions of [1m-S[34m[22m[]8;;#80\80]8;;\] [0mto specify + variables: + + $ env LC_ALL=C s-nail -:/ \ + -Sttycharset=utf-8 -Smime-force-sendout \ + -Sexpandaddr=fail,-all,failinvaddr \ + -S mta=smtps://me@exam.ple:465 -Ssmtp-config=-allmechs,plain \ + -S from=scriptreply@exam.ple \ + -s ’Subject to go’ -a attachment_file \ + -Sfullnames --end-options \ + ’Recipient 1 <rec1@exam.ple>’ rec2@exam.ple \ + < content_file + + As shown scripts can fake a locale [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\][0m, the above specifies + the all-compatible 7-bit clean LC_ALL[34m[]8;;#628\628]8;;\] [0m“C”, but nonetheless takes and + sends UTF-8 message text via [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. If character set conver‐ + sion is compiled in ([4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mincludes ‘,+iconv,’) invalid (accord‐ + ing to [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m) input data would cause errors: setting + [4mmime-force-sendout[34m[24m[]8;;#480\480]8;;\] [0mwill classify input as binary data as a last re‐ + sort, and therefore allow message creation. (Such content can be in‐ + spected either by installing a [4mpipe-TYPE/SUBTYPE[34m[24m[]8;;#511\511]8;;\] [0mhandler for + ‘application/octet-stream’, or possibly automatically through + [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m). + + In interactive mode messages can be send with the command [1mmail[34m[22m[]8;;#224\224]8;;\] [0mand a + list of recipient addresses, in the entered [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0m[4mCOMMAND[0m + [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m, like [1m˜?[34m[22m[]8;;#319\319]8;;\][0m, can then be used: + + $ s-nail -:/ -Squiet -Semptystart -Sfullnames -Smta=test + "/var/spool/mail/user": 0 messages + ? mail "Recipient 1 <rec1@exam.ple>", rec2@exam.ple + ... + ? # Will do the right thing (tm) + ? m rec1@exam.ple rec2@exam.ple + + [1mCompose mode[22m]8;:id=8;#\]8;;\ + In compose mode of interactive sessions, or when requested via [1m-˜[34m[22m[]8;;#89\89]8;;\] [0mor + [1m-#[34m[22m[]8;;#90\90]8;;\][0m, lines beginning with ‘˜’ (the value of [4mescape[34m[24m[]8;;#421\421]8;;\] [0min fact) are + [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. For example [1m˜v[34m[22m[]8;;#346\346]8;;\] [0mwill start VISUAL[34m[]8;;#650\650]8;;\] [0mand + [1m˜e[34m[22m[]8;;#328\328]8;;\] [0mEDITOR[34m[]8;;#626\626]8;;\] [0mto revise the message, the potent [1m˜ˆ[34m[22m[]8;;#322\322]8;;\] [0mcan manage + attachments and headers. [Option]ally [1m˜?[34m[22m[]8;;#319\319]8;;\] [0mshows a summary of avail‐ + able command escapes. + + ‘Fcc:’ header values are not classified like message recipients, there‐ + fore names with vertical bars or commercial ats can be used. They are + subject to the checks of [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m, undergo [4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mand are then interpreted like a [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mtarget. + Any local file and pipe command recipient honours [4mmbox-fcc-and-pcc[34m[24m[]8;;#469\469]8;;\][0m. + + [4mon-compose-enter[34m[24m[]8;;#496\496]8;;\][0m, [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m, [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\] [0mand + [4mon-compose-cleanup[34m[24m[]8;;#495\495]8;;\] [0mare hooks that may be set to [1mdefine[34m[22m[]8;;#174\174]8;;\][0md macros. + The splice hook can operate on messages like a user, and use [4mCOMMAND[0m + [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m, [1mdigmsg[34m[22m[]8;;#178\178]8;;\] [0mmay be helpful to query and adjust status of + message(s) otherwise. ([v15 behaviour may differ] The compose mode hooks + work for [1mforward[34m[22m[]8;;#210\210]8;;\][0m, [1mmail[34m[22m[]8;;#224\224]8;;\][0m, [1mreply[34m[22m[]8;;#261\261]8;;\] [0mand variants; [1mresend[34m[22m[]8;;#264\264]8;;\][0m + and [1mResend[34m[22m[]8;;#263\263]8;;\] [0monly provide the hooks [4mon-resend-enter[34m[24m[]8;;#506\506]8;;\] [0mand + [4mon-resend-cleanup[34m[24m[]8;;#505\505]8;;\][0m, which are pretty restricted due to the nature of + the operation.) + + Once ready [1m˜.[34m[22m[]8;;#315\315]8;;\] [0mwill leave compose mode, call according hooks, perform + auto-insertions ([4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\][0m, [4mautocc[34m[24m[]8;;#379\379]8;;\][0m, [4mautobcc[34m[24m[]8;;#378\378]8;;\][0m), + and pass the final message to the [4mmta[34m[24m[]8;;#482\482]8;;\][0m. Unless [4mignoreeof[34m[24m[]8;;#452\452]8;;\] [0mis set + typing end-of-transmission (EOT) ‘control-D’ (‘ˆD’) at the beginning of + an empty line has the same effect. [1m˜x[34m[22m[]8;;#348\348]8;;\] [0mor [1m˜q[34m[22m[]8;;#339\339]8;;\] [0mabort message com‐ + position, the latter saves the message draft in DEAD[34m[]8;;#625\625]8;;\] [0munless + no[4msave[34m[24m[]8;;#546\546]8;;\] [0mis set. Typing end-of-text (ETX) twice via ‘control-C’ + (‘ˆC’) equals [1m˜q[34m[22m[]8;;#339\339]8;;\][0m. + + [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0mwhich enter compose mode support change [1mlocal[34m[22m[]8;;#130\130]8;;\][0mization + ([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m): covered changes will be reverted once compose + mode is left. + + [1mOn reading mail, and more on interactive mode[22m]8;:id=9;#\]8;;\ + When invoked without recipients “receive mode” is entered, more oriented + towards interactive use ([4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m, + [4mColoured[24m [4mdisplay[34m[24m[]8;;#16\16]8;;\][0m). Through many [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0mmail can be read, sent + and managed in this mode. It starts into a mailbox as via [1mfolder[34m[22m[]8;;#203\203]8;;\][0m: + either the [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0m(of [1m-u[34m[22m[]8;;#84\84]8;;\] [0m[4muser[24m), or, with the op‐ + tion [1m-f[34m[22m[]8;;#68\68]8;;\][0m, a given [4mfile[24m or the secondary MBOX[34m[]8;;#638\638]8;;\][0m. If this initial + mailbox is empty the program [1mquit[34m[22m[]8;;#252\252]8;;\][0ms unless [4memptystart[34m[24m[]8;;#418\418]8;;\] [0mis + [1mset[34m[22m[]8;;#271\271]8;;\][0m. + + With [4mheader[34m[24m[]8;;#438\438]8;;\] [0ma [4mscreen[34m[24m[]8;;#547\547]8;;\][0mful of [4mheadline[34m[24m[]8;;#439\439]8;;\][0ms of [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mis + then shown, [1msort[34m[22m[]8;;#282\282]8;;\][0med according to [4mautosort[34m[24m[]8;;#382\382]8;;\][0m. [1mz[34m[22m[]8;;#312\312]8;;\] [0mwill move + through the summary. Messages are uniquely identified by numbers count‐ + ing from 1; the current – named “dot” – will either be the first new, the + first unread, or the first ([4mshowlast[34m[24m[]8;;#553\553]8;;\][0m: the last) message of the mail‐ + box, in view. By [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\] [0mselective [1msearch[34m[22m[]8;;#269\269]8;;\] [0mresults + can be created. + + At the [4mprompt[34m[24m[]8;;#525\525]8;;\] [0m[1mlist[34m[22m[]8;;#220\220]8;;\] [0mshows all built-in commands in a lookup or‐ + der that does not always correlate to the alphabetical one: names can be + abbreviated, and POSIX standardized some abbreviations. (But) + [1mcommandalias[34m[22m[]8;;#166\166]8;;\][0mes can be defined and listed. A overall summary + [1mhelp[34m[22m[]8;;#215\215]8;;\] [0mis available, and [Option]ally also for a given command (expan‐ + sion). [1mhelp[34m[22m[]8;;#215\215]8;;\] [0mand [1mlist[34m[22m[]8;;#220\220]8;;\] [0mmay react upon [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. + + ? help reply + ? set verbose=2; help reply; unset verbose + + [1mtype[34m[22m[]8;;#297\297]8;;\] [0m(alias [1mprint[34m[22m[]8;;#251\251]8;;\][0m) displays headers and text content of the dot + or the specified messages. Whether and when PAGER[34m[]8;;#640\640]8;;\] [0mis used for dis‐ + play instead of dumping to the [4mscreen[34m[24m[]8;;#547\547]8;;\] [0mis controlled by [4mcrt[34m[24m[]8;;#408\408]8;;\][0m. + [1mmore[34m[22m[]8;;#237\237]8;;\] [0malways uses PAGER[34m[]8;;#640\640]8;;\][0m. [1mtop[34m[22m[]8;;#294\294]8;;\] [0mshows only the first + [4mtoplines[34m[24m[]8;;#609\609]8;;\] [0mof messages, even [4mtopsqueeze[34m[24m[]8;;#610\610]8;;\][0md. Setting + [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\] [0mcan improve real-life display experience, and + also see [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m. + + ? type :nu # new and unread + ? type @’time drift’ # that substring in Subject: + + By default all message headers are [1mtype[34m[22m[]8;;#297\297]8;;\][0md, but they may be + [1mretain[34m[22m[]8;;#265\265]8;;\][0med or [1mignore[34m[22m[]8;;#219\219]8;;\][0md for a variety of applications via + [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m, for example, to restrict what is [1mforward[34m[22m[]8;;#210\210]8;;\][0med: + ‘[1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0m[1mforward retain [4m[22mfrom[24m [4mto[24m [4mcc[24m [4msubject[24m’. In order to display + all header fields of a message regardless of currently active ignore or + retain lists use [1mType[34m[22m[]8;;#296\296]8;;\] [0mand [1mTop[34m[22m[]8;;#293\293]8;;\][0m; [1mShow [22mwill instead show raw mes‐ + sage content. Historically the global [4ms-nail.rc[34m[24m[]8;;#659\659]8;;\] [0mnot only adjusts + the list of displayed headers, but also sets [4mcrt[34m[24m[]8;;#408\408]8;;\][0m. + + When reading the [4minbox[34m[24m[]8;;#453\453]8;;\][0m, or when [1m-f[34m[22m[]8;;#68\68]8;;\] [0mor [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mwas given a + mailbox name prefixed with the modifier ‘%:’, turning it into a [4mprimary[0m + [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0m, read messages ([4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m) will be moved to + a [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\][0m, the users MBOX[34m[]8;;#638\638]8;;\] [0mfile, when the mailbox is + left; [4mhold[34m[24m[]8;;#446\446]8;;\] [0mdisables this automatic moving from a system- or primary- + to the secondary mailbox. Messages may of course be [1mmove[34m[22m[]8;;#235\235]8;;\][0md, whereas + [1mcopy[34m[22m[]8;;#169\169]8;;\] [0mkeeps the original message. [1mwrite[34m[22m[]8;;#309\309]8;;\] [0msaves selected message + parts. + + One may [1mreply[34m[22m[]8;;#261\261]8;;\] [0m‘r’ to the sender and all recipients (also placed in + ‘To:’ unless [4mrecipients-in-cc[34m[24m[]8;;#536\536]8;;\] [0mis set) of a message, or [1mReply[34m[22m[]8;;#259\259]8;;\][0m + ‘R’ exclusively to the sender. To comply with the sender’s desired reply + address the [4mquadoption[34m[24m[]8;;#349\349]8;;\][0ms [4mfollowup-to-honour[34m[24m[]8;;#431\431]8;;\] [0mand + [4mreply-to-honour[34m[24m[]8;;#543\543]8;;\] [0mshould usually be set. A special recipient massage + for [4mMailing[24m [4mlists[34m[24m[]8;;#11\11]8;;\] [0mis applied by [1mLreply[34m[22m[]8;;#222\222]8;;\] [0mand [1mLfollowup[34m[22m[]8;;#221\221]8;;\][0m. The + message being replied to can be [4mquote[34m[24m[]8;;#528\528]8;;\][0md (value defines style). + [1mforward[34m[22m[]8;;#210\210]8;;\][0ming a message includes the original message in the message + body instead. It is possible to [1mresend[34m[22m[]8;;#264\264]8;;\] [0mor [1mResend[34m[22m[]8;;#263\263]8;;\] [0mmessages, the + former only will add a series of ‘Resent-’ headers; different to newly + created messages editing is not possible and no copy will be saved in + [4mrecord[34m[24m[]8;;#537\537]8;;\] [0munless [4mrecord-resent[34m[24m[]8;;#539\539]8;;\] [0mis [1mset[34m[22m[]8;;#271\271]8;;\][0m. + + Messages can be [1mdelete[34m[22m[]8;;#176\176]8;;\][0m‘d’ and [1mundelete[34m[22m[]8;;#177\177]8;;\][0md. The S-nail session is + ended quickly via [1mexit[34m[22m[]8;;#195\195]8;;\] [0mor [1mxit[34m[22m[]8;;#311\311]8;;\][0m, a full program exit that in‐ + cludes mailbox state and line editor [4mhistory-file[34m[24m[]8;;#442\442]8;;\] [0mupdates among oth‐ + ers is performed by [1mquit[34m[22m[]8;;#252\252]8;;\][0m. + + [1mHTML mail and MIME attachments[22m]8;:id=10;#\]8;;\ + Messages with only a HTML part, or MIME (Multipurpose Internet Mail Ex‐ + tensions) alternative messages with only a useful HTML type part become + more and more common. And there are MIME attachments containing numerous + data types. No knowledge of those is necessary for saving message parts + via [1mwrite[34m[22m[]8;;#309\309]8;;\][0m, for other purposes a notion of MIME types is required. A + small set of types is built-in, onto which [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\] [0mare + added under [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\][0m. [1mmimetype[34m[22m[]8;;#227\227]8;;\] [0mcan create fur‐ + ther types, and dynamically manage the list. [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m + tries to address the faulty MIME part declarations of real life by possi‐ + bly providing better fitting MIME types. + + A simple HTML-to-text filter is [Option]ally ([4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mcontains + ‘,+filter-html-tagsoup,’) built-in, but other non-text MIME types cannot + be handled directly: handlers need to be registered that either convert + data to (re-)integratable plain text (called [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\] [0mmode), or + display it externally, for example in a graphical window: this latter + kind is not considered when messages are [1mtype[34m[22m[]8;;#297\297]8;;\][0md, but only by + [1mmimeview[34m[22m[]8;;#229\229]8;;\][0m. + + To install a handler for a MIME type an according [4mpipe-TYPE/SUBTYPE[34m[24m[]8;;#511\511]8;;\][0m + variable must be set, alternatively the higher-ranked per file extension + [4mpipe-EXTENSION[34m[24m[]8;;#510\510]8;;\] [0mcan be used. [Option] Standard mail user agent con‐ + figuration (RFC 1524) and [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\] [0mpreferably share MIME + handler knowledge in between many programs. [1mmimetype[34m[22m[]8;;#227\227]8;;\] [0mtype-markers + are inspected last. Except with [4mmime-alternative-favour-rich[34m[24m[]8;;#477\477]8;;\] [0mplain + text alternatives are used. + + The following example reintegrates HTML formatted by the text browsers + lynx(1)[34m[]8;:id=687;man:lynx(1)\687]8;;\] [0mor elinks(1)[34m[]8;:id=688;man:elinks(1)\688]8;;\][0m, registers a JSON MIME type handled as + plain text, and establishes a setting to open PDF parts in an external + viewer, asynchronously and with some other magic attached, like [4mCommand[0m + [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m: + + set noprompt # unset prompt for this early example + + if "$features" !% ,+filter-html-tagsoup, + #set pipe-text/html=’?* elinks -force-html -dump 1’ + set pipe-text/html=’?* lynx -stdin -dump -force_html’ + endif + + mimetype ?t application/json json + + set pipe-application/pdf=’?&=? \ + trap "rm -f \"${MAILX_FILENAME_TEMPORARY}\"" EXIT;\ + trap "trap \"\" INT QUIT TERM; exit 1" INT QUIT TERM;\ + mupdf "${MAILX_FILENAME_TEMPORARY}"’ + + define showhtml { + \local set mime-alternative-favour-rich pipe-text/html=?h? + \type "$@" + } + \commandalias html \\call showhtml + + [1mMailing lists[22m]8;:id=11;#\]8;;\ + Mailing lists can be flagged in the summary of [1mheaders[34m[22m[]8;;#214\214]8;;\] [0m(in + [4mheadline[34m[24m[]8;;#439\439]8;;\] [0mvia ‘%L’), and gain special treatment when sending mails: + [4mfollowup-to-honour[34m[24m[]8;;#431\431]8;;\] [0mensures ‘Mail-Followup-To:’ headers are honoured + when replying ([1mreply[34m[22m[]8;;#261\261]8;;\][0m, [1mfollowup[34m[22m[]8;;#207\207]8;;\][0m, [1mLreply[34m[22m[]8;;#222\222]8;;\][0m, [1mLfollowup[34m[22m[]8;;#221\221]8;;\][0m), + and [4mfollowup-to[34m[24m[]8;;#429\429]8;;\] [0mcreates this header when [1mmail[34m[22m[]8;;#224\224]8;;\][0ming messages with + a proper user setup ([4mfrom[34m[24m[]8;;#436\436]8;;\][0m, [4msender[34m[24m[]8;;#551\551]8;;\][0m); it may be created automati‐ + cally, for example when list-replying via [1mLreply[34m[22m[]8;;#222\222]8;;\] [0mor [1mLfollowup[34m[22m[]8;;#221\221]8;;\][0m, + when [1mfollowup[34m[22m[]8;;#207\207]8;;\] [0mor [1mreply[34m[22m[]8;;#261\261]8;;\] [0mis used and ‘Mail-Followup-To:’ is hon‐ + oured etc. + + [1mmlist[34m[22m[]8;;#230\230]8;;\] [0mand [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\] [0mmanage the correlation of email addresses + and mailing lists. With the [Option]al regular expression support ad‐ + dresses ]8;:id=92;#\]8;;\which contain any of the magic regular expression characters + (‘ˆ[*+?|$’; see re_format(7)[34m[]8;:id=689;man:re_format(7)\689]8;;\] [0mor regex(7)[34m[]8;:id=690;man:regex(7)\690]8;;\][0m, dependent on host + system) can then match many addresses. It is not possible to escape the + “magic”: in order to match special characters as-is, bracket expressions + must be used, for example ‘[1msearch[34m[22m[]8;;#269\269]8;;\] [0m@subject@’[[]open bracket’’. + + ? set followup-to followup-to-honour=ask-yes \ + reply-to-honour=ask-yes + ? mlist a1@b1.c1 a2@b2.c2 ’.*@lists\.c3$’ + ? mlsubscribe a4@b4.c4 exact@lists.c3 + + Known and subscribed lists differ in that for the latter user addresses + are not included in generated ‘Mail-Followup-To:’. There are exceptions, + for example if multiple lists are addressed and not all have the sub‐ + scription attribute. When replying to a message its list address + (‘List-Post:’ header) is temporarily treated like a known [1mmlist[34m[22m[]8;;#230\230]8;;\][0m; de‐ + pendent on [4mreply-to-honour[34m[24m[]8;;#543\543]8;;\] [0man existing ‘Reply-To:’ is used instead + (if it is a single address on the same domain as ‘List-Post:’) in order + to accept a list administrator’s wish that is supposed to have been mani‐ + fested like that. + + For convenience and compatibility with mail programs that do not honour + the non-standard M-F-T an automatic user entry in ‘Cc:’ can be created + via [4mfollowup-to-add-cc[34m[24m[]8;;#430\430]8;;\] [0mwhenever the user is placed in + ‘Mail-Followup-To:’, but is not a regular recipient of the message. + [4mreply-to-swap-in[34m[24m[]8;;#544\544]8;;\] [0mtries to deal with the address rewriting that many + mailing-lists nowadays perform to work around DMARC etc. standard imposed + problems. + + [1mCharacter sets[22m]8;:id=12;#\]8;;\ + [Option] The user’s locale is detected by looking at the LC_ALL[34m[]8;;#628\628]8;;\] [0m(see + also LC_CTYPE[34m[]8;;#629\629]8;;\][0m, LANG[34m[]8;;#630\630]8;;\][0m) [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0mvariable, deriving and + storing the according character set in [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m: this character + set is targeted when displaying data, and any user input data is expected + to be in it, too. + + When creating messages their character input data is classified. 7-bit + clean text data and attachments will be classified as [4mcharset-7bit[34m[24m[]8;;#396\396]8;;\][0m. + [Option]ally 8-bit data will be converted into members of + [4msendcharsets[34m[24m[]8;;#549\549]8;;\] [0muntil a character set conversion succeeds. + [4mcharset-8bit[34m[24m[]8;;#397\397]8;;\] [0mis the implied default last member of this list. If no + 8-bit character set is capable to represent input data, no message will + be sent, and its text will optionally be [4msave[34m[24m[]8;;#546\546]8;;\][0md in DEAD[34m[]8;;#625\625]8;;\][0m. If + that is not acceptable, for example in scripts, [4mmime-force-sendout[34m[24m[]8;;#480\480]8;;\][0m + forces sending of non-convertible data as ‘application/octet-stream’ + classified binary content instead: like this recipients still have the + option to inspect message content (for example via + [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m). + + If the [Option]al character set conversion is not available + ([4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mmisses ‘,+iconv,’), [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mis the only supported + character set for non 7-bit clean data, and it is simply assumed it can + be used to exchange 8-bit messages. + + [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mmay also be given an explicit value to send mail in a + completely “faked” locale, for example generate and send 8-bit UTF-8 in‐ + put data in a pure 7-bit US-ASCII ‘LC_ALL=C’ [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0m(as shown in + [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m). Unfortunate: due to lack + of programming interfaces reading mail will not truly work here: whereas + [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mmight be addressable, any output will be made safely + printable, as via [1mvexpr[34m[22m[]8;;#306\306]8;;\] [0m[1mmakeprint[22m, according to the actual locale, + which is not affected by [4mttycharset.[0m + + Classifying 7-bit clean data as [4mcharset-7bit[34m[24m[]8;;#396\396]8;;\] [0mis a problem if the in‐ + put character set ([4mttycharset[34m[24m[]8;;#611\611]8;;\][0m) is a multibyte character set that is + itself 7-bit clean. For example, the Japanese character set ISO-2022-JP + is, but is capable to encode the rich set of Japanese Kanji, Hiragana and + Katakana characters: in order to notify recipients of this character set + the mail message must be MIME encoded so that the character set + ISO-2022-JP can be advertised, otherwise an invalid email message would + result! To achieve this, the variable [4mcharset-7bit[34m[24m[]8;;#396\396]8;;\] [0mcan be set to + ISO-2022-JP. (Today a better approach regarding email is the usage of + UTF-8, which uses 8-bit bytes for non-US-ASCII data.) + + When replying to a message and [4mreply-in-same-charset[34m[24m[]8;;#540\540]8;;\] [0mis set the + character set of the message being replied to is tried first as a target + character set (still being a subject of [1mcharsetalias[34m[22m[]8;;#159\159]8;;\] [0mfiltering, how‐ + ever). Another opportunity is [4msendcharsets-else-ttycharset[34m[24m[]8;;#550\550]8;;\] [0mto re‐ + flect the user’s locale automatically, it will treat [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mas + an implied member of (an unset) [4msendcharsets[34m[24m[]8;;#549\549]8;;\][0m. + + [Option] When reading messages, text data is converted into + [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mas necessary. Unprintable characters and invalid byte + sequences are detected and replaced by substitution characters. Charac‐ + ter set mappings for source character sets can be established with + [1mcharsetalias[34m[22m[]8;;#159\159]8;;\][0m, which may be handy to work around faulty or incomplete + character set catalogues (one could for example add a missing LATIN1 to + ISO-8859-1 mapping), or to enforce treatment of one character set as an‐ + other one (“interpret LATIN1 as CP1252”). Also see + [4mcharset-unknown-8bit[34m[24m[]8;;#398\398]8;;\] [0mfor another hairy aspect of message interpreta‐ + tion. + + In general, if a message saying “cannot convert from a to b” appears, ei‐ + ther some characters are not appropriate for the currently selected (ter‐ + minal) character set, or the needed conversion is not supported by the + system. In the first case, it is necessary to set an appropriate + LC_ALL[34m[]8;;#628\628]8;;\] [0mlocale and/or the variable [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. The best results + are usually achieved when running in a UTF-8 locale on a UTF-8 capable + terminal, in which case the full Unicode spectrum of characters is avail‐ + able. In this setup characters from various countries can be displayed, + while it is still possible to use more simple character sets for sending + to retain maximum compatibility with older mail clients. + + On the other hand the POSIX standard defines a locale-independent 7-bit + “portable character set” that should be used when overall portability is + an issue, the even more restricted subset named “portable filename + character set” consists of A-Z, a-z, 0-9, period ‘.’, underscore ‘_’ and + hyphen-minus ‘-’. + + [1mMessage states[22m]8;:id=13;#\]8;;\ + Several message states are distinguished. The state of a message is + shown by its [4mheadline[34m[24m[]8;;#439\439]8;;\] [0min the summary of [1mheaders[34m[22m[]8;;#214\214]8;;\][0m, and [4mSpecifying[0m + [4mmessages[34m[24m[]8;;#14\14]8;;\] [0mby their state is possible. + + ‘new’ Neither read nor moved to another state. Retained even in a + [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0m. + + ‘unread’ Neither read nor moved to another state, but already present + when the [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mwas opened. Retained even in a [4mprimary[0m + [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0m. + + ‘read’ Processed by one of [1m˜f[34m[22m[]8;;#330\330]8;;\][0m, [1m˜m[34m[22m[]8;;#336\336]8;;\][0m, [1m˜F[34m[22m[]8;;#329\329]8;;\][0m, [1m˜M[34m[22m[]8;;#335\335]8;;\][0m, + [1mcopy[34m[22m[]8;;#169\169]8;;\][0m, [1mmbox[34m[22m[]8;;#226\226]8;;\][0m, [1mnext[34m[22m[]8;;#241\241]8;;\][0m, [1mpipe[34m[22m[]8;;#248\248]8;;\][0m, [1mPrint[34m[22m[]8;;#250\250]8;;\][0m, + [1mprint[34m[22m[]8;;#251\251]8;;\][0m, [1mtop[34m[22m[]8;;#294\294]8;;\][0m, [1mType[34m[22m[]8;;#296\296]8;;\][0m, [1mtype[34m[22m[]8;;#297\297]8;;\][0m, [1mundelete[34m[22m[]8;;#177\177]8;;\][0m. + [1mdp[34m[22m[]8;;#180\180]8;;\] [0mand [1mdt[34m[22m[]8;;#181\181]8;;\] [0mtry to automatically “step” and [1mtype[34m[22m[]8;;#297\297]8;;\][0m + the “next” logical message, and may thus mark multiple messages + as read, [1mdelete[34m[22m[]8;;#176\176]8;;\] [0mwill do so if the internal variable + [4mautoprint[34m[24m[]8;;#381\381]8;;\] [0mis set. + + Except when left via [1mexit[34m[22m[]8;;#195\195]8;;\][0m, ‘read’ messages of a [4mprimary[0m + [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mare saved to the [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\][0m + MBOX[34m[]8;;#638\638]8;;\] [0munless [4mhold[34m[24m[]8;;#446\446]8;;\] [0mit set. + + ‘deleted’ Processed by one of [1mdelete[34m[22m[]8;;#176\176]8;;\][0m, [1mdp[34m[22m[]8;;#180\180]8;;\] [0mand [1mdt[34m[22m[]8;;#181\181]8;;\][0m. It may + be [1mundelete[34m[22m[]8;;#177\177]8;;\][0md, but other than that disappeared. + + ‘preserved’ Marked via [1mpreserve[34m[22m[]8;;#249\249]8;;\][0m, and it will be retained. + + ‘saved’ Processed by [1msave[34m[22m[]8;;#268\268]8;;\] [0mor [1mwrite[34m[22m[]8;;#309\309]8;;\][0m. + + Except when left via [1mexit[34m[22m[]8;;#195\195]8;;\][0m, ‘saved’ messages of a [4mprimary[0m + [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mare deleted; they are instead saved to the + [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\] [0mif [4mkeepsave[34m[24m[]8;;#457\457]8;;\] [0mis set. + + In addition to these states, otherwise meaningless flags that may be set + exist; they are addressable when [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. They are per‐ + sistently saved with messages, and are portable between a set of widely + used MUAs: + + [1manswered[34m[22m[]8;;#151\151]8;;\] [0mMark as having been answered. + + [1mdraft[34m[22m[]8;;#183\183]8;;\] [0mMark as being a draft. + + [1mflag[34m[22m[]8;;#200\200]8;;\] [0mMark for special attention. + + [1mSpecifying messages[22m]8;:id=14;#\]8;;\ + [Only new quoting rules]Some [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0mtake [4mMessage[24m [4mlist[0m + [4marguments[34m[24m[]8;;#26\26]8;;\][0m, for example [1mcopy[34m[22m[]8;;#169\169]8;;\][0m, [1mdelete[34m[22m[]8;;#176\176]8;;\][0m, [1msearch[34m[22m[]8;;#269\269]8;;\][0m, and + [1mtype[34m[22m[]8;;#297\297]8;;\][0m, and can perform actions on a number of messages at once. + + For example, ‘delete 1 2’ deletes the messages 1 and 2 (shall they are + valid), whereas ‘delete 1-5’ will delete messages 1 through 5. In sorted + mode ([1msort[34m[22m[]8;;#282\282]8;;\][0m, [4mautosort[34m[24m[]8;;#382\382]8;;\][0m) ‘delete 1-5’ will delete all messages + that are located in between (and including) messages 1 through 5 in the + sorted order, as shown by [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. + + Errors that occur are tracked by the [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0m[4m![34m[24m[]8;;#351\351]8;;\][0m, + [4mˆERR[34m[24m[]8;;#356\356]8;;\] [0mand companions, as well as the command exit status [4m?[34m[24m[]8;;#350\350]8;;\][0m. For + example [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-BADMSG when requesting an invalid message, + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOMSG if no applicable message can be found, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-CANCELED + for missing informational data (mostly thread-related). [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL + for invalid syntax as well as [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-IO for input/output errors can + happen. + + [4m.[24m The current message, the so-called “dot”. Many commands use it + if no specification was given. + + [4m;[24m The previously current message; needs to be quoted. + + [4m,[24m The dot’s parent message. This is the message with the Mes‐ + sage-ID given in the ‘In-Reply-To:’ field, or the last entry of + the ‘References:’ field of the current message. + + [4m-[24m The previous undeleted message, or the previous deleted one for + [1mundelete[34m[22m[]8;;#177\177]8;;\][0m. In [1msort[34m[22m[]8;;#282\282]8;;\][0med mode, the previous such message + in the according order. + + [4m+[24m The next undeleted message, or the next deleted one for + [1mundelete[34m[22m[]8;;#177\177]8;;\][0m. In [1msort[34m[22m[]8;;#282\282]8;;\][0med mode, the next such message in + the according order. + + [4mˆ[24m The first undeleted message, or the first deleted one for + [1mundelete[34m[22m[]8;;#177\177]8;;\][0m. In [1msort[34m[22m[]8;;#282\282]8;;\][0med mode, the first such message in + the according order. + + [4m$[24m The last message. In [1msort[34m[22m[]8;;#282\282]8;;\][0med mode, the last such one in + the according order. Needs to be quoted. + + [4m&[24m[[4mx[24m] Selects the message addressed with [4mx[24m in threaded [1msort[34m[22m[]8;;#282\282]8;;\][0m + mode, where [4mx[24m is any other message specification, and all mes‐ + sages from the thread that begins at it. Otherwise identical + to [4mx[24m. Omitting [4mx[24m equals using dot. + + [4m*[24m All messages. + + [4m‘[24m All messages matched by the [4mMessage[24m [4mlist[24m [4marguments[34m[24m[]8;;#26\26]8;;\] [0mof the + previous command; needs to be quoted. (Tip: to read all new + messages ‘search :n’ them, then successively type ‘‘’ to invoke + the default command [1mnext[34m[22m[]8;;#241\241]8;;\][0m; [4mshowlast[34m[24m[]8;;#553\553]8;;\] [0mmust be set for + this to work.) + + [4mx-y[24m An inclusive range of message numbers. Selectors that may also + be used as endpoints include any of ‘.;-+ˆ$’. + + [4maddress[24m Case-insensitive “any substring matches” search for ‘From:’ + fields. It matches addresses even if [4mshowname[34m[24m[]8;;#554\554]8;;\] [0mis set (and + POSIX says “any address shown in a header summary shall be + matchable in this form”); However, if the [4mallnet[34m[24m[]8;;#368\368]8;;\] [0mvariable + is set, only the local part of the address is evaluated, not + ignoring case, and [4mshowname[34m[24m[]8;;#554\554]8;;\] [0mis completely ignored. For + finer control and match boundaries use ‘@’ instead. + + [4m/string[24m All messages that contain [4mstring[24m in the subject field (case ig‐ + nored according to locale). Also see [4msearchheaders[34m[24m[]8;;#548\548]8;;\][0m. An + empty [4mstring[24m equals the last one used by this specification. + + [[4m@name-list[24m][4m@expr[0m + A case-insensitive search [4mexpr[24mession. If [4mexpr[24m contains a com‐ + mercial at ‘@’ [4mname-list[24m is effectively non-optional, but can + be empty. [4mname-list[24m specifies a comma-separated list of header + fields, without it only the ‘Subject:’ is searched. [Option] + [4mexpr[24m and [4mname-list[24m are interpreted as extended regular expres‐ + sions if they contain [4mmagic[24m [4mregular[24m [4mexpression[24m [4mcharacters[34m[24m[]8;;#92\92]8;;\][0m. + + An empty search [4mexpr[24mession tests for existence of the given + header fields (compare [1mdigmsg[34m[22m[]8;;#178\178]8;;\][0m). Some header fields may be + abbreviated: ‘a’, ‘f’, ‘t’, ‘c’, ‘b’ and ‘s’ will match + ‘Author:’, ‘From:’, ‘To:’, ‘Cc:’, ‘Bcc:’ and ‘Subject:’, re‐ + spectively, and case-insensitively. But for the existence test + ‘Author’ indeed means all of ‘Author:’, ‘From:’, ‘Sender:’. + + The special header fields ‘header’ or ‘<’ can be used to search + in (all of) the header(s), and ‘body’ or ‘>’ and ‘text’ or ‘=’ + will perform full text searches – whereas the former searches + only the body, the latter also searches the message header + ([v15 behaviour may differ] this mode yet brute force searches + over the entire decoded content of messages, including adminis‐ + trativa strings). + + Even with regular expression support it is almost impossible to + safely match only a specific address domain. To request that + header content is treated as a list of addresses, and to strip + those down to the plain email address which the [4mexpr[24m is to be + matched against, prefix the effective [4mname-list[24m with a tilde + ‘˜’: + + ’@˜f,c@@a\.safe\.domain\.match$’ + + [4m:c[24m All messages of state or with matching condition ‘c’, where ‘c’ + is one or multiple of the following colon modifiers: + + [4ma[24m [1manswered[34m[22m[]8;;#151\151]8;;\] [0mmessages ([4mmarkanswered[34m[24m[]8;;#468\468]8;;\][0m). + [4md[24m ‘deleted’ messages (only for [1mundelete[34m[22m[]8;;#177\177]8;;\] [0mand + [1mfrom[34m[22m[]8;;#211\211]8;;\][0m). + [4mf[24m [1mflag[34m[22m[]8;;#200\200]8;;\][0mged messages. + [4mL[24m Messages with recipients that match [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0md + addresses. + [4ml[24m Messages with recipients that match [1mmlist[34m[22m[]8;;#230\230]8;;\][0med ad‐ + dresses. + [4mn[24m ‘new’ messages. + [4mo[24m Old messages (any not in state ‘read’ or ‘new’). + [4mr[24m ‘read’ messages. + [4mS[24m [Option] Messages with unsure spam classification + (see [4mHandling[24m [4mspam[34m[24m[]8;;#20\20]8;;\][0m). + [4ms[24m [Option] Messages classified as spam. + [4mt[24m Messages marked as [1mdraft[34m[22m[]8;;#183\183]8;;\][0m. + [4mu[24m ‘unread’ messages. + + [Option] IMAP-style SEARCH expressions may be used. These consist of + keywords and criterions, and because [4mMessage[24m [4mlist[24m [4marguments[34m[24m[]8;;#26\26]8;;\] [0mare split + into tokens according to [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mit is necessary + to quote the entire IMAP search expression in order to ensure that it re‐ + mains a single token. + + This addressing mode is available with all types of mailbox [1mfolder[34m[22m[]8;;#203\203]8;;\][0ms, + a local search is performed as necessary. Strings must be enclosed by + double quotation marks ‘"’ in their entirety if they contain whitespace + or parentheses; within the quotes, only reverse solidus ‘\’ is recognized + as an escape character. All string searches are case-insensitive. When + the description indicates that the “envelope” representation of an ad‐ + dress field is used, it means the search string is checked against both a + list constructed as + + ’("name" "source" "local-part" "domain-part")’ + + for each address, and the addresses without real names from the respec‐ + tive header field. These search expressions can be nested using paren‐ + theses, see below for examples. + + ([4mcriterion[24m) + All messages that satisfy the given [4mcriterion[24m. + ([4mcriterion1[24m [4mcriterion2[24m [4m...[24m [4mcriterionN[24m) + All messages that satisfy all of the given criteria. + ([4mor[24m [4mcriterion1[24m [4mcriterion2[24m) + All messages that satisfy either [4mcriterion1[24m or [4mcriterion2[24m, or + both. To connect more than two criteria using ‘or’ specifica‐ + tions have to be nested using additional parentheses, as with + ‘(or a (or b c))’, since ‘(or a b c)’ really means ‘((a or b) + and c)’. For a simple ‘or’ operation of independent criteria + on the lowest nesting level, it is possible to achieve similar + effects by using three separate criteria, as with ‘(a) (b) + (c)’. + ([4mnot[24m [4mcriterion[24m) + All messages that do not satisfy [4mcriterion[24m. + ([4mbcc[24m [4m"string"[24m) + All messages that contain [4mstring[24m in the envelope representation + of the ‘Bcc:’ field. + ([4mcc[24m [4m"string"[24m) + All messages that contain [4mstring[24m in the envelope representation + of the ‘Cc:’ field. + ([4mfrom[24m [4m"string"[24m) + All messages that contain [4mstring[24m in the envelope representation + of the ‘From:’ field. + ([4msubject[24m [4m"string"[24m) + All messages that contain [4mstring[24m in the ‘Subject:’ field. + ([4mto[24m [4m"string"[24m) + All messages that contain [4mstring[24m in the envelope representation + of the ‘To:’ field. + ([4mheader[24m [4mname[24m [4m"string"[24m) + All messages that contain [4mstring[24m in the specified ‘Name:’ + field. + ([4mbody[24m [4m"string"[24m) + All messages that contain [4mstring[24m in their body. + ([4mtext[24m [4m"string"[24m) + All messages that contain [4mstring[24m in their header or body. + ([4mlarger[24m [4msize[24m) + All messages that are larger than [4msize[24m (in bytes). + ([4msmaller[24m [4msize[24m) + All messages that are smaller than [4msize[24m (in bytes). + ([4mbefore[24m [4mdate[24m) + All messages that were received before [4mdate[24m, which must be in + the form ‘d[d]-mon-yyyy’, where ‘d’ denotes the day of the + month as one or two digits, ‘mon’ is the name of the month – + one of ‘Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec’, and + ‘yyyy’ is the year as four digits, for example ‘28-Dec-2012’. + ([4mon[24m [4mdate[24m) + All messages that were received on the specified date. + ([4msince[24m [4mdate[24m) + All messages that were received since the specified date. + ([4msentbefore[24m [4mdate[24m) + All messages that were sent on the specified date. + ([4msenton[24m [4mdate[24m) + All messages that were sent on the specified date. + ([4msentsince[24m [4mdate[24m) + All messages that were sent since the specified date. + [4m()[24m The same criterion as for the previous search. This specifica‐ + tion cannot be used as part of another criterion. If the pre‐ + vious command line contained more than one independent crite‐ + rion then the last of those criteria is used. + + [1mOn terminal control and line editor[22m]8;:id=15;#\]8;;\ + [Option] Terminal control depends on the standard UNIX libraries Termcap + Access Library (libtermcap, -ltermcap) or Terminal Information Library + (libterminfo, -lterminfo), and enhances or enables interactive usage as‐ + pects, like [4mColoured[24m [4mdisplay[34m[24m[]8;;#16\16]8;;\][0m, ]8;:id=93;#\]8;;\and understanding of cursor and func‐ + tion keys for the Mailx-Line-Editor MLE for the TERM[34m[]8;;#646\646]8;;\][0minal found in + the [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\][0m. Library interaction can be disabled via + [4mtermcap-disable[34m[24m[]8;;#594\594]8;;\][0m, whereas [4mtermcap[34m[24m[]8;;#592\592]8;;\] [0mis always inspected to learn + about terminal capabilities. + + [Option] The built-in Mailx-Line-Editor (MLE) should work in all environ‐ + ments which comply to the ISO C standard ISO/IEC 9899/AMD1:1995 + (“ISO C90, Amendment 1”), and supports wide glyphs if possible (necessary + functionality was removed from ISO C, but is included in X/Open + Portability Guide Issue 4 (“XPG4”)). It offers some [1mcolour[34m[22m[]8;;#164\164]8;;\] [0msupport, + and is tunable to an extend via [4mline-editor-config[34m[24m[]8;;#458\458]8;;\][0m. Especially + without terminal control some keys may be problematic, corrections via + [4mtermcap[34m[24m[]8;;#592\592]8;;\] [0mhelp – an example is shown in the [4mFAQ[34m[24m[]8;;#43\43]8;;\] [0mentry [4mNot[0m + [4m"defunctional",[24m [4mbut[24m [4mthe[24m [4meditor[24m [4mkey[24m [4mdoes[24m [4mnot[24m [4mwork[34m[24m[]8;;#47\47]8;;\][0m. + [4mline-editor-disable[34m[24m[]8;;#460\460]8;;\] [0mcontrols usage of the line editor. + + [Option] Input from line editor prompts can be saved in a list of search‐ + able and expandable [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mentries. Any amount of leading white‐ + space prevents this saving, and the macro hook [4mon-history-addition[34m[24m[]8;;#500\500]8;;\][0m + allows further user control. Aspects of history like size and persis‐ + tancy can be configured via [4mhistory-file[34m[24m[]8;;#442\442]8;;\][0m, [4mhistory-gabby[34m[24m[]8;;#443\443]8;;\][0m, + [4mhistory-gabby-persist[34m[24m[]8;;#444\444]8;;\] [0mand [4mhistory-size[34m[24m[]8;;#445\445]8;;\][0m. + + The MLE supports a set of editing and control commands. By default (as) + many (as possible) of these will be assigned to a set of single-letter + control codes. These should work on any terminal, and can be generated + by holding the “control” key while simultaneously pressing the key of de‐ + sire, for example ‘control-D’. + + [Option] Custom key [1mbind[34m[22m[]8;;#153\153]8;;\][0mings that map MLE or other commands to key + sequences can be established. If so, the MLE will itself use [1mbind[34m[22m[]8;;#153\153]8;;\][0m + to install the built-in set from above, plus, unless prevented via + [4mline-editor-no-defaults[34m[24m[]8;;#461\461]8;;\][0m. + + In the following list keys are shown via [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m + and MLE command names in parenthesis. + + ‘\cA’ Go to the start of the line ([1mmle-go-home[22m]8;:id=94;#\]8;;\). + ‘\cB’ Move the cursor backward one character ([1mmle-go-bwd[22m]8;:id=95;#\]8;;\). + ‘\cC’ raise(3)[34m[]8;:id=691;man:raise(3)\691]8;;\] [0m‘SIGINT’ ([1mmle-raise-int[22m]8;:id=96;#\]8;;\). + ‘\cD’ Forward delete the character under the cursor; [1mquit[34m[22m[]8;;#252\252]8;;\][0ms if + used on an empty line unless [4mignoreeof[34m[24m[]8;;#452\452]8;;\] [0mis set + ([1mmle-del-fwd[22m]8;:id=97;#\]8;;\). + ‘\cE’ Go to the end of the line ([1mmle-go-end[22m]8;:id=98;#\]8;;\). + ‘\cF’ Move the cursor forward one character ([1mmle-go-fwd[22m]8;:id=99;#\]8;;\). + ‘\cG’ Cancel current operation, full reset. An active history search + or tabulator expansion is reset first, restoring former line + content: a second invocation is needed for a full reset, then. + ([1mmle-reset[22m]8;:id=100;#\]8;;\). + ‘\cH’ Backspace: backward delete one character ([1mmle-del-bwd[22m]8;:id=101;#\]8;;\). + ‘\cI’ [Only new quoting rules]Horizontal tabulator: try to expand the + word before the cursor, supporting the usual [4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0m([1mmle-complete[22m]8;:id=102;#\]8;;\; affected by + [1mmle-quote-rndtrip[34m[22m[]8;;#108\108]8;;\] [0mand [4mline-editor-cpl-word-breaks[34m[24m[]8;;#459\459]8;;\][0m). + ‘\cJ’ Newline: complete input line ([1mmle-commit[22m]8;:id=103;#\]8;;\). + ‘\cK’ Cut all characters from the cursor to the end of the line + ([1mmle-snarf-end[22m]8;:id=104;#\]8;;\). + ‘\cL’ Repaint the line ([1mmle-repaint[22m]8;:id=105;#\]8;;\). + ‘\cN’ [Option] Go to the next history entry ([1mmle-hist-fwd[22m]8;:id=106;#\]8;;\). + ‘\cO’ ([Option]ally context-dependent) Invokes the command [1mdt[34m[22m[]8;;#181\181]8;;\][0m. + ‘\cP’ [Option] Go to the previous history entry ([1mmle-hist-bwd[22m]8;:id=107;#\]8;;\). + ‘\cQ’ Toggle roundtrip mode shell quotes, where produced, on and off + ([1mmle-quote-rndtrip[22m]8;:id=108;#\]8;;\). The default is configurable via + [4mline-editor-config[34m[24m[]8;;#458\458]8;;\][0m; also see [1mshcodec[34m[22m[]8;;#274\274]8;;\][0m. + ‘\cR’ [Option] Complete line content from (the remaining) older his‐ + tory entries ([1mmle-hist-srch-bwd[22m]8;:id=109;#\]8;;\). Search behaviour is config‐ + urable via [4mline-editor-config[34m[24m[]8;;#458\458]8;;\][0m. + ‘\cS’ [Option] Complete line content from (the remaining) newer his‐ + tory entries ([1mmle-hist-srch-fwd[22m]8;:id=110;#\]8;;\). Search behaviour is config‐ + urable via [4mline-editor-config[34m[24m[]8;;#458\458]8;;\][0m. + ‘\cT’ Paste the snarf buffer ([1mmle-paste[22m]8;:id=111;#\]8;;\). + ‘\cU’ The same as ‘\cA’ followed by ‘\cK’ ([1mmle-snarf-line[22m]8;:id=112;#\]8;;\). + ‘\cV’ Prompts for a Unicode character (hexadecimal number without + prefix, see [4mnumber[24m [4msyntax[24m [4mrules[34m[24m[]8;;#135\135]8;;\][0m) to be inserted + ([1mmle-prompt-char[22m]8;:id=113;#\]8;;\). Note this needs to be assigned to a single- + letter control code in order to become recognized and executed + during input of a key-sequence (only three single-letter con‐ + trol codes can be used for that shortcut purpose); this control + code is special-treated, then, and cannot be part of any other + sequence (because it will trigger the [1mmle-prompt-char [22mfunction + immediately). + ‘\cW’ Cut the characters from the one preceding the cursor to the + preceding word boundary ([1mmle-snarf-word-bwd[22m]8;:id=114;#\]8;;\). + ‘\cX’ Move the cursor forward one word boundary ([1mmle-go-word-fwd[22m]8;:id=115;#\]8;;\). + ‘\cY’ Move the cursor backward one word boundary ([1mmle-go-word-bwd[22m]8;:id=116;#\]8;;\). + ‘\cZ’ raise(3)[34m[]8;:id=692;man:raise(3)\692]8;;\] [0m‘SIGTSTP’ ([1mmle-raise-tstp[22m]8;:id=117;#\]8;;\). + ‘\c[’ Escape: reset a possibly used multibyte character input state + machine and [Option]ally a lingering, incomplete key binding + ([1mmle-cancel[22m]8;:id=118;#\]8;;\). Note this needs to be assigned to a single-let‐ + ter control code in order to become recognized and executed + during input of a key-sequence (only three single-letter con‐ + trol codes can be used for that shortcut purpose). The control + code may also be part of a multi-byte sequence, but if a se‐ + quence is active and the very control code is currently also an + expected input, then the active sequence takes precedence and + will consume the control code. + ‘\c\’ ([Option]ally context-dependent) Invokes the command ‘[1mz[34m[22m[]8;;#312\312]8;;\][0m+’. + ‘\c]’ ([Option]ally context-dependent) Invokes the command ‘[1mz[34m[22m[]8;;#312\312]8;;\][0m$’. + ‘\cˆ’ ([Option]ally context-dependent) Invokes the command ‘[1mz[34m[22m[]8;;#312\312]8;;\][0m0’. + ‘\c_’ Cut the characters from the one after the cursor to the suc‐ + ceeding word boundary ([1mmle-snarf-word-fwd[22m]8;:id=119;#\]8;;\). + ‘\c?’ Backspace: [1mmle-del-bwd[34m[22m[]8;;#101\101]8;;\][0m. + – [1mmle-bell[22m]8;:id=120;#\]8;;\: ring the audible bell. + – [Option] [1mmle-clear-screen[22m]8;:id=121;#\]8;;\: move the cursor home and clear the + screen. + – [1mmle-fullreset[22m]8;:id=122;#\]8;;\: different to [1mmle-reset[34m[22m[]8;;#100\100]8;;\] [0mthis will immedi‐ + ately reset a possibly active search etc. + – [1mmle-go-screen-bwd[22m]8;:id=123;#\]8;;\: move the cursor backward one screen width. + – [1mmle-go-screen-fwd[22m]8;:id=124;#\]8;;\: move the cursor forward one screen width. + – [1mmle-raise-quit:[22m]8;:id=125;#\]8;;\ raise(3)[34m[]8;:id=693;man:raise(3)\693]8;;\] [0m‘SIGQUIT’. + + [1mColoured display[22m]8;:id=16;#\]8;;\ + [Option] Colours and font attributes through ANSI aka ISO 6429 SGR (se‐ + lect graphic rendition) escape sequences solely depend upon capabilities + of the TERM[34m[]8;;#646\646]8;;\][0minal (see [4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m), and + are configurable via [1mcolour[34m[22m[]8;;#164\164]8;;\] [0mand [1muncolour[34m[22m[]8;;#165\165]8;;\][0m. It may be necessary + to pass special command line options to make the PAGER[34m[]8;;#640\640]8;;\] [0minterpret the + escape sequences correctly. [4mcolour-disable[34m[24m[]8;;#400\400]8;;\] [0mcontrols usage of estab‐ + lished colour mappings. + + Colour setup could be conditionalized on interactive mode via [1mif[34m[22m[]8;;#218\218]8;;\][0m + (‘terminal’ indeed means “interactive”): + + if terminal && "$features" =% ,+colour, + colour iso view-msginfo ft=bold,fg=green + colour iso view-header ft=bold,fg=red (from|subject) # regex + colour iso view-header fg=red + + uncolour iso view-header from,subject + colour iso view-header ft=bold,fg=magenta,bg=cyan + colour 256 view-header ft=bold,fg=208,bg=230 "subject,from" + colour mono view-header ft=bold + colour mono view-header ft=bold,ft=reverse subject,from + endif + + [1mSigned and encrypted messages with S/MIME[22m]8;:id=17;#\]8;;\ + [Option] S/MIME provides two central mechanisms: message signing and mes‐ + sage encryption. Signing allows recipients to verify the message sender, + and message encryption provides end-to-end security that reveals the + clear text of a message only to the sender and the recipient. + + A message is signed with a private key. This adds some data to the regu‐ + lar content which can be used to verify it was sent using a valid cer‐ + tificate, that the sender address is covered by the certificate, and that + the content has not been altered. A signed message is received as clear + text and can be handled without restrictions. + + Encryption, in contrast, uses a public encryption key to make the message + text invisible for all people except those who have access to a secret + decryption key. The public encryption key must have been retrieved by + other means, for example from previous communication, from securely vis‐ + ited web sites, from public key directories, etc. Because of the public‐ + ity messages should be signed before they become encrypted. + + A central concept of S/MIME are certification authorities (CAs). These + are trusted institutions which issue certificates that correlate a user’s + private decryption and signing key (and its public variant) with the CA’s + own by means of a certificate request. This makes it cryptographically + possible to verify the key correlation of a CA and a user: verification + will succeed if a CA certificate is found that is a(n in)direct signer of + (a) presented user certificate(s). + + A set of CA certificates is usually available from the distributor of the + operating system, or comes shipped with the used cryptographical library: + reasonable security for S/MIME on the Internet is provided if the source + that provides the set is trusted. A certificate cannot be more secure + than the method its CA certificate has been retrieved with. A personal + set of trusted certificates can be specified via [4msmime-ca-file[34m[24m[]8;;#560\560]8;;\][0m + and/or (with special preparation) [4msmime-ca-dir[34m[24m[]8;;#559\559]8;;\][0m. Setting + [4msmime-ca-no-defaults[34m[24m[]8;;#562\562]8;;\] [0mdisables (additional) usage of the default cer‐ + tificate set. + + The trusted set of certificates is used by the command [1mverify[34m[22m[]8;;#304\304]8;;\] [0mto en‐ + sure the given S/MIME message(s) can be trusted. If so, verified sender + certificates that were embedded in signed messages can be saved locally + with [1mcertsave[34m[22m[]8;;#158\158]8;;\][0m, and henceforth be used to encrypt further communica‐ + tion: + + ? certsave FILENAME + ? set smime-encrypt-USER@HOST=FILENAME \ + smime-cipher-USER@HOST=AES256 + + To sign outgoing messages a personal S/MIME certificate is required. + [4mS/MIME[24m [4mstep[24m [4mby[24m [4mstep[34m[24m[]8;;#41\41]8;;\] [0mshows examplarily how a personal S/MIME certifi‐ + cate can be obtained. In general, if the private key plus certificate + “pair” is available, all that needs to be done is to set some variables, + in particular [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\][0m: + + ? set smime-sign-cert=myname@exam.ple.paired \ + smime-sign-digest=SHA512 \ + smime-sign from=myname@exam.ple + + Variables of interest for S/MIME in general are [4msmime-ca-dir[34m[24m[]8;;#559\559]8;;\][0m, + [4msmime-ca-file[34m[24m[]8;;#560\560]8;;\][0m, [4msmime-ca-flags[34m[24m[]8;;#561\561]8;;\][0m, [4msmime-ca-no-defaults[34m[24m[]8;;#562\562]8;;\][0m, + [4msmime-crl-dir[34m[24m[]8;;#564\564]8;;\][0m, [4msmime-crl-file[34m[24m[]8;;#565\565]8;;\][0m. For S/MIME signing of interest + are [4msmime-sign[34m[24m[]8;;#568\568]8;;\][0m, [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\][0m, [4msmime-sign-include-certs[34m[24m[]8;;#571\571]8;;\][0m + and [4msmime-sign-digest[34m[24m[]8;;#570\570]8;;\][0m. Additional variables of interest for S/MIME + en- and [1mdecrypt[34m[22m[]8;;#173\173]8;;\][0mion: [4msmime-cipher[34m[24m[]8;;#563\563]8;;\] [0mand + [4msmime-encrypt-USER@HOST[34m[24m[]8;;#566\566]8;;\][0m. Variables of secondary interest may be + [4mcontent-description-smime-message[34m[24m[]8;;#406\406]8;;\] [0mand + [4mcontent-description-smime-signature[34m[24m[]8;;#407\407]8;;\][0m. S/MIME is available if + ‘,+smime,’ is included in [4mfeatures[34m[24m[]8;;#425\425]8;;\][0m. + + [v15 behaviour may differ] Note that neither S/MIME signing nor encryp‐ + tion applies to message subjects or other header fields yet. Thus they + may not contain sensitive information for encrypted messages, and cannot + be trusted even if the message content has been verified. When sending + signed messages, it is recommended to repeat any important header infor‐ + mation in the message text. + + [1mOn URL syntax and credential lookup[22m]8;:id=18;#\]8;;\ + FIXME new proto config stuff, query string?? FIXME more refs in between + ‘folder’, *folder*, and *inbox*!!: FIXME + #?0!0/NONE#1|sn_gm:/var/spool/mail/steffen? acc hulhu FIXME s-nail: Ob‐ + soletion warning: no more expansion of *folder* in "%": please set *in‐ + box* For accessing protocol-specific resources Uniform Resource Locators + (URL, RFC 3986) have become omnipresent. Here they are expected in a + “normalized” variant that is not used in data exchange, but only meant as + a compact, easy-to-use way of defining and representing information in a + well-known notation; as such they do not conform to any real standard. + Optional parts in brackets ‘[]’ are optional either because other ways + exist to define the information, or because the part is protocol spe‐ + cific. ‘/path’ for example is used by [Option]al Maildir [1mfolder[34m[22m[]8;;#203\203]8;;\][0ms + and IMAP, but not by POP3. Note ‘USER’ and ‘PASSWORD’ within an URL must + be URL percent encoded (RFC 3986), see [1murlcodec[34m[22m[]8;;#302\302]8;;\][0m. + + PROTOCOL://[USER[:PASSWORD]@]server[:port][/path] + + Often [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mexist in “variable chains”: the plain + ‘variable’ as well as ‘variable-HOST’ and ‘variable-USER@HOST’. If a + port was specified ‘HOST’ really means ‘server:port’, not ‘server’. And + this ‘USER’ is never in URL percent encoded form. For example, whether + the hypothetical ‘smtp://hey%2Bhey:wings%3Aof@a.dove’ including user and + password was used, or whether it was ‘smtp://a.dove’ and they came from a + different sources, to lookup the chain [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\] [0mfirst ‘tls- + config-pairs-hey+hey@a.dove’ is looked up, then ‘tls-config-pairs- + a.dove’, then the plain variable at last. + + The logic to collect credentials (of an [1maccount[34m[22m[]8;;#144\144]8;;\][0m) is as follows: + + [1m• [22mA user is always required. If no ‘USER’ has been given in the URL + [4muser-HOST[24m and [4muser[34m[24m[]8;;#614\614]8;;\] [0mare looked up. + + [Option] Thereafter, when allowed by [4mnetrc-lookup-HOST[24m or + [4mnetrc-lookup[34m[24m[]8;;#489\489]8;;\][0m, [4mThe[24m [4m.netrc[24m [4mfile[34m[24m[]8;;#39\39]8;;\] [0m(of LOGNAME[34m[]8;;#633\633]8;;\][0m) will be + searched for an unambiguous (one possible match) ‘HOST’ entry with a + ‘login’ name. + + If there is still no ‘USER’ the verified, valid LOGNAME[34m[]8;;#633\633]8;;\] [0mis used. + + [1m• [22mAuthentication: unless otherwise noted the chain + [4mPROTOCOL-auth-USER@HOST[24m, [4mPROTOCOL-auth-HOST[24m, [4mPROTOCOL-auth[24m is + checked, falling back to a protocol-specific default as necessary. + + [1m• [22mIf no ‘PASSWORD’ has been given in the URL, then if the ‘USER’ has + been found through the [Option]al [4mnetrc-lookup[34m[24m[]8;;#489\489]8;;\][0m, that may have + also provided the password. Otherwise the chain [4mpassword-USER@HOST[24m, + [4mpassword-HOST[24m, [4mpassword[34m[24m[]8;;#508\508]8;;\] [0mis looked up. + + [Option] Thereafter the (now complete) chain [4mnetrc-lookup-USER@HOST[24m, + [4mnetrc-lookup-HOST[24m, [4mnetrc-lookup[34m[24m[]8;;#489\489]8;;\] [0mis checked, if set the + [1mnetrc[34m[22m[]8;;#239\239]8;;\] [0mcache is searched for a password only (multiple user ac‐ + counts for a single machine may exist as well as a fallback entry + without user but with a password). + + If at that point a password is required but not available, then in + interactive mode the user will be prompted. + + [1mNote: [22mS/MIME verification works relative to the values found in the + ‘From:’ (or ‘Sender:’) header field(s), therefore [4msmime-sign[34m[24m[]8;;#568\568]8;;\][0m, + [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\][0m, [4msmime-sign-include-certs[34m[24m[]8;;#571\571]8;;\] [0mand + [4msmime-sign-digest[34m[24m[]8;;#570\570]8;;\] [0mwill not be looked up using above’s ‘USER’ and + ‘HOST’ chains, but instead use values from the message that is being + worked on. If no address matches [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mis used. In unusual cases + multiple and different ‘USER’ and ‘HOST’ combinations may therefore be + involved – on the other hand those unusual cases become possible. The + usual case is as short as: + + set mta=smtp://USER:PASS@HOST smtp-config=-starttls \ + smime-sign smime-sign-cert=+smime.pair \ + from=myname@my.host + + [1mEncrypted network communication[22m]8;:id=19;#\]8;;\ + [Option] SSL (Secure Sockets Layer) aka its successor TLS (Transport + Layer Security) are protocols which aid in securing communication by pro‐ + viding a safely initiated and encrypted network connection. As part of + each connection setup a set of certificates will be exchanged through + which the identity of the network peer can be cryptographically verified + against a local set of trusted certificates. If possible the TLS/SNI + (ServerNameIndication) extension will be enabled to allow servers fine- + grained control over the presented certificates. + + A central concept of TLS are certification authorities (CAs). These are + trusted institutions which issue certificates that correlate a partie’s + private key (and its public variant) with the CA’s own by means of a cer‐ + tificate request. This makes it cryptographically possible to verify the + key correlation of a CA and a party: verification will succeed if a CA + certificate is found that is a(n in)direct signer of (a) presented party + certificate(s). + + A set of CA certificates is usually available from the distributor of the + operating system, or comes shipped with the used cryptographical library: + reasonable security for TLS on the Internet is provided if the source + that provides the set is trusted. A certificate cannot be more secure + than the method its CA certificate has been retrieved with. A personal + set of trusted certificates can be specified via [4mtls-ca-file[34m[24m[]8;;#596\596]8;;\] [0mand/or + (with special preparation) [4mtls-ca-dir[34m[24m[]8;;#595\595]8;;\][0m. Setting + [4mtls-ca-no-defaults[34m[24m[]8;;#598\598]8;;\] [0mdisables (additional) usage of the default cer‐ + tificate set. + + For inspection or other purposes, the certificate of a server (as seen + when connecting to it) can be fetched with the command [1mtls[34m[22m[]8;;#292\292]8;;\] [0m(port can + usually be the protocol name, too, and [4mtls-verify[34m[24m[]8;;#608\608]8;;\] [0mis taken into ac‐ + count here): + + $ s-nail -vX ’tls certchain SERVER-URL[:PORT]; x’ + + Server certificates can also be verified through their fingerprint, elim‐ + inating the need for a local set of CA certificates: a message digest + will be calculated and compared against [4mtls-fingerprint[34m[24m[]8;;#605\605]8;;\][0m. A digest + (algorithm) can be configured via [4mtls-fingerprint-digest[34m[24m[]8;;#606\606]8;;\][0m; [1mtls[34m[22m[]8;;#292\292]8;;\][0m + can again be used: + + $ s-nail -X ’set verbose; tls fingerprint SERVER-URL[:PORT]; x’ + + It depends on the protocol whether encrypted communication is available, + and which configuration steps have to be taken to enable it. Some proto‐ + cols, like POP3S, are implicitly encrypted, others, like POP3, can up‐ + grade a plain text connection if so requested. For example, to use the + ‘STLS’ that POP3 offers [4mpop3-use-starttls[34m[24m[]8;;#522\522]8;;\] [0mneeds to be set; here with + a convenient [1mshortcut[34m[22m[]8;;#276\276]8;;\][0m: + + shortcut encpop1 pop3s://pop1.exam.ple + + shortcut encpop2 pop3://pop2.exam.ple + set pop3-use-starttls-pop2.exam.ple + + set mta=smtps://smtp.exam.ple:465 + # Automatically upgrades unless smtp-config=-starttls + set mta=smtp://smtp.exam.ple + + TLS libraries try to provide safe defaults, plenty of knobs however exist + to adjust settings. For example certificate verification can be fine- + tuned via [4mtls-ca-flags[34m[24m[]8;;#597\597]8;;\][0m, and TLS configuration basics are accessible + via [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m, for example to control protocol versions or + cipher lists. In the past hints on how to restrict the set of protocols + to highly secure ones were indicated, but as of the time of this writing + the list of protocols or ciphers may need to become relaxed in order to + be able to connect to some servers; the following example allows connect‐ + ing to a “Lion” that uses OpenSSL 0.9.8za from June 2014: + + set tls-config-pairs-lion@exam.ple=’MinProtocol=TLSv1.1,\ + CipherString=TLSv1.2:!aNULL:!eNULL:\ + ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:\ + DHE-RSA-AES256-SHA:@STRENGTH’ + + The OpenSSL program ciphers(1)[34m[]8;:id=694;man:ciphers(1)\694]8;;\] [0mshould be referred to when creating a + custom cipher list. Variables of interest for TLS in general are + [4mtls-ca-dir[34m[24m[]8;;#595\595]8;;\][0m, [4mtls-ca-file[34m[24m[]8;;#596\596]8;;\][0m, [4mtls-ca-flags[34m[24m[]8;;#597\597]8;;\][0m, + [4mtls-ca-no-defaults[34m[24m[]8;;#598\598]8;;\][0m, [4mtls-config-file[34m[24m[]8;;#599\599]8;;\][0m, [4mtls-config-module[34m[24m[]8;;#600\600]8;;\][0m, + [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m, [4mtls-crl-dir[34m[24m[]8;;#602\602]8;;\][0m, [4mtls-crl-file[34m[24m[]8;;#603\603]8;;\][0m, + [4mtls-rand-file[34m[24m[]8;;#607\607]8;;\] [0mas well as [4mtls-verify[34m[24m[]8;;#608\608]8;;\][0m. Also see + [4mtls-features[34m[24m[]8;;#604\604]8;;\][0m. TLS is available if ‘+tls’ is included in + [4mfeatures[34m[24m[]8;;#425\425]8;;\][0m. + + [1mHandling spam[22m]8;:id=20;#\]8;;\ + [Option] Several [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0ms for dealing with spam messages are + configurable. The volatile ‘is-spam’ state of classified messages can + appear in the [4mattrlist[34m[24m[]8;;#377\377]8;;\] [0mof their [4mheadline[34m[24m[]8;;#439\439]8;;\] [0min the summary of + [1mheaders[34m[22m[]8;;#214\214]8;;\][0m, and ‘[4m:s[24m’ and ‘[4m:S[24m’ select them when [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. + + [1m• spamrate[34m[22m[]8;;#289\289]8;;\] [0mrates the given messages and sets their ‘is-spam’ flag + accordingly. If the spam interface offers spam scores these can be + shown in [4mheadline[34m[24m[]8;;#439\439]8;;\] [0mby using the format ‘%$’. + + [1m• spamham[34m[22m[]8;;#288\288]8;;\][0m, [1mspamspam[34m[22m[]8;;#291\291]8;;\] [0mand [1mspamforget[34m[22m[]8;;#287\287]8;;\] [0minteract with the + Bayesian filter of the chosen interface. + + [1m• spamclear[34m[22m[]8;;#286\286]8;;\] [0mand [1mspamset[34m[22m[]8;;#290\290]8;;\] [0msimply set and clear, respectively, + the mentioned volatile ‘is-spam’ message flag, they do not interact + with [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0m. + + The spamassassin(1)[34m[]8;:id=695;man:spamassassin(1)\695]8;;\] [0mbased [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0m‘spamc’ requires a + running instance of the spamd(1)[34m[]8;:id=696;man:spamd(1)\696]8;;\] [0mserver in order to function, + started with the option [1m--allow-tell [22mshall Bayesian filter learning be + possible. + + $ spamd -i localhost:2142 -i /tmp/.spamsock -d [-L] [-l] + $ spamd --listen=localhost:2142 --listen=/tmp/.spamsock \ + --daemonize [--local] [--allow-tell] + + Thereafter these interfaces can be used: + + $ s-nail -Sspam-interface=spamc -Sspam-maxsize=500000 \ + -Sspamc-command=/usr/local/bin/spamc \ + -Sspamc-arguments="-U /tmp/.spamsock" -Sspamc-user= + or + $ s-nail -Sspam-interface=spamc -Sspam-maxsize=500000 \ + -Sspamc-command=/usr/local/bin/spamc \ + -Sspamc-arguments="-d localhost -p 2142" -Sspamc-user= + + Using the generic filter approach allows usage of programs like + bogofilter(1)[34m[]8;:id=697;man:bogofilter(1)\697]8;;\][0m. Here is an example that assumes the program in + PATH[34m[]8;;#641\641]8;;\][0m: + + $ s-nail -Sspam-interface=filter -Sspam-maxsize=500000 \ + -Sspamfilter-ham="bogofilter -n" \ + -Sspamfilter-noham="bogofilter -N" \ + -Sspamfilter-nospam="bogofilter -S" \ + -Sspamfilter-rate="bogofilter -TTu 2>/dev/null" \ + -Sspamfilter-spam="bogofilter -s" \ + -Sspamfilter-rate-scanscore="1;ˆ(.+)$" + + Messages must be locally present for scoring or Bayesian filter training + purposes. Spam can be checked automatically when opening specific fold‐ + ers by setting a specialized form of [4mon-mailbox-open[34m[24m[]8;;#501\501]8;;\][0m. + + define spamdelhook { + # Server side DCC + spamset (header x-dcc-brand-metrics "bulk") + # Server-side spamassassin(1) + spamset (header x-spam-flag "YES") + del :s # TODO we HAVE to be able to do ‘spamrate :u ! :sS’ + move :S +maybe-spam + spamrate :u + del :s + move :S +maybe-spam + } + set on-mailbox-open-SOMEFOLDER=spamdelhook + + See also [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0m, [4mspam-maxsize[34m[24m[]8;;#580\580]8;;\][0m, [4mspamc-command[34m[24m[]8;;#581\581]8;;\][0m, + [4mspamc-arguments[34m[24m[]8;;#582\582]8;;\][0m, [4mspamc-user[34m[24m[]8;;#583\583]8;;\][0m, [4mspamfilter-ham[34m[24m[]8;;#584\584]8;;\][0m, + [4mspamfilter-noham[34m[24m[]8;;#585\585]8;;\][0m, [4mspamfilter-nospam[34m[24m[]8;;#586\586]8;;\][0m, [4mspamfilter-rate[34m[24m[]8;;#587\587]8;;\] [0mand + [4mspamfilter-rate-scanscore[34m[24m[]8;;#589\589]8;;\][0m. + +[1mCOMMANDS[22m]8;:id=21;#\]8;;\ + Input is read in lines. An unquoted reverse solidus ‘\’ at the end of a + line “escapes” the newline character: it is discarded and the next line + of input is used as a follow-up line, with all leading whitespace re‐ + moved. Once a line is completed, the whitespace characters [1mspace[22m, + [1mtabulator[22m, [1mnewline [22mas well as those defined by [4mifs[34m[24m[]8;;#449\449]8;;\] [0mare removed from + both ends. [Option] Prepending any whitespace prevents addition to the + [1mhistory[34m[22m[]8;;#216\216]8;;\][0m. + + The line is then scanned for a command name, possibly prepended by + [4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m. Names may be abbreviated: the first matching the + given prefix is used. A name may also be a [1mcommandalias[34m[22m[]8;;#166\166]8;;\][0m, it is then + recursively expanded first. Once the command that shall be evaluated is + known, the remains of the line will be interpreted according to command- + specific rules, most often [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m. + + This behaviour is different to the SHELL[34m[]8;;#643\643]8;;\][0m, which is a programming + language with syntactic elements of clearly defined semantics, and there‐ + fore capable to sequentially expand and evaluate individual elements of a + line. ‘? set one=spoon two=$one’ for example will never assign ‘spoon’ + to two, because it is the command [1mset[34m[22m[]8;;#271\271]8;;\] [0mthat performs the assignment, + long after the expansion has happened. + + A list of all commands in lookup order that not always fits the alphabet‐ + ical one due to POSIX standardized abbreviations is dumped by [1mlist[34m[22m[]8;;#220\220]8;;\][0m. + [Option]ally [1mhelp[34m[22m[]8;;#215\215]8;;\] [0m(alias: [1m?[34m[22m[]8;;#142\142]8;;\][0m) can show a documentation for the + argument, as in ‘?t’, which should be a shorthand of ‘? type’; with these + documentation strings both commands support a more [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mmode that + prints argument types and some more information which applies; a handy + suggestion may thus be: + + ? define __xv { + local set verbose; ignerr eval "${@}"; return ${?} + } + ? commandalias xv ’\call __xv’ + ? xv help set + + [1mCommand modifiers[22m]8;:id=22;#\]8;;\ + Multiple (case-insensitive) modifiers may be prepended to commands, the + order of which is insignificant. Some apply to only a restricted command + set, as shown by the [Option]al [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mmode of [1mlist[34m[22m[]8;;#220\220]8;;\][0m. + + [1m\[22m]8;:id=126;#\]8;;\ Reverse solidus prevents [1mcommandalias[34m[22m[]8;;#166\166]8;;\] [0mexpansion (that may + contain additional modifiers), for example ‘\echo’ will always + evaluate the command [1mecho[34m[22m[]8;;#185\185]8;;\][0m, even if an (command)alias of + that name exists. Need not be whitespace-separated from other + modifiers or command names. + + [1meval[22m]8;:id=127;#\]8;;\ Construct a command by concatenating arguments, expanded ac‐ + cording to [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m, thereafter sepa‐ + rated by single space characters. + + define xxx { + echo "xxx arg <$1>" + shift + if $# -gt 0 + \xcall xxx "$@" + endif + } + define yyy { + eval "$@ ’ ball" + } + call yyy ’\call xxx’ "b\$’\t’u ’ " + call xxx arg <b u> + call xxx arg < > + call xxx arg <ball> + + [1mglobal[22m]8;:id=128;#\]8;;\ When supported, apply changes in global scope despite an estab‐ + lished [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscope. [1mRemarks: [22mfor commands which support + the [1mvput[34m[22m[]8;;#132\132]8;;\] [0mmodifier this can lead to strange constructs like + ‘\global local vput vpospar myvar quote’ where the command is + advised to work in global scope, but the variable assignment + happens in local scope. + + [1mignerr[22m]8;:id=129;#\]8;;\ Ignore command errors, and do neither [1mquit[34m[22m[]8;;#252\252]8;;\] [0mthe program + with [4merrexit[34m[24m[]8;;#419\419]8;;\] [0mnor for the standardized exit cases of + [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode. [4m?[34m[24m[]8;;#350\350]8;;\] [0mwill contain the real exit status of + the command regardless. + + [1mlocal[22m]8;:id=130;#\]8;;\ When supported, apply changes only in local scope. The com‐ + mands [1mset[34m[22m[]8;;#271\271]8;;\][0m, [1munset[34m[22m[]8;;#272\272]8;;\][0m, [1mcall[34m[22m[]8;;#155\155]8;;\] [0mand [1mxcall[34m[22m[]8;;#310\310]8;;\] [0moverload + locality for built-in [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0m([1menviron[34m[22m[]8;;#193\193]8;;\][0m) and + [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m: changes will be passed down the call + chain, but their former state is restored once the “covered + scope” is left: once execution is passed up to the callee of a + [1mdefine[34m[22m[]8;;#174\174]8;;\][0md macro, once a different account is activated for + [1maccount[34m[22m[]8;;#144\144]8;;\][0m, and some macros, notably [4mon-mailbox-open[34m[24m[]8;;#501\501]8;;\][0ms, + use their own specific notion of covered scope, here it will be + extended until the [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mis left again. + + This extended local scoping stacks up: for example, if ‘macro1’ + has it enabled and calls ‘macro2’ normally, then all changes + done by ‘macro2’ or deeper in the call chain will still be re‐ + verted once the scope of ‘macro1’ is left. Caveats: if in this + example ‘macro2’ changes to a different [1maccount[34m[22m[]8;;#144\144]8;;\] [0mwhich sets + some variables that are already covered by local scoping, their + scope will be extended, and in fact leaving the [1maccount[34m[22m[]8;;#144\144]8;;\][0m + will (thus) restore settings in (likely) global scope which ac‐ + tually were defined in a local, macro private context! + + [1mu[22m]8;:id=131;#\]8;;\ [v15 behaviour may differ] Does not yet implement any function‐ + ality. When supported command arguments are interpreted as + UTF-8 character data, regardless of [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0m(aka + LC_ALL[34m[]8;;#628\628]8;;\][0m). + + [1mvput[22m]8;:id=132;#\]8;;\ When supported a (shell-expanded) variable name is expected as + the first command argument: the computation result will be + stored in that variable instead of the default location (usu‐ + ally written to standard output), which may be [1mlocal[34m[22m[]8;;#130\130]8;;\][0mized: + ‘? [local] vput = msgno; echo $msgno’. + + The name must comply to SHELL[34m[]8;;#643\643]8;;\] [0m]8;:id=133;#\]8;;\variable name rules and con‐ + sist only of upper- and lowercase characters, digits, and the + underscore; hyphen-minus may be used as a non-portable exten‐ + sion, leading digits and hyphen-minus, as well as a trailing + hyphen-minus are not allowed. Variables which are linked to + the [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0mmay not use extensions. [4mINTERNAL[0m + [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mother than writable (non-boolean) value variables + may not be used; also storage may fail in that case nonetheless + if content constraints are not satisfied. Any test or storage + error causes the command as such to fail, with [4m![34m[24m[]8;;#351\351]8;;\] [0mset to + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP and [4m?[34m[24m[]8;;#350\350]8;;\] [0mset to ‘-1’, but some commands de‐ + viate, then documented. + + [1mwysh[22m]8;:id=134;#\]8;;\ Can be used for some old and established commands to choose the + new [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mrules over the traditional + [4mOld-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#23\23]8;;\][0m. This modifier is implied if + [4mv15-compat[34m[24m[]8;;#615\615]8;;\] [0mis set to a non-empty value, which now is the + default. This modifier will first become a no-op, and later be + removed. + + [1mOld-style argument quoting[22m]8;:id=23;#\]8;;\ + [v15 behaviour may differ] This section documents the traditional and + POSIX standardized style of quoting non-message list arguments to com‐ + mands which expect this type of arguments: whereas still used by the ma‐ + jority of such commands, the new [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mmay be + available even for those via [1mwysh[34m[22m[]8;;#134\134]8;;\][0m. Nonetheless care must be taken, + because only new commands have been designed with all the capabilities of + the new quoting rules in mind, which can, for example, generate control + characters. + + [1m• [22mAn argument can be enclosed between paired double-quotes + ‘"argument"’ or single-quotes ‘’argument’’; any whitespace, + shell word expansion, or reverse solidus characters (except as + described next) within the quotes are treated literally as part + of the argument. A double-quote will be treated literally + within single-quotes and vice versa. Inside such a quoted + string the actually used quote character can be used nonethe‐ + less by escaping it with a reverse solidus ‘\’, as in + ‘"y\"ou"’. + + [1m• [22mAn argument that is not enclosed in quotes, as above, can usu‐ + ally still contain space characters if those spaces are reverse + solidus escaped, as in ‘you\ are’. + + [1m• [22mA reverse solidus outside of the enclosing quotes is discarded + and the following character is treated literally as part of the + argument. + + [1mShell-style argument quoting[22m]8;:id=24;#\]8;;\ + SHELL[34m[]8;;#643\643]8;;\][0m-style, and therefore POSIX standardized, argument parsing, ex‐ + pansion, and quoting rules are used by most commands. [v15 behaviour may + differ] Most new commands only support these new rules and are flagged + [Only new quoting rules], some elder ones can use them via [1mwysh[34m[22m[]8;;#134\134]8;;\][0m; in + the future only this type of argument quoting will remain. + + The command line is parsed from left to right and an input token is com‐ + pleted whenever an unquoted, otherwise ignored, metacharacter is seen. + Metacharacters are vertical bar [1m|[22m, semicolon [1m;[22m, as well as all characters + from the variable [4mifs[34m[24m[]8;;#449\449]8;;\][0m, and/or [1mspace[22m, [1mtabulator[22m, [1mnewline[22m. The addi‐ + tional SHELL[34m[]8;;#643\643]8;;\] [0mmetacharacters ampersand [1m&[22m, left and right parenthesis + [1m([22m, [1m) [22mand less-than and greater-than signs [1m<[22m, [1m> [22mare treated as ordinary + characters: they are either vivid parts of email addresses or [4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m. Any unquoted number sign ‘#’ that begins a new to‐ + ken starts a comment that extends to the end of the line, and therefore + ends argument processing. An unquoted dollar sign ‘$’ starts [4mShell-style[0m + [4mexpansions[34m[24m[]8;;#25\25]8;;\][0m. + + [1mCompatibility note: [22m[v15 behaviour may differ] Note that even many + new-style commands do not yet honour [4mifs[34m[24m[]8;;#449\449]8;;\] [0mto parse their argu‐ + ments: whereas the SHELL[34m[]8;;#643\643]8;;\] [0mis a language with syntactic elements + of clearly defined semantics, S-nail parses entire input lines and + decides on a per-command base what to do with the rest of the line. + This also means that whenever an unknown command is seen all that + can be done is cancellation of the processing of the remains of the + line. + + It also often depends on an actual subcommand of a multiplexer com‐ + mand how the rest of the line should be treated, and until v15 we + are not capable to perform this deep inspection of arguments. + Nonetheless, at least the following commands which work with posi‐ + tional parameters fully support [4mifs[34m[24m[]8;;#449\449]8;;\] [0mfor an almost shell-com‐ + patible field splitting: [1mcall[34m[22m[]8;;#155\155]8;;\][0m, [1mcall_if[34m[22m[]8;;#156\156]8;;\][0m, [1mread[34m[22m[]8;;#253\253]8;;\][0m, + [1mvpospar[34m[22m[]8;;#307\307]8;;\][0m, [1mxcall[34m[22m[]8;;#310\310]8;;\][0m. + + Whereas the metacharacters [1mspace[22m, [1mtabulator[22m, [1mnewline [22monly complete an in‐ + put token, vertical bar [1m| [22mand semicolon [1m; [22malso act as control operators + and perform control functions. For now supported is semicolon [1m;[22m, it ter‐ + minates a single command, therefore sequencing the line, and making the + remainder of it subject to reevaluation. With sequencing, Multiple com‐ + mand argument types and quoting rules may therefore apply to a single + line, which can be problematic before v15 and without [4mv15-compat[34m[24m[]8;;#615\615]8;;\][0m; + for example, the first of the following will cause surprising results: + + ? echo one; set verbose; echo verbose=$verbose. + ? echo one; wysh set verbose; echo verbose=$verbose. + + Quoting is a mechanism that removes the special meaning of metacharacters + and reserved words, and prevents expansion. There are four quoting mech‐ + anisms: the escape character, single-quotes, double-quotes and dollar- + single-quotes: + + [1m• [22mThe literal value of any character can be preserved by preced‐ + ing it with the escape character reverse solidus ‘\’. + + [1m• [22mArguments which are enclosed in ‘’single-quotes’’ retain their + literal value. A single-quote cannot occur within single- + quotes. + + [1m• [22mThe literal value of all characters enclosed in ‘"double- + quotes"’ is retained, with the exception of dollar sign ‘$’ + that causes [4mShell-style[24m [4mexpansions[34m[24m[]8;;#25\25]8;;\][0m, backquote (grave ac‐ + cent) ‘‘’ (which not yet means anything special), reverse + solidus ‘\’ that escapes any of the characters dollar sign ‘$’, + backquote (grave accent) ‘‘’, double-quote ‘"’ (to prevent end‐ + ing the quote), and reverse solidus ‘\’ (to prevent escaping, + that is, to embed a reverse solidus character as-is), but has + no special meaning otherwise. + + [1m• [22mArguments enclosed in ‘$’dollar-single-quotes’’ extend normal + single quotes in that reverse solidus escape sequences are ex‐ + panded as follows: + + ‘\a’ bell control character (ASCII and ISO-10646 BEL). + ‘\b’ backspace control character (ASCII and ISO-10646 BS). + ‘\E’ escape control character (ASCII and ISO-10646 ESC). + ‘\e’ the same. + ‘\f’ form feed control character (ASCII and ISO-10646 FF). + ‘\n’ line feed control character (ASCII and ISO-10646 LF). + ‘\r’ carriage return control character (ASCII and ISO-10646 + CR). + ‘\t’ horizontal tabulator control character (ASCII and + ISO-10646 HT). + ‘\v’ vertical tabulator control character (ASCII and + ISO-10646 VT). + ‘\\’ emits a reverse solidus character. + ‘\’’ single quote. + ‘\"’ double quote (need not be escaped, but can). + ‘\NNN’ eight-bit byte with the octal value ‘NNN’ (one to three + octal digits), optionally prefixed by an additional + ‘0’. A 0 byte will suppress further output for the + quoted argument. + ‘\xHH’ eight-bit byte with the hexadecimal value ‘HH’ (one or + two hexadecimal characters, no prefix, see [4mnumber[0m + [4msyntax[24m [4mrules[34m[24m[]8;;#135\135]8;;\][0m). A 0 byte will suppress further + output for the quoted argument. + ‘\UHHHHHHHH’ + the Unicode / ISO-10646 character with the hexadecimal + codepoint value ‘HHHHHHHH’ (one to eight hexadecimal + characters) — note that Unicode defines the maximum + codepoint ever to be supported as ‘0x10FFFF’ (in planes + of ‘0xFFFF’ characters each). This escape is only sup‐ + ported in locales that support Unicode (see [4mCharacter[0m + [4msets[34m[24m[]8;;#12\12]8;;\][0m), in other cases the sequence will remain un‐ + expanded unless the given code point is ASCII compati‐ + ble or (if the [Option]al character set conversion is + available) can be represented in the current locale. + The character NUL will suppress further output for the + quoted argument. + ‘\uHHHH’ + Identical to ‘\UHHHHHHHH’ except it takes only one to + four hexadecimal characters. + ‘\cX’ Emits the non-printable (ASCII and compatible) C0 con‐ + trol codes 0 (NUL) to 31 (US), and 127 (DEL). Print‐ + able representations of ASCII control codes can be cre‐ + ated by mapping them to a different, visible part of + the ASCII character set. Adding the number 64 achieves + this for the codes 0 to 31, here 7 (BEL): ‘7 + 64 = 71 + = G’. The real operation is a bitwise logical XOR with + 64 (bit 7 set, see [1mvexpr[34m[22m[]8;;#306\306]8;;\][0m), thus also covering code + 127 (DEL), which is mapped to 63 (question mark): + ‘? vexpr ˆ 127 64’. + + Whereas historically circumflex notation has often been + used for visualization purposes of control codes, as in + ‘ˆG’, the reverse solidus notation has been standard‐ + ized: ‘\cG’. Some control codes also have standardized + (ISO-10646, ISO C) aliases, as shown above (‘\a’, ‘\n’, + ‘\t’ etc) : whenever such an alias exists it will be + used for display purposes. The control code NUL + (‘\c@’, a non-standard extension) will suppress further + output for the remains of the token (which may extend + beyond the current quote), or, depending on the con‐ + text, the remains of all arguments for the current com‐ + mand. + ‘\$expression’ + Non-standard extension to embed [4mShell-style[0m + [4mexpansions[34m[24m[]8;;#25\25]8;;\][0m. + ‘\‘{command}’ + Not yet supported, just to raise awareness: Non-stan‐ + dard extension. + + Caveats: + + ? echo ’Quotes ’${HOME}’ and ’tokens" differ!"# no comment + ? echo Quotes ${HOME} and tokens differ! # comment + ? echo Don"’"t you worry$’\x21’ The sun shines on us. $’\u263A’ + + # Note: different to sh(1)ell _language_: + ? define xy { + ? echo $#, $1, $2, $* + ? } + ? set x=’one two three’ + ? call xy $x four + 1, one two three, four, one two three four + + [1mShell-style expansions[22m]8;:id=25;#\]8;;\ + Within [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0man unquoted dollar sign ‘$’ trig‐ + gers expression expansions. The simplemost expression is an optionally + brace enclosed variable name, for example ‘$NAME’ or ‘${NAME}’, which + must honour [4mvariable[24m [4mname[24m [4mrules[34m[24m[]8;;#133\133]8;;\][0m: [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mas well as + [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0m(shell) variables can be accessed and expanded through + this mechanism. + + Within pairs of double parenthesis ‘$(( ))’ 64-bit signed integer arith‐ + metic expansions are performed. Different to [1mvexpr[34m[22m[]8;;#306\306]8;;\] [0mno saturated + mode is available (overflow constants will result), and errors are not + trackable: a syntactically invalid expression causes the context + ([4mCOMMANDS[34m[24m[]8;;#21\21]8;;\][0m) to fail due to invalid arguments. Variable NAMEs can be + referenced: unset or empty values expand to 0, otherwise the value is in‐ + terpreted as a self-contained expression to expand arithmetically first. + ]8;:id=135;#\]8;;\Numbers prefixed with ‘0x’ or ‘0X’ denote hexadecimal (base 16) numbers, + ‘0’ indicates octal (base 8), and ‘0b’ as well as ‘0B’ denote binary + (base 2) numbers. A permissive ‘NUMBER’ parse mode (see example) is used + for the ‘BASE#NUMBER’ notation; ‘BASE’ is an unsigned decimal in the + range 2 and 64, inclusive. Power-of-two bases are parsed as unsigned in‐ + tegers (making for overflow constant differences). The following list of + operators is sorted in decreasing precedence. + + ? set i=0; echo $((i + i)), $((i+=1)), $((i + i)); varshow i + 0, 1, 2 + set i=1 + ? set i=-2; eval echo \$(( 10# $i)) + -2 + + [1mCompatibility note: [22m[v15 behaviour may differ] Of the following, + only “The result is treated as the arithmetic expression to be + evaluated” is true: The expression is treated as if it were within + double quotes, but a double quote inside the parentheses is not + treated specially. All tokens in the expression undergo parameter + and variable expansion, command substitution, and quote removal. + The result is treated as the arithmetic expression to be evaluated. + Arithmetic expansions may be nested. + + [4m([24m, [4m)[24m Parenthesis can be used to form sub-expressions which are eval‐ + uated with the highest precedence. + [4mVAR++[24m, [4mVAR--[0m + Postfix increment and decrement, for variables. + [4m+[24m, [4m-[24m Unary plus and minus. + [4m++VAR[24m, [4m--VAR[0m + Prefix increment and decrement, for variables. + [4m![24m, [4m˜[24m Logical and bitwise negation. + [4m**[24m Exponentiation. + [4m*[24m, [4m/[24m, [4m%[24m Multiplication, division, remainder (modulo). + [4m+[24m, [4m-[24m Addition and subtraction. + [4m<<[24m, [4m>>[24m, [4m>>>[0m + Bitwise shifts, the last performs an unsigned right shift. + [4m<=[24m, [4m>=[24m, [4m<[24m, [4m>[0m + Comparison. + [4m==[24m, [4m!=[24m Equality and inequality. + [4m&[24m Bitwise AND. + [4mˆ[24m Bitwise XOR. + | Bitwise OR. + [4m&&[24m Logical AND. + [4m||[24m Logical OR. + [4mEXPR0[24m [4m?[24m [4mEXPR1[24m [4m:[24m [4mEXPR2[0m + Conditional operator: if EXPR0 is true evalute EXPR1, otherwise + evaluate EXPR2; this can be nested. Precedence note: for exam‐ + ple ‘1?crt=10:crt=5’ is an error, as it is + ‘(1?(crt=10):crt)=5’; ‘1?crt=10:(crt=5)’ is ok. + [4m**=[24m, [4m*=[24m, [4m/=[24m, [4m%=[24m, [4m+=[24m, [4m-=[24m, [4m<<=[24m, [4m>>=[24m, [4m>>>=[24m, [4m&=[24m, [4mˆ=[24m, [4m|=[24m, [4m=[0m + Assignment. It is subject to scoping rules; [1mlocal[34m[22m[]8;;#130\130]8;;\][0mly + [1mset[34m[22m[]8;;#271\271]8;;\][0mting a variable before arithmetically expanding it is + an option. + [4mEXPR1[24m [4m,[24m [4mEXPR2[0m + Comma (sequential evaluation). + + [1mMessage list arguments[22m]8;:id=26;#\]8;;\ + Many commands operate on message lists as documented in [4mSpecifying[0m + [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. Input is first split into individual tokens via + [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m, and then interpreted as said. If no + explicit message list has been specified, many commands will search for + and use the next message forward that satisfies the commands’ require‐ + ments, and if there are no messages forward of the current message, the + search proceeds backwards; if there are no good messages at all to be + found, and the default (“dot”) is not applicable, an error message is + shown instead. The [4mverbose[34m[24m[]8;;#616\616]8;;\] [0moutput of [1mlist[34m[22m[]8;;#220\220]8;;\] [0mwill indicate when + no default is used. + + [1mRaw data arguments for codec commands[22m]8;:id=27;#\]8;;\ + A special set of commands, all of which with “codec” in their name, like + [1maddrcodec[34m[22m[]8;;#146\146]8;;\][0m, [1mshcodec[34m[22m[]8;;#274\274]8;;\][0m, [1murlcodec[34m[22m[]8;;#302\302]8;;\][0m, take raw string data as in‐ + put, which means that the input line is taken literally: like this the + effect of the actual codec is visible without any noise of possible shell + quoting rules etc., that is, the user can input one-to-one the desired or + questionable data. To gain a level of expansion, the entire command line + can be [1meval[34m[22m[]8;;#127\127]8;;\][0muated first, for example + + ? vput shcodec res encode /usr/Schönes Wetter/heute.txt + ? echo $res + $’/usr/Sch\u00F6nes Wetter/heute.txt’ + ? shcodec d $res + $’/usr/Sch\u00F6nes Wetter/heute.txt’ + ? eval shcodec d $res + /usr/Schönes Wetter/heute.txt + + [1mFilename transformations[22m]8;:id=28;#\]8;;\ + Filenames, where expected, and unless documented otherwise, are subject + to the following transformations, in sequence: + + [1m• [22mIf the name is a registered [1mshortcut[34m[22m[]8;;#276\276]8;;\] [0mit will be expanded. + This step is mostly taken by [1mfolder[34m[22m[]8;;#203\203]8;;\][0ms only. + + [1m• [22mThe name is matched against the following patterns or strings. + But for plus [4m+file[24m [4mfolder[34m[24m[]8;;#427\427]8;;\] [0mexpansion this step is mostly + taken by [1mfolder[34m[22m[]8;;#203\203]8;;\][0ms only. + + [4m#[24m (Number sign) is expanded to the previous file. + [4m%[24m (Percent sign) is replaced by ]8;:id=136;#\]8;;\primary system mailbox, + which either is the (itself expandable) [4minbox[34m[24m[]8;;#453\453]8;;\] [0mif + set, the standardized absolute pathname indicated by + MAIL[34m[]8;;#634\634]8;;\] [0mif set, or a built-in compile-time default + otherwise. When opening a [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mthe name is + checked for being a primary mailbox, first [4minbox[24m, then + MAIL[34m[]8;;#634\634]8;;\][0m. + [4m%user[24m Expands to the primary system mailbox of [4muser[24m (and never + the value of [4minbox[34m[24m[]8;;#453\453]8;;\][0m, regardless of its actual set‐ + ting). + [4m&[24m (Ampersand) is replaced with the ]8;:id=137;#\]8;;\secondary mailbox, the + MBOX[34m[]8;;#638\638]8;;\][0m. + [4m+file[24m Refers to a [4mfile[24m in the [4mfolder[34m[24m[]8;;#427\427]8;;\] [0mdirectory (if set). + [4m%:filespec[24m Expands to the same value as [4mfilespec[24m, but has spe‐ + cial meaning when used with, for example, [1mfolder[34m[22m[]8;;#203\203]8;;\][0m: + the file will be treated as a primary system mailbox by, + among others, the [1mmbox[34m[22m[]8;;#226\226]8;;\] [0mand [1msave[34m[22m[]8;;#268\268]8;;\] [0mcommands, + meaning that messages that have been read in the current + session will be moved to the MBOX[34m[]8;;#638\638]8;;\] [0mmailbox instead + of simply being flagged as read. + + [1m• [22mMeta expansions may be applied to the resulting filename, as + allowed by the operation and applicable to the resulting access + protocol (also see [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m). + For the file-protocol, a leading tilde ‘˜’ character will be + replaced by the expansion of HOME[34m[]8;;#627\627]8;;\][0m, except when followed by + a valid user name, in which case the home directory of the + given user is used instead. + + A shell expansion as if specified in double-quotes (see + [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m) may be applied, so that any + occurrence of ‘$VARIABLE’ (or ‘${VARIABLE}’) will be replaced + by the expansion of the variable, if possible; [4mINTERNAL[0m + [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mas well as [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0m(shell) variables can + be accessed through this mechanism. + + Shell pathname wildcard pattern expansions (glob(7)[34m[]8;:id=698;man:glob(7)\698]8;;\][0m) may + be applied as documented. If the fully expanded filename re‐ + sults in multiple pathnames and the command is expecting only + one file, an error results. + + In interactive context, in order to allow simple value accep‐ + tance (via “ENTER”), arguments will usually be displayed in a + properly quoted form, so a file ‘diet\ is \curd.txt’ may be + displayed as ‘’diet\ is \curd.txt’’. + + [1mCommands[22m]8;:id=29;#\]8;;\ + [1m![22m]8;:id=138;#\]8;;\ [4mcommand[0m + Executes the given SHELL[34m[]8;;#643\643]8;;\] [0m[4mcommand[24m, replacing unescaped ex‐ + clamation marks with the previously executed command if + [4mbang[34m[24m[]8;;#383\383]8;;\] [0mis set. [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m) and error + number [4m![34m[24m[]8;;#351\351]8;;\] [0mare supported. A 0 or positive exit status + [4m?[34m[24m[]8;;#350\350]8;;\] [0mreflects the exit status of the command, negative ones + that an error happened before the command was executed, or that + the program did not exit cleanly, but maybe due to a signal: + the error number is [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-CHILD, then. + + Special cases exist in conjunction with [1mvput[34m[22m[]8;;#132\132]8;;\][0m: a negative + exit status occurs if the collected data could not be stored in + the given variable, which is a [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP error that + should otherwise not occur. [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-CANCELED indicates that + no temporary file could be created to collect the command out‐ + put at first glance. In case of catchable out-of-memory situa‐ + tions [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOMEM will occur and it will be tried to store + the empty string, just like with all other detected error con‐ + ditions. + + [1m#[22m]8;:id=139;#\]8;;\ The comment-command causes the entire line to be ignored. This + is a normal command which’ purpose is to discard its arguments. + [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mis required for shell-style + comments. + + [1m=[22m]8;:id=140;#\]8;;\ “dotquery”: query the unique number of the current message (the + “dot”). With arguments show the resulting list of numbers, + separated by the first byte of [4mifs[34m[24m[]8;;#449\449]8;;\][0m, and followed by the + first byte of [4mif-ws[24m if non-empty and not identical. If this + results in no separation at all a [1mspace [22mis used. Note neither + is “dot” moved (see [1mdotmove[34m[22m[]8;;#182\182]8;;\][0m), nor are [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m + updated. [1mvput[34m[22m[]8;;#132\132]8;;\] [0mand the error number [4m![34m[24m[]8;;#351\351]8;;\] [0mare supported. + + [1m:[22m]8;:id=141;#\]8;;\ No-effect command: does nothing but expanding arguments. (For + an otherwise empty input line that invokes the default command + [1mnext[34m[22m[]8;;#241\241]8;;\] [0mthis conflicts the [4m:[24m message specification documented + in [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m, but compatibility to the well-known + sh(1)[34m[]8;:id=699;man:sh(1)\699]8;;\] [0m[1m: [22mcommand deemed more important than this special + case.) + + [1m?[22m]8;:id=142;#\]8;;\ [Option] Show a brief summary of commands. [Option] Given an + optionally abbreviated name the according synopsis is shown in‐ + stead, try for example ‘?h’, ‘?hel’ and ‘?help’, and see how + the output changes. To avoid that [1mcommandalias[34m[22m[]8;;#166\166]8;;\][0mes are re‐ + solved the modifier [1m\[34m[22m[]8;;#126\126]8;;\] [0mcan be prepended to the argument, + but note it must be quoted. A more [4mverbose[34m[24m[]8;;#616\616]8;;\] [0moutput is sup‐ + ported. + + [1m|[22m]8;:id=143;#\]8;;\ A synonym for the [1mpipe[34m[22m[]8;;#248\248]8;;\] [0mcommand. + + [1maccount[22m]8;:id=144;#\]8;;\, [1munaccount[22m]8;:id=145;#\]8;;\ + Create, select or list, and delete, respectively, macros that + bundle settings for email account creation, covered by a spe‐ + cific [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscope that extends until another account is + activated. When left, also for a regular program [1mquit[34m[22m[]8;;#252\252]8;;\] [0mor + when the account macro cannot be switched to successully, the + hook [4mon-account-cleanup[34m[24m[]8;;#494\494]8;;\] [0mis called. There is a special + read-only ‘null’ account for the purpose of changing to global + scope. + + Without arguments a list of all accounts is shown. With one + argument the given one is activated: after the macro body has + been evaluated its system [4minbox[34m[24m[]8;;#453\453]8;;\] [0mis opened as via + [1mfolder[34m[22m[]8;;#203\203]8;;\][0m, a possibly installed [4mon-mailbox-open[34m[24m[]8;;#501\501]8;;\] [0mwill be + run, and [4maccount[34m[24m[]8;;#366\366]8;;\] [0mwill be updated. The two argument form + creates a new account macro as via [1mdefine[34m[22m[]8;;#174\174]8;;\][0m. + + Important settings for accounts include [4mfolder[34m[24m[]8;;#427\427]8;;\][0m, [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, + [4mhostname[34m[24m[]8;;#447\447]8;;\][0m, [4minbox[34m[24m[]8;;#453\453]8;;\][0m, [4mmta[34m[24m[]8;;#482\482]8;;\][0m, [4mpassword[34m[24m[]8;;#508\508]8;;\][0m, + [4mrecord[34m[24m[]8;;#537\537]8;;\][0m, and [4muser[34m[24m[]8;;#614\614]8;;\] [0m([4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[0m + [4mlookup[34m[24m[]8;;#18\18]8;;\][0m), as well as things like [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\][0m + ([4mSigned[24m [4mand[24m [4mencrypted[24m [4mmessages[24m [4mwith[24m [4mS/MIME[34m[24m[]8;;#17\17]8;;\][0m), + [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\] [0m([4mEncrypted[24m [4mnetwork[24m [4mcommunication[34m[24m[]8;;#19\19]8;;\][0m), + and protocol specifics like [4mimap-auth[34m[24m[]8;;#677\677]8;;\][0m, [4mpop3-auth[34m[24m[]8;;#518\518]8;;\][0m, + [4msmtp-config[34m[24m[]8;;#573\573]8;;\][0m. + + account myisp { + set folder=˜/mail inbox=+syste.mbox record=+sent.mbox + set from=’(My Name) myname@myisp.example’ + set mta=smtp://me@smtp.myisp.example + } + + [1maddrcodec[22m]8;:id=146;#\]8;;\ + Perform email address codec transformations on raw-data argu‐ + ment, rather according to email standards (RFC 5322; [v15 be‐ + haviour may differ] will furtherly improve). Supports + [1mvput[34m[22m[]8;;#132\132]8;;\] [0mand the error number [4m![34m[24m[]8;;#351\351]8;;\][0m. The first argument must + be one of [4m[+[+[+]]]e[ncode][24m, [4md[ecode][24m, [4ms[kin][24m and [4mskinl[ist][24m. + + Decoding will show how a standard-compliant MUA will display + the data. MUAs have varying support for address standards re‐ + garding comments, parenthesis, double-quoted strings, or so- + called quoted-pairs. [v15 behaviour may differ] S-nail cur‐ + rently does not perform decoding when displaying addresses. + + Skinning is identical to decoding but only outputs the plain + address, without any string, comment etc. components. Another + difference is that it may fail with [4m![34m[24m[]8;;#351\351]8;;\] [0mset to + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL if decoding fails to find a(n) (valid) email + address, in which case the unmodified input will be output + again. + + [4mskinlist[24m first performs a skin operation, and thereafter checks + a valid result for whether it is registered via [1mmlist[34m[22m[]8;;#230\230]8;;\] [0mor + [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0m, eventually reporting the result in [4m![34m[24m[]8;;#351\351]8;;\] [0mas + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-EXIST. (That could become overwritten by an I/O er‐ + ror, though.) + + Encoding supports four different modes: the more plus signs, + the lesser standard imposed special bytes are converted to so- + called quoted-pairs. One plus sign to leave alone parenthesis, + two for double quotation marks, three for also leaving reverse + solidus alone. The result will be valid if a successful exit + status is reported ([v15 behaviour may differ] the current + parser fails this assertion for some constructs). [v15 behav‐ + iour may differ] Addresses need to be specified in between an‐ + gle brackets ‘<’, ‘>’ if the construct becomes more difficult, + otherwise the current parser will fail; it is not smart enough + to guess right. + + ? addrc enc "Hey, you",<diet@exam.ple>\ out\ there + "\"Hey, you\", \\ out\\ there" <diet@exam.ple> + ? addrc d "\"Hey, you\", \\ out\\ there" <diet@exam.ple> + "Hey, you", \ out\ there <diet@exam.ple> + ? addrc s "\"Hey, you\", \\ out\\ there" <diet@exam.ple> + diet@exam.ple + + [1malias[22m]8;:id=147;#\]8;;\, [1munalias[22m]8;:id=148;#\]8;;\ + [Only new quoting rules](a, una) Define or list, and remove, + respectively, address aliases, a method of creating personal + distribution lists that map single names to none to multiple + recipients, to be expanded after [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0mis left (see + [4mmetoo[34m[24m[]8;;#475\475]8;;\][0m). Without arguments the former shows a list of all + known aliases, one per line, with one argument only the expan‐ + sion of the given one. With two arguments, hyphen-minus ‘-’ + being the first, the recursive expansion of the second is + shown. + + In all other cases the given alias is created or appended to: + arguments must be valid alias names or other address types (see + [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m). The later re‐ + cursive expansion can be prevented by prefixing the desired + name with reverse solidus [1m\[22m. A valid alias name conforms to + [4mmta-aliases[34m[24m[]8;;#483\483]8;;\] [0msyntax, but follow-up characters can also be + the number sign ‘#’, colon ‘:’, commercial at ‘@’, exclamation + mark ‘!’, period ‘.’ as well as “any character that has the + high bit set”. The dollar sign ‘$’ may be the last character. + The number sign ‘#’ may need [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m. + + [v15 behaviour may differ] Unfortunately the colon is currently + not supported, as it interferes with normal address parsing + rules. [v15 behaviour may differ] High bit characters will + likely cause warnings at the moment for the same reasons why + colon is unsupported; also, in the future locale dependent + character set validity checks will be performed. + + ? alias cohorts bill jkf \mark kridle@ucbcory ˜/cohorts.mbox + ? alias mark mark@exam.ple + ? set mta-aliases=/etc/aliases + + [1malternates[22m]8;:id=149;#\]8;;\, [1munalternates[22m]8;:id=150;#\]8;;\ + [Only new quoting rules](alt) Manage a list of alternate ad‐ + dresses or names for the user, members of which will be removed + from recipient lists (but see [4mmetoo[34m[24m[]8;;#475\475]8;;\][0m). A set of implicit + alternates is formed out of LOGNAME[34m[]8;;#633\633]8;;\][0m, [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, + [4msender[34m[24m[]8;;#551\551]8;;\] [0mand [4mreply-to[34m[24m[]8;;#542\542]8;;\][0m. [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mwill not be used if + [4msender[34m[24m[]8;;#551\551]8;;\] [0mis set. + + The former command manages the error number [4m![34m[24m[]8;;#351\351]8;;\][0m. Without + arguments it shows the current alternates; only then it sup‐ + ports [1mvput[34m[22m[]8;;#132\132]8;;\][0m. Otherwise the given arguments are appended to + the alternate list; in [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode they instead replace + that list. + + [1manswered[22m]8;:id=151;#\]8;;\, [1munanswered[22m]8;:id=152;#\]8;;\ + Take a message list and mark each member as (not) having been + answered. Dependent on [4mmarkanswered[34m[24m[]8;;#468\468]8;;\] [0mthis mark may be set + automatically by [1mreply[34m[22m[]8;;#261\261]8;;\][0m. See [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m. + + [1mbind[22m]8;:id=153;#\]8;;\, [1munbind[22m]8;:id=154;#\]8;;\ + [Option][Only new quoting rules] Freely configure key bindings + for the M(ailx)-L(ine)-E(ditor) ([4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[0m + [4meditor[34m[24m[]8;;#15\15]8;;\][0m). The latter removes from the given context the + given key binding, both of which may be the wildcard ‘*’, so + that ‘unbind * *’ removes all bindings of all contexts. Due to + initialization order issues built-in sequences cannot become + unbound upon program startup, instead see + [4mline-editor-no-defaults[34m[24m[]8;;#461\461]8;;\][0m. + + Bindings are context-sensitive. This is not true for the + shared ‘base’ foundation upon which the other contexts are + build. The other contexts are ‘default’ that is used unless + otherwise documented, and ‘compose’ that is used in [4mCompose[0m + [4mmode[34m[24m[]8;;#8\8]8;;\][0m. + + With zero arguments, or with only a context name (may be wild‐ + card ‘*’) the former lists key bindings ([4mverbose[34m[24m[]8;;#616\616]8;;\][0mly). With + two or more arguments a specific binding is shown or (re)estab‐ + lished: the first is the context to which it shall apply, the + second is a comma-separated list of the “keys” that make up the + binding. All further arguments are joined to form the expan‐ + sion, and cause the binding to be created or updated. + + Normally the expansion of a triggered binding is immediately + committed as an input line, shall the user instead have an + editing option the last byte of the expansion must be a commer‐ + cial at ‘@’. Reverse solidus cannot be the last character of + an expansion. An empty expansion will be rejected. + + Bindings are specified as a comma-separated sequence of keys. + Each key list entry consists of a sequence of one or more + bytes. Byte sequence input is forcefully terminated after + [4mbind-inter-byte-timeout[34m[24m[]8;;#385\385]8;;\] [0mmilliseconds, whereas key se‐ + quences can be timed out via [4mbind-inter-key-timeout[34m[24m[]8;;#386\386]8;;\][0m, which + allows to share an identical key prefix in between many bind‐ + ings. Key list entries that start with colon ‘:’ name terminal + capabilities: many names are built-in and may be specified ei‐ + ther by their terminfo(5)[34m[]8;:id=700;man:terminfo(5)\700]8;;\][0m, or, if existing, + termcap(5)[34m[]8;:id=701;man:termcap(5)\701]8;;\] [0mname, regardless of the actually used terminal + control library. But any capability resolvable by the control + library or via [4mtermcap[34m[24m[]8;;#592\592]8;;\] [0mmay be used. + + ? bind default a,b echo one + ? bind default a,b,c echo two + ? bind default ab,c echo notbush city limit! + ? bind base $’\E’,d mle-snarf-word-fwd # Esc(ape) + ? bind base $’\E’,$’\c?’ mle-snarf-word-bwd # Esc,Delete + ? bind default $’\cA’,:khome,w ’echo Editable binding@’ + ? bind default a,b,c,d rm -irf / @ # Also editable + ? bind default :kf1 File % + ? bind compose :kf1 ˜v + + ? define kb-clear { + # Careful to re-bind mle-commit in same line! + \unbind * *;\ + \bind base $’\n’ mle-commit;\ + \bind base $’\c?’ mle-del-bwd;\ + \bind base $’\cE’ mle-go-end + } + + Notes. The entire comma-separated list is first parsed (over) + as a shell-token with whitespace as the field separator, then + parsed and expanded for real separated with comma, therefore + whitespace must be properly quoted ([4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\][0m)! Using Unicode reverse solidus escape sequences + renders bindings defunctional if the locale does not support + Unicode ([4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\][0m). Unresolvable terminal capabili‐ + ties render bindings defunctional, too. Adding, deleting or + modifying key bindings invalidates the internal prebuilt lookup + tree, it will be recreated as necessary: in ‘[4mverbose[34m[24m[]8;;#616\616]8;;\][0m=3’ + mode the resulting tree will be dumped. It is advisable to use + an initial escape or other control character (like ‘\cA’) for + user bindings in order to avoid ambiguities and reduce search + time. + + The following terminal capability names are built-in and can be + used in terminfo(5)[34m[]8;:id=702;man:terminfo(5)\702]8;;\] [0mor (if available) the two-letter + termcap(5)[34m[]8;:id=703;man:termcap(5)\703]8;;\] [0mnotation. See the respective manual for a list + of capabilities. The program infocmp(1)[34m[]8;:id=704;man:infocmp(1)\704]8;;\] [0mcan be used to + show all the capabilities of TERM[34m[]8;;#646\646]8;;\][0m, its [1m-x [22moption shows + supported extensions. + + [1mkbs [22mor [1mkb [22mBackspace. + [1mkdch1 [22mor [1mkD [22mDelete character. + [1mkDC [22mor [1m*4 [22m— shifted variant. + [1mkel [22mor [1mkE [22mClear to end of line. + [1mkext [22mor [1m@9 [22mExit. + [1mkich1 [22mor [1mkI [22mInsert character. + [1mkIC [22mor [1m#3 [22m— shifted variant. + [1mkhome [22mor [1mkh [22mHome. + [1mkHOM [22mor [1m#2 [22m— shifted variant. + [1mkend [22mor [1m@7 [22mEnd. + [1mknp [22mor [1mkN [22mNext page. + [1mkpp [22mor [1mkP [22mPrevious page. + [1mkcub1 [22mor [1mkl [22mLeft cursor (with more modifiers: see below). + [1mkLFT [22mor [1m#4 [22m— shifted variant. + [1mkcuf1 [22mor [1mkr [22mRight cursor (ditto). + [1mkRIT [22mor [1m%i [22m— shifted variant. + [1mkcud1 [22mor [1mkd [22mDown cursor (ditto). + [1mkDN [22m— shifted variant (only terminfo). + [1mkcuu1 [22mor [1mku [22mUp cursor (ditto). + [1mkUP [22m— shifted variant (only terminfo). + [1mkf0 [22mor [1mk0 [22mFunction key 0. Add one for each function key + up to [1mkf9 [22mand [1mk9[22m, respectively. + [1mkf10 [22mor [1mk; [22mFunction key 10. + [1mkf11 [22mor [1mF1 [22mFunction key 11. Add one for each function key + up to [1mkf19 [22mand [1mF9[22m, respectively. + + Some terminals support key-modifier combination extensions, + e.g., ‘Alt+Shift+xy’. For example, the delete key, [1mkdch1[22m: in + its shifted variant, the name is mutated to [1mkDC[22m, then a number + is appended for the states ‘Alt’ ([1mkDC3[22m), ‘Shift+Alt’ ([1mkDC4[22m), + ‘Control’ ([1mkDC5[22m), ‘Shift+Control’ ([1mkDC6[22m), ‘Alt+Control’ ([1mkDC7[22m), + finally ‘Shift+Alt+Control’ ([1mkDC8[22m). The same for the left cur‐ + sor key, [1mkcub1[22m: [1mKLFT[22m, [1mKLFT3[22m, [1mKLFT4[22m, [1mKLFT5[22m, [1mKLFT6[22m, [1mKLFT7[22m, [1mKLFT8[22m. + + [1mcall[22m]8;:id=155;#\]8;;\ [Only new quoting rules] Evaluate the given macro as created + via [1mdefine[34m[22m[]8;;#174\174]8;;\] [0m(otherwise an [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOENT error occurs). + Calling macros recursively excesses the stack size limit at + some point, resulting in a hard program abortion; (if usable) + this can be avoided by [1mxcall[34m[22m[]8;;#310\310]8;;\][0m. Both commands support + [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscoping. + + [1mcall_if[22m]8;:id=156;#\]8;;\ Does not fail for non-existing macros, otherwise identical to + [1mcall[34m[22m[]8;;#155\155]8;;\][0m. + + [1mcd[22m]8;:id=157;#\]8;;\ Synonym for [1mchdir[34m[22m[]8;;#161\161]8;;\][0m. + + [1mcertsave[22m]8;:id=158;#\]8;;\ [Option] Takes an optional message list and a filename and + saves the certificates of the message signatures to the named + file in both human-readable and PEM format, for example, to use + them for [4msmime-encrypt-USER@HOST[34m[24m[]8;;#566\566]8;;\] [0mspecializations. + + [1mcharsetalias[22m]8;:id=159;#\]8;;\, [1muncharsetalias[22m]8;:id=160;#\]8;;\ + [Only new quoting rules] Manage alias mappings of [4mCharacter[0m + [4msets[34m[24m[]8;;#12\12]8;;\][0m. The former command lists all mappings when used + without arguments, or only the given one with one; with two ar‐ + guments, hyphen-minus ‘-’ being the first, the second is in‐ + stead expanded recursively. In all other cases the given argu‐ + ments are treated as pairs of source and target character sets, + creating new or updating existing mappings. Mappings do not + apply to [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mlike [4mcharset-8bit[34m[24m[]8;;#397\397]8;;\][0m, and are + generally ignored if character set conversion is not available. + Mappings are expanded recursively (recursion limit: 8). + + [1mchdir[22m]8;:id=161;#\]8;;\ [Only new quoting rules](ch) Change the working directory to + the given argument or HOME[34m[]8;;#627\627]8;;\][0m. Synonym for [1mcd[34m[22m[]8;;#157\157]8;;\][0m. + + [1mcollapse[22m]8;:id=162;#\]8;;\, [1muncollapse[22m]8;:id=163;#\]8;;\ + Takes a message list and hides all replies to these messages + (for [1mheaders[34m[22m[]8;;#214\214]8;;\][0m), except for ‘new’ messages and the “dot”. + Also when a message with collapsed replies is displayed, these + are automatically uncollapsed. The latter command undoes col‐ + lapsing. Only applicable to threaded [1msort[34m[22m[]8;;#282\282]8;;\] [0mmode. + + [1mcolour[22m]8;:id=164;#\]8;;\, [1muncolour[22m]8;:id=165;#\]8;;\ + [Option][Only new quoting rules] Manage colour mappings of and + for a [4mColoured[24m [4mdisplay[34m[24m[]8;;#16\16]8;;\][0m. Without arguments the former shows + all defined mappings, otherwise a colour type is expected + (case-insensitively), one of ‘256’ for 256-colour terminals, + ‘8’, ‘ansi’ or ‘iso’ for the standard 8-colour ANSI / ISO 6429 + colour palette, and ‘1’ or ‘mono’ for monochrome terminals: + these only support (some) font attributes. Without further ar‐ + guments the list of all defined mappings of the given type is + shown. + + Otherwise the second argument defines a slot name, the third a + (comma-separated list of) colour and font attribute(s), and the + optionally supported fourth argument can be used to specify a + precondition: if conditioned mappings exist they are tested in + (creation) order unless a (case-insensitive) match has been + found, and the default mapping (if it exists) will only be cho‐ + sen as a last resort. Preconditions depend on slots, the fol‐ + lowing of which exist: + + Slot names prefixed with ‘mle-’ are used for the [Option]al + built-in Mailx-Line-Editor [4mMLE[34m[24m[]8;;#93\93]8;;\] [0m(see [4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[0m + [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m), and do not support preconditions. + + [4mmle-position[24m The position indicator that is visible when a + line cannot be fully displayed on the screen. + [4mmle-prompt[24m [4mprompt[34m[24m[]8;;#525\525]8;;\][0m. + [4mmle-error[24m [v15 behaviour may differ] Used for error mes‐ + sages written on standard error only. + + Slot names prefixed with ‘sum-’ are used by [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. Pre‐ + conditions are ‘dot’ (current message) and ‘older’ for elder + messages (only in conjunction with + [4mdatefield-markout-older[34m[24m[]8;;#411\411]8;;\][0m). + + [4msum-dotmark[24m Used for “dotmark” creatable with the + [4mheadline[34m[24m[]8;;#439\439]8;;\] [0mformats ‘%>’ or ‘%<’. + [4msum-header[24m For all summary line content except “dotmark” + and the threaded [1msort[34m[22m[]8;;#282\282]8;;\] [0mtree. + [4msum-thread[24m For the threaded [1msort[34m[22m[]8;;#282\282]8;;\] [0mtree creatable with + the [4mheadline[34m[24m[]8;;#439\439]8;;\] [0mformat ‘%i’. + + Slot names prefixed with ‘view-’ are used when messages are + [1mtype[34m[22m[]8;;#297\297]8;;\][0md. + + [4mview-from_[24m Used for so-called ‘From_’ lines, which are MBOX + file format specific header lines (also see + [4mmbox-rfc4155[34m[24m[]8;;#470\470]8;;\][0m). + [4mview-header[24m For header lines. A comma-separated list of + headers to which the mapping shall apply may be + given as a precondition; if the [Option]al regu‐ + lar expression support is available then it is + evaluated as one if it contains [4mmagic[24m [4mregular[0m + [4mexpression[24m [4mcharacters[34m[24m[]8;;#92\92]8;;\][0m. + [4mview-msginfo[24m For the introductional message info line. + [4mview-partinfo[24m For MIME part info lines. + + The following (case-insensitive) colour definitions and font + attributes are understood, multiple of which can be specified + in a comma-separated list: + + [4mft=[24m a font attribute: ‘bold’, ‘reverse’ or ‘underline’. + + [4mfg=[24m foreground colour attribute, in order (numbers 0 - 7) + ‘black’, ‘red’, ‘green’, ‘brown’, ‘blue’, ‘magenta’, + ‘cyan’ or ‘white’. To specify a 256-colour mode a decimal + number colour specification in the range 0 to 255, inclu‐ + sive, is supported, and interpreted as follows: + + 0 - 7 the standard ISO 6429 colours, as above. + 8 - 15 high intensity variants of the standard + colours. + 16 - 231 216 colours in tuples of 6. + 232 - 255 grayscale from black to white in 24 steps. + + #!/bin/sh - + fg() { printf "\033[38;5;${1}m($1)"; } + bg() { printf "\033[48;5;${1}m($1)"; } + i=0 + while [ $i -lt 256 ]; do fg $i; i=$(($i + 1)); done + printf "\033[0m\n" + i=0 + while [ $i -lt 256 ]; do bg $i; i=$(($i + 1)); done + printf "\033[0m\n" + + [4mbg=[24m background colour attribute (same values as [1mfg=[22m). + + The command [1muncolour[34m[22m[]8;;#165\165]8;;\] [0mwill remove for the given colour type + (or all with ‘*’) the given mapping; if the optional precondi‐ + tion argument is given only the exact tuple of mapping and pre‐ + condition is removed. The special name ‘*’ will remove all + mappings (no precondition allowed), thus ‘uncolour * *’ will + remove all established mappings. + + [1mcommandalias[22m]8;:id=166;#\]8;;\, [1muncommandalias[22m]8;:id=167;#\]8;;\ + [Only new quoting rules] Define or list, and remove, respec‐ + tively, command aliases. Aliases can always be used in place + of normal command names, and any given arguments are joined + onto the alias expansion. Without arguments the former shows + the list of all aliases and their expansion, with one argument + only the given one. + + With two or more arguments an alias is defined or updated: the + first is the name, the remains can be just about anything. An + alias may expand to another alias, but same-name expansion is + prevented (after first level), and there is a recursion depth + limit. Explicit expansion prevention is available via reverse + solidus [1m\[34m[22m[]8;;#126\126]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). + + ? commandalias xx + s-nail: ‘commandalias’: no such alias: xx + ? commandalias xx echo hello, + ? commandalias xx + commandalias xx ’echo hello,’ + ? xx world + hello, world + ? commandalias q q; commandalias x q; help x + x -> q -> q (quit): Exit session [.] + + [1mCopy[22m]8;:id=168;#\]8;;\ (C) Similar to [1mcopy[34m[22m[]8;;#169\169]8;;\][0m, but copy messages to a file named af‐ + ter the local part of the sender of the first message instead + of taking a filename argument; [4moutfolder[34m[24m[]8;;#493\493]8;;\] [0mis inspected to + decide on the actual storage location. + + [1mcopy[22m]8;:id=169;#\]8;;\ (c) Copy messages to the named file and do not mark them as be‐ + ing saved; otherwise identical to [1msave[34m[22m[]8;;#268\268]8;;\][0m. + + [1mcsop[22m]8;:id=170;#\]8;;\ [Option][Only new quoting rules] Multiplexer that provides + string operations on 8-bit US-ASCII bytes without a notion of + [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\][0m. For file operations refer to [1mfop[34m[22m[]8;;#208\208]8;;\][0m, for + numeric and other operations to [1mvexpr[34m[22m[]8;;#306\306]8;;\][0m. [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[0m + [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m) is supported. The error result is ‘-1’ for us‐ + age errors and numeric results, the empty string otherwise; + missing data errors, as for unsuccessful searches, set [4m![34m[24m[]8;;#351\351]8;;\][0m + to [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NODATA. When the modifier suffix question mark + ‘?’ is supported, a case-insensitive mode is supported; the + keyword ‘case’ is optional so that ‘find?’ and ‘find?case’ are + identical. + + [1mlength [22mQuery the argument length. + + [1mhash[22m, [1mhash32 [22mCalculate a (32-bit) hash of the argument. ‘?’ + modifier is supported. These use Chris Torek’s hash + algorithm, the resulting hash value is bit mixed as + shown by Bret Mulvey. + + [1mfind [22mSearch for the second in the first argument, show + 0-based offset upon success. ‘?’ modifier is sup‐ + ported. + + [1msubstring [22mCreate a substring of the first argument. The op‐ + tional second argument could specify a 0-based start‐ + ing offset, a negative one counts from the end. The + optional third argument defines the desired result + length, a negative one leaves off the given number of + bytes at the end of the original string; by default + the entire string is used. This operation tries to + work around faulty arguments ([1mset[34m[22m[]8;;#271\271]8;;\] [0m[4mverbose[34m[24m[]8;;#616\616]8;;\][0m + for error logs), but reports them via the error num‐ + ber [4m![34m[24m[]8;;#351\351]8;;\] [0mas [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-OVERFLOW. + + [1mtrim [22mTrim away whitespace from both ends of the argument. + + [1mtrim-front [22mTrim away whitespace from the begin of the argument. + + [1mtrim-end [22mTrim away whitespace from the end of the argument. + + [1mcwd[22m]8;:id=171;#\]8;;\ Show the current working directory name as reported by + getcwd(3)[34m[]8;:id=705;man:getcwd(3)\705]8;;\][0m. Supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). + The return status is tracked via [4m?[34m[24m[]8;;#350\350]8;;\][0m. + + [1mDecrypt[22m]8;:id=172;#\]8;;\, [1mdecrypt[22m]8;:id=173;#\]8;;\ + [Option] For unencrypted messages identical to [1mCopy[34m[22m[]8;;#168\168]8;;\][0m; En‐ + crypted messages are first decrypted, if possible, and then + copied. + + [1mdefine[22m]8;:id=174;#\]8;;\, [1mundefine[22m]8;:id=175;#\]8;;\ + The latter deletes the given macro, ‘*’ discards all existing + ones. Deletion, including self-deletion, is always possible. + The former lists all or only the given macro(s), with two argu‐ + ments it defines or replaces a macro. Macro names are free- + form but must form a single token ([4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\][0m). + + Macros can be evaluated by [1mcall[34m[22m[]8;;#155\155]8;;\][0m, [1mcall_if[34m[22m[]8;;#156\156]8;;\] [0mor + [1mxcall[34m[22m[]8;;#310\310]8;;\][0m, optionally with [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscoping. Inside a run‐ + ning macro positional parameters can be accessed via [4m*[34m[24m[]8;;#361\361]8;;\][0m, + [4m@[34m[24m[]8;;#362\362]8;;\][0m, [4m#[34m[24m[]8;;#363\363]8;;\] [0mand [4m1[34m[24m[]8;;#365\365]8;;\] [0mas well as any positive unsigned dec‐ + imal number less than or equal to [4m#[34m[24m[]8;;#363\363]8;;\][0m; they can be + [1mshift[34m[22m[]8;;#278\278]8;;\][0med away, and become exchanged via [1mvpospar[34m[22m[]8;;#307\307]8;;\][0m. + [1mvexpr[34m[22m[]8;;#306\306]8;;\] [0mis a numeric computation helper. [1mreturn[34m[22m[]8;;#266\266]8;;\] [0mcan be + used to explicitly give back control to the caller. + + ? unset prompt + define name { + command1 + ... + commandN + } + + define exmac { + echo Parameter 1 of ${#} is ${1}, all: ${*} / ${@} + return 1000 0 + } + + set prompt=’? ’ + ? call exmac Hello macro exmac! + ? echo ${?}/${!}/${ˆERRNAME} + + [1mdelete[22m]8;:id=176;#\]8;;\, [1mundelete[22m]8;:id=177;#\]8;;\ + (d, u) Mark the [4mMessage[24m [4mlist[24m [4marguments[34m[24m[]8;;#26\26]8;;\] [0m(not) ‘deleted’, one + of the [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m. If [4mautoprint[34m[24m[]8;;#381\381]8;;\] [0mis set, the new + “dot” or the last message restored, respectively, is automati‐ + cally [1mtype[34m[22m[]8;;#297\297]8;;\][0md; also see [1mdp[34m[22m[]8;;#180\180]8;;\][0m, [1mdt[34m[22m[]8;;#181\181]8;;\][0m. + + [1mdigmsg[22m]8;:id=178;#\]8;;\ [Only new quoting rules] An object that digs (information out + of) a message can be [1mcreate[22md for the given message number; in + [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0mthe hyphen-minus ‘-’ instead uses the draft + message. The optional third argument hyphen-minus redirects + object output to standard output instead of making it consum‐ + able by [1mreadall[34m[22m[]8;;#255\255]8;;\][0m, [1mread[34m[22m[]8;;#253\253]8;;\] [0mor [1mreadsh[34m[22m[]8;;#254\254]8;;\][0m. Without redi‐ + rection output must always be consumed (until end of file, + EOF)! Objects should be [1mremove[22md to prevent resource exhaus‐ + tion; it happens automatically when their [1mfolder[34m[22m[]8;;#203\203]8;;\] [0m(or com‐ + pose mode) is left. + + In all other use cases the first argument is the object’s mes‐ + sage number, the remaining arguments are interpreted as for + [1m˜ˆ[34m[22m[]8;;#322\322]8;;\] [0m([4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m): + + ? vput = msgno; digmsg create $msgno + ? digmsg $msgno header list; readall x; echon $x + 210 Subject From To Message-ID References In-Reply-To + ? digmsg $msgno header show Subject;readall x;echon $x + 212 Subject + 'Hello, world’ + + ? digmsg remove $msgno + + [1mdiscard[22m]8;:id=179;#\]8;;\ (di) Identical to [1mignore[34m[22m[]8;;#219\219]8;;\][0m. Superseded by the multiplexer + [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. + + [1mdp[22m]8;:id=180;#\]8;;\, [1mdt[22m]8;:id=181;#\]8;;\ Delete given messages and thereafter [1mtype[34m[22m[]8;;#297\297]8;;\] [0ma possible new + “dot” regardless of [4mautoprint[34m[24m[]8;;#381\381]8;;\][0m. + + [1mdotmove[22m]8;:id=182;#\]8;;\ Move the “dot” up ‘+’ or down ‘-’ by one message if possible, + then update [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. + + [1mdraft[22m]8;:id=183;#\]8;;\, [1mundraft[22m]8;:id=184;#\]8;;\ + Mark each given message as (not) being a draft ([4mMessage[0m + [4mstates[34m[24m[]8;;#13\13]8;;\][0m). + + [1mecho[22m]8;:id=185;#\]8;;\ [Only new quoting rules](ec) Print arguments after expanding + their [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m, then a newline. + [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m) is supported, the error num‐ + ber [4m![34m[24m[]8;;#351\351]8;;\] [0mis managed: with [1mvput[34m[22m[]8;;#132\132]8;;\] [0mthe result length is re‐ + turned on success, ‘-1’ on error. Remarks: in BSD Mail this + command also performed [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m, which is + standard incompatible and hard to handle because quoting trans‐ + formation patterns is not possible; the subcommand [1mfile-expand[0m + of [1mvexpr[34m[22m[]8;;#306\306]8;;\] [0mcan be used to expand filenames. + + [1mechoerr[22m]8;:id=186;#\]8;;\ [Only new quoting rules] Like [1mecho[34m[22m[]8;;#185\185]8;;\][0m, but write to standard + error and prefix lines by [4mlog-prefix[34m[24m[]8;;#462\462]8;;\][0m. Also see + [1mechoerrn[34m[22m[]8;;#188\188]8;;\][0m. [Option] In interactive sessions and if + [1mvput[34m[22m[]8;;#132\132]8;;\] [0mwas not used message duplicates are stored in the + [1merrors[34m[22m[]8;;#194\194]8;;\] [0mqueue. + + [1mechon[22m]8;:id=187;#\]8;;\ [Only new quoting rules] Like [1mecho[34m[22m[]8;;#185\185]8;;\][0m, but do not append a + newline. + + [1mechoerrn[22m]8;:id=188;#\]8;;\ [Only new quoting rules] like [1mechoerr[34m[22m[]8;;#186\186]8;;\][0m, but do not append a + newline. + + [1medit[22m]8;:id=189;#\]8;;\ (e) Successively open EDITOR[34m[]8;;#626\626]8;;\] [0mon each entry of the given + message list. Modified contents are discarded unless + [4mwritebackedited[34m[24m[]8;;#623\623]8;;\] [0mis set, the mailbox can be written to, and + the editor returned success. [1mvisual[34m[22m[]8;;#308\308]8;;\] [0mcan be used instead + for a more display oriented editor. + + [1melif[22m]8;:id=190;#\]8;;\ Part of the [1mif[34m[22m[]8;;#218\218]8;;\] [0m(see there), [1melif[34m[22m[]8;;#190\190]8;;\][0m, [1melse[34m[22m[]8;;#191\191]8;;\][0m, + [1mendif[34m[22m[]8;;#192\192]8;;\] [0mconditional. An else-if block is evaluated if for‐ + mer blocks were not and its condition arguments are true. + + [1melse[22m]8;:id=191;#\]8;;\ (el) Part of the [1mif[34m[22m[]8;;#218\218]8;;\] [0m(see there), [1melif[34m[22m[]8;;#190\190]8;;\][0m, [1melse[34m[22m[]8;;#191\191]8;;\][0m, + [1mendif[34m[22m[]8;;#192\192]8;;\] [0mconditional. An else block is evaluated only if + none of the condition blocks matched. + + [1mendif[22m]8;:id=192;#\]8;;\ (en) Marks the end of an [1mif[34m[22m[]8;;#218\218]8;;\] [0m(see there), [1melif[34m[22m[]8;;#190\190]8;;\][0m, + [1melse[34m[22m[]8;;#191\191]8;;\][0m, [1mendif[34m[22m[]8;;#192\192]8;;\] [0mconditional execution block. + + [1menviron[22m]8;:id=193;#\]8;;\ [Only new quoting rules] The process [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0mand + [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mmay be linked together as long as + SHELL[34m[]8;;#643\643]8;;\] [0m[4mvariable[24m [4mname[24m [4mrules[34m[24m[]8;;#133\133]8;;\] [0mare honoured. The subcom‐ + mands [1mset [22mand [1munset [22mdo this inclusive value updates, whereas + [1mlink [22mand [1munlink [22monly manage link state: if an according inter‐ + nal variable already exists ([1mif[34m[22m[]8;;#218\218]8;;\][0m), the environment is syn‐ + chronized immediately, if it only exists in the environment in‐ + stead an internal variable is created, otherwise an error oc‐ + curs. Changes are scopeable via [1mlocal[34m[22m[]8;;#130\130]8;;\][0m; ‘[1mlocal[34m[22m[]8;;#130\130]8;;\][0m + [1mset[34m[22m[]8;;#271\271]8;;\] [0msame-name’ (still) shadows a linked environment vari‐ + able. The subcommand [1mlookup [22mlooks up the given variable in the + process environment only; it supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0mand sets [4m![34m[24m[]8;;#351\351]8;;\][0m + to [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOENT upon lookup failure. + + # With *errexit*, do not exit if PERL5LIB does not exist + ? ignerr environ link PERL5LIB + ? if $? -ne 0 + ? echoerr PERL5LIB not in environment, using ˜/.perl5 + ? environ set PERL5LIB=˜/.perl5 + ? endif + ? environ set PERL5LIB=$PERL5LIB:/home/shared/perl5 + ? vput environ storvar lookup PERL5LIB; echo $storvar + + [1merrors[22m]8;:id=194;#\]8;;\ [Option] Manages the queue of error messages. Error messages + sometimes fly by and scroll off the screen fast; In interactive + sessions they are duplicated into this queue, more so with + [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. [4mshow[24m or no argument will display and clear the + queue, [4mclear[24m will only clear it. As the queue becomes filled + with [4merrors-limit[34m[24m[]8;;#420\420]8;;\] [0mentries the eldest entries are being + dropped. There are also [4mˆERRQUEUE-COUNT[34m[24m[]8;;#359\359]8;;\] [0mand + [4mˆERRQUEUE-EXISTS[34m[24m[]8;;#360\360]8;;\][0m. + + [1mexit[22m]8;:id=195;#\]8;;\ (ex or x) Exit without updating the active mailbox, skip any + saving of messages in the [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\][0m, do + not save the line editor [4mhistory-file[34m[24m[]8;;#442\442]8;;\][0m, among others. + [4mon-account-cleanup[34m[24m[]8;;#494\494]8;;\] [0mis evaluated when set. The optional + status number argument is passed through to exit(3)[34m[]8;:id=706;man:exit(3)\706]8;;\][0m. [v15 + behaviour may differ] For now it can happen that the given sta‐ + tus will be overwritten, later this will only occur if a later + error needs to be reported onto an otherwise success indicating + status. + + [1mFile[22m]8;:id=196;#\]8;;\ (Fi) Like [1mfolder[34m[22m[]8;;#203\203]8;;\][0m, but open the mailbox read-only. + + [1mfile[22m]8;:id=197;#\]8;;\ (fi) See [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. + + [1mfiletype[22m]8;:id=198;#\]8;;\, [1munfiletype[22m]8;:id=199;#\]8;;\ + [Only new quoting rules] Define, list, and remove, file handler + hooks. These provide (shell) commands that enable loading and + saving MBOX files from and to files with registered file exten‐ + sions, as shown and described for [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. The extensions + are used case-insensitively (US-ASCII), yet the auto-completion + feature of for example [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mwill only work case-sensi‐ + tively. An intermediate temporary file will be used to store + the expanded data. The latter command removes hooks for the + given extensions, asterisk ‘*’ will remove all existing han‐ + dlers. + + When used without arguments the former shows a list of all + types, with one argument the expansion of the given one. Oth‐ + erwise three arguments are expected: the first specifies the + file extension, the second and third define load- and save com‐ + mands; both must read from standard input and write to standard + output. Changing hooks will not affect already opened mail‐ + boxes ([v15 behaviour may differ] except below). [v15 behav‐ + iour may differ] For now too much work is done, and files are + oftened read in twice where once would be sufficient: this can + cause problems if a filetype is changed while such a file is + opened; this was already so with the built-in support of .gz + etc. in Heirloom, and will vanish in v15. [v15 behaviour may + differ] For now all handler strings are passed to the + SHELL[34m[]8;;#643\643]8;;\] [0mfor evaluation purposes; in the future a ‘!’ prefix + to load and save commands may mean to bypass this shell in‐ + stance: placing a leading space will avoid any possible misin‐ + terpretations. + + ? filetype bz2 ’bzip2 -dc’ ’bzip2 -zc’ \ + gz ’gzip -dc’ ’gzip -c’ xz ’xz -dc’ ’xz -zc’ \ + zst ’zstd -dc’ ’zstd -19 -zc’ \ + zst.pgp ’gpg -d | zstd -dc’ ’zstd -19 -zc | gpg -e’ + ? set record=+sent.zst.pgp + + [1mflag[22m]8;:id=200;#\]8;;\, [1munflag[22m]8;:id=201;#\]8;;\ + Take message lists and mark the messages as being flagged, or + not being flagged, respectively, for urgent/special attention. + See the section [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m. + + [1mFolder[22m]8;:id=202;#\]8;;\ (Fold) Like [1mfolder[34m[22m[]8;;#203\203]8;;\][0m, but open the mailbox read-only. + + [1mfolder[22m]8;:id=203;#\]8;;\ (fold) Open a new, or show informations about the current mail‐ + box. When opening the current mailbox is synchronized and + closed first. [4mname[24m undergoes [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m, and + URL ([4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m) ‘mailbox-type://’ + prefixes are understood, as in ‘mbox:///tmp/somefolder’, or, in + general: + + protocol://[user[:password]@]host[:port][/path] + + Without mailbox type fixation opening none-existing + [1mfolders[34m[22m[]8;;#205\205]8;;\] [0muses the [4mnewfolders[34m[24m[]8;;#491\491]8;;\] [0mprotocol. After the + mailbox has been opened [4mmailbox-resolved[34m[24m[]8;;#465\465]8;;\] [0mand + [4mmailbox-display[34m[24m[]8;;#464\464]8;;\] [0mare updated, a set [4mon-mailbox-open[34m[24m[]8;;#501\501]8;;\] [0mis + evaluated, and optionally a summary of [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mis dis‐ + played if [4mheader[34m[24m[]8;;#438\438]8;;\] [0mis set. + + For the protocols [4mmbox[24m and [4mfile[24m (MBOX database), as well as [4meml[0m + (electronic mail message [v15 behaviour may differ] read-only) + the list of all registered [1mfiletype[34m[22m[]8;;#198\198]8;;\][0ms is traversed to check + whether hooks shall be used to load (and save) data from (and + to) the given [4mname[24m (except for the “-” special case as docu‐ + mented for [1m-f[34m[22m[]8;;#68\68]8;;\][0m). Changing hooks will not affect already + opened mailboxes. + + [Obsolete] For historical reasons [1mfiletype[34m[22m[]8;;#198\198]8;;\][0ms provide lim‐ + ited (case-sensitive) auto-completion capabilities. For exam‐ + ple ‘mbox.gz’ will be found for ‘? file mbox’, provided that + corresponding handlers are installed. It will neither find + ‘mbox.GZ’ nor ‘mbox.Gz’ however, but an explicit ‘? file + mbox.GZ’ will find and use the handler for ‘gz’. This will + vanish in v15! + + EML files consist of only one mail message, [v15 behaviour may + differ] and can only be opened read-only. When reading MBOX + files tolerant POSIX rules are used by default. Invalid mes‐ + sage boundaries that can be found quite often in historic MBOX + files will be complained about (even more with [4mdebug[34m[24m[]8;;#412\412]8;;\][0m): in + this case the method described for [4mmbox-rfc4155[34m[24m[]8;;#470\470]8;;\] [0mmay be + used to create a valid MBOX database. + + During file operations MBOX databases and EML files are pro‐ + tected by file-region locks (fcntl(2)[34m[]8;:id=707;man:fcntl(2)\707]8;;\][0m). ]8;:id=204;#\]8;;\[Option] Unless + [4mdotlock-disable[34m[24m[]8;;#415\415]8;;\][0md an MBOX [4minbox[34m[24m[]8;;#453\453]8;;\] [0m(MAIL[34m[]8;;#634\634]8;;\][0m) and any + [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mare additionally protected by so- + called dotlock files, the traditional way of mail spool file + locking: for any file ‘x’ a lock file ‘x.lock’ will be created + during the synchronization, in the same directory and with the + same user and group identities as the file of interest — as + necessary created by an external privileged dotlock helper. + Also see [4mFAQ[34m[24m[]8;;#43\43]8;;\][0m: [4mHowto[24m [4mhandle[24m [4mstale[24m [4mdotlock[24m [4mfiles[34m[24m[]8;;#49\49]8;;\][0m. + + [Option] If no protocol has been fixated, and [4mname[24m refers to a + directory with the subdirectories ‘tmp’, ‘new’ and ‘cur’, then + it is treated as a “Maildir” folder. The maildir format stores + each message in its own file, and has been designed so that + file locking is not necessary when reading or writing files. + + [Option] Network mail protocol resources may be addressed, se‐ + curely via [4mEncrypted[24m [4mnetwork[24m [4mcommunication[34m[24m[]8;;#19\19]8;;\] [0mif so supported: + [4mpop3[24m (POP3) and [4mpop3s[24m (POP3 via TLS), see [4mpop3-auth[34m[24m[]8;;#518\518]8;;\][0m, as + well as [4mimap[24m and [4mimaps[24m (IMAP via TLS), see [4mIMAP[24m [4mCLIENT[34m[24m[]8;;#50\50]8;;\][0m. + For IMAP the [4m[/path][24m URL part defaults to ‘INBOX’. All network + traffic may be proxied over a SOCKS5 server via + [4msocks-proxy[34m[24m[]8;;#578\578]8;;\][0m. Network communication socket timeouts are + configurable via [4msocket-connect-timeout[34m[24m[]8;;#577\577]8;;\][0m. + + [1mfolders[22m]8;:id=205;#\]8;;\ Lists the names of all folders below the given argument or + [4mfolder[34m[24m[]8;;#427\427]8;;\][0m. For file-based protocols LISTER[34m[]8;;#632\632]8;;\] [0mwill be used + for display purposes. + + [1mFollowup[22m]8;:id=206;#\]8;;\, [1mfollowup[22m]8;:id=207;#\]8;;\ + (Compose mode)(F,fo) Similar to [1mReply[34m[22m[]8;;#259\259]8;;\] [0maka [1mreply[34m[22m[]8;;#261\261]8;;\][0m, but + save the message in a file named after the local part of the + first recipient’s address (like [1m-F[34m[22m[]8;;#67\67]8;;\][0m), overwriting + [4mrecord[34m[24m[]8;;#537\537]8;;\][0m, but honouring [4moutfolder[34m[24m[]8;;#493\493]8;;\][0m. Also see [1mCopy[34m[22m[]8;;#168\168]8;;\][0m + and [1mSave[34m[22m[]8;;#267\267]8;;\][0m. + + [1mfop[22m]8;:id=208;#\]8;;\ [Option][Only new quoting rules] A multiplexer command for file + operations. For C-style byte string operations refer to + [1mcsop[34m[22m[]8;;#170\170]8;;\][0m, for numeric and other operations to [1mvexpr[34m[22m[]8;;#306\306]8;;\][0m. The + first argument defines the number, type, and meaning of the re‐ + maining ones. Unless otherwise noted subcommands expect file + descriptors opened via [1mflock[22m, [1mlflock[22m, [1mlock[22m, [1mllock[22m, [1mopen[22m; stan‐ + dard input and output are accepted, regardless of their valid‐ + ity for the operation. Supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m(see [4mCommand[0m + [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). Except when otherwise noted errors will be re‐ + ported via [4m![34m[24m[]8;;#351\351]8;;\][0m, and the error result is the empty string. + Filename arguments undergo [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m. + + [1mclose [22mClose the given file descriptor. Standard descrip‐ + tors cannot be closed. + + [1mexpand [22mOnly perform name transformations. + + [1mftruncate [22mTruncate the given file descriptor to its current + file position (also see [1mrewind[22m). + + [1mflock[22m, [1mlflock[22m, [1mlock[22m, [1mllock [22mOpen the given filename, then apply + a shared read (‘R, r’), or an exclusive read and (ap‐ + pending) write (‘W, w, A, a’) lock according to mode + argument (second); uppercase variants log retries to + gain the lock, writer ones create the file first as + necessary, they will truncate the file to zero size + first if a ‘0’ is part of the mode; further opera‐ + tion-success-echoes on the open descriptor can be + suppressed by adding a circumflex ‘ˆ’ (for example + ‘fop lock ./a-file.txt A0ˆ’). On success the de‐ + scriptor number is printed, and must be [1mclose[22md again + explicitly. [1mllock [22mdiffers by not following symbolic + links. + + [Option]([4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mincludes ‘,+flock,’) Different + to the fcntl(2)[34m[]8;:id=708;man:fcntl(2)\708]8;;\] [0mbased locks [1mflock [22muses the sys‐ + tem call flock(2)[34m[]8;:id=709;man:flock(2)\709]8;;\][0m, and creates locks which are + inherited by child processes. ([1mlflock [22mdoes not fol‐ + low symbolic links.) Giving a third argument turns + these to one-shots that automatically close opened + descriptors: it is passed to a newly spawned + SHELL[34m[]8;;#643\643]8;;\] [0mthat inherits the descriptor as standard + input for shared locks, as standard input and output + otherwise; If the shell could be started its exit + status code is returned, and the normal result is + suppressed but for [1mvput[34m[22m[]8;;#132\132]8;;\][0m. + + [1mmkdir [22mCreate a new directory. The optional second argument + is a boolean that denotes whether parent directories + shall be created as necessary. + + [1mmktmp [22mCreate a temporary file and output its name. The op‐ + tional first (and non-empty) argument will be used as + a filename suffix, the (optional) second a target di‐ + rectory to be used instead of TMPDIR[34m[]8;;#647\647]8;;\][0m. + + [1mopen [22mOpen the given file with the mode given second, ei‐ + ther in read-only (‘r’), or read- and (appending) + write (‘W, w, A, a’) mode; writer ones create the + file first as necessary, uppercase versions fail if + the file already exists, otherwise, the file will be + truncated to zero size first if a ‘0’ is part of the + mode; further operation-success-echoes on the open + descriptor can be suppressed by adding a circumflex + ‘ˆ’ (for example ‘fop open ./a-file.txt A0ˆ’). On + success the descriptor number is printed, and must be + [1mclose[22md again explicitly. + + [1mpass [22mTakes two file descriptor arguments to be passed as + standard I/O to the SHELL[34m[]8;;#643\643]8;;\] [0mcommand given third; + beside the usual numbered ones the hyphen-minus ‘-’ + for passing through the according standard I/O, or + commercial at ‘@’ for [4m/dev/null[34m[24m[]8;;#657\657]8;;\][0m; passing stan‐ + dard descriptors via number is not supported. If the + shell could be started its exit status code is re‐ + turned, the normal result is suppressed but for [1mvput.[0m + + [1mrename [22mrename(2)[34m[]8;:id=710;man:rename(2)\710]8;;\][0m. [1mRemarks: [22mthe first argument is the + destination, the second the source. + + [1mrewind [22mrewind(3)[34m[]8;:id=711;man:rewind(3)\711]8;;\] [0mthe file descriptor with the given + number. + + [1mrm [22munlink(2)[34m[]8;:id=712;man:unlink(2)\712]8;;\][0m. + + [1mrmdir [22mrmdir(2)[34m[]8;:id=713;man:rmdir(2)\713]8;;\][0m. + + [1mstat[22m, [1mlstat [22mstat(2)[34m[]8;:id=714;man:stat(2)\714]8;;\] [0mthe given file and output values such + that ‘vput fop x stat FILE; eval set $x’ creates ac‐ + cessible variables. [1mlstat [22mdiffers by not following + symbolic links when opening a file. The time fields + are named ‘st_Xtime’ for the second, and + ‘st_Xtimensec’ for the nanosecond (maybe 0), where + ‘X’ is one of a(ccess), c(hange) and m(odification). + ‘st_type’ uses solidus ‘/’ to denote directories, + commercial at ‘@’ for links, number sign ‘#’ for + block devices, percent sign ‘%’ for for character de‐ + vices, vertical bar ‘|’ for FIFOs, equal sign ‘=’ for + sockets, and the period ‘.’ for the rest. + + [1mtouch[22m, [1mltouch [22mUpdate file times, creating the file first as + necessary. [1mltouch [22mdiffers by not following symbolic + links when creating the file. + + [1mForward[22m]8;:id=209;#\]8;;\ (Compose mode) Similar to [1mforward[34m[22m[]8;;#210\210]8;;\][0m, but save the message in + a file named after the local part of the first recipient’s ad‐ + dress, overwriting [4mrecord[34m[24m[]8;;#537\537]8;;\][0m, but honouring [4moutfolder[34m[24m[]8;;#493\493]8;;\][0m. + + [1mforward[22m]8;:id=210;#\]8;;\ (Compose mode) Takes a message list and the address of a recip‐ + ient, subject to [4mfullnames[34m[24m[]8;;#437\437]8;;\][0m, to whom the messages shall be + sent. The text of the original message is included in the new + one, enclosed by the values of [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\] [0mand + [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. + [4mcontent-description-forwarded-message[34m[24m[]8;;#404\404]8;;\] [0mis inspected. The + list of included headers can be filtered with the ‘forward’ + slot of [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. Only the first part of a MIME multi‐ + part message is included but for [4mforward-as-attachment[34m[24m[]8;;#433\433]8;;\][0m. + + This may generate the errors [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-DESTADDRREQ if no recip‐ + ient has been specified, or was rejected by [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m + policy, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-IO if an I/O error occurs, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP + if a necessary character set conversion fails, and + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL for other errors. It can also fail with errors + of [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. Any error stops processing of fur‐ + ther messages. + + [1mfrom[22m]8;:id=211;#\]8;;\ (f) Takes a message list, and displays a summary as via + [1mheaders[34m[22m[]8;;#214\214]8;;\][0m, making the first (the last with [4mshowlast[34m[24m[]8;;#553\553]8;;\][0m) + message of the result the new “dot”. An alias of this command + is [1msearch[34m[22m[]8;;#269\269]8;;\][0m. Also see [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. + + [1mheaderpick[22m]8;:id=212;#\]8;;\, [1munheaderpick[22m]8;:id=213;#\]8;;\ + [Only new quoting rules] Multiplexer that manages header field + selection. The latter always takes three or more arguments and + removes from the given context and the given type the given + headers, all headers with ‘*’. Without arguments the former + shows established settings of all contexts. Otherwise the + first argument is the context, one of (case-insensitive) ‘type’ + for display purposes (for example [1mtype[34m[22m[]8;;#297\297]8;;\][0m), ‘save’ for se‐ + lecting which headers shall be stored persistently ([1msave[34m[22m[]8;;#268\268]8;;\][0m, + [1mcopy[34m[22m[]8;;#169\169]8;;\][0m, [1mmove[34m[22m[]8;;#235\235]8;;\][0m, [1mdecrypt[34m[22m[]8;;#173\173]8;;\][0m; [4mnote:[24m ignoring MIME related + etc. headers destroys message usability), ‘forward’ for + [1mforward[34m[22m[]8;;#210\210]8;;\][0med (except with [4mforward-as-attachment[34m[24m[]8;;#433\433]8;;\][0m), mes‐ + sages, and ‘top’ for defining a user-defined list of fields for + [1mtop[34m[22m[]8;;#294\294]8;;\][0m. + + With only a context the current settings are shown. A restric‐ + tion type may be given second, (a case-insensitive prefix of) + ‘retain’ for positive or ‘ignore’ for negative filtering, in‐ + spected only if no positive one exists. Again, without further + arguments the current settings are shown. Further arguments + specify header fields, [Option]ally specified as regular ex‐ + pressions, to be added to the given type. The special wildcard + field (asterisk, ‘*’) will establish a (fast) shorthand setting + which covers all fields. + + [1mheaderpick [22msupports creation and usage of user specified con‐ + texts. This mode is selected with (a case-insensitive prefix + of) the “context names” [1mcreate[22m, [1mremove[22m, [1massign[22m, [1mjoin[22m; the real + name is given next, it is case-insensitive (US-ASCII), must not + shadow a built-in name, and has to adhere to [4mvariable[24m [4mname[0m + [4mrules[34m[24m[]8;;#133\133]8;;\][0m. Trying to create a context a second time is an er‐ + ror. The name of another, constant template context is given + third to [1massign [22mand [1mjoin[22m, whereas the former clears the target + context first, the latter does not; in case of errors both + clear the target context. + + [1mheaders[22m]8;:id=214;#\]8;;\ (h) Show the current group of headers, the size of which de‐ + pends on [4mscreen[34m[24m[]8;;#547\547]8;;\] [0min interactive mode, and the format of + which can be defined with [4mheadline[34m[24m[]8;;#439\439]8;;\][0m. Without a message + list argument the group surrounding the “dot” is shown, other‐ + wise the first (the last with [4mshowlast[34m[24m[]8;;#553\553]8;;\][0m) message becomes + the new “dot”. + + [1mhelp[22m]8;:id=215;#\]8;;\ (hel) A synonym for [1m?[34m[22m[]8;;#142\142]8;;\][0m. + + [1mhistory[22m]8;:id=216;#\]8;;\ [Option] Without arguments or when given [1mshow [22mall history en‐ + tries are shown (possibly more [4mverbose[34m[24m[]8;;#616\616]8;;\][0mely). [1mload [22mreplaces + the history with the content of [4mhistory-file[34m[24m[]8;;#442\442]8;;\][0m, and [1msave[0m + dumps the history to said file, replacing former content; [1mclear[0m + deletes all entries. The argument can also be a signed decimal + [4mNUMBER[24m, the respective history entry is then evaluated; a nega‐ + tive number describes an offset to the current command so that + ‘-1’ selects the last command, the history top. Last [1mdelete[0m + deletes the given entries ([4m:NUMBER:[24m). Also see [4mOn[24m [4mterminal[0m + [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m. + + [1mhold[22m]8;:id=217;#\]8;;\ (ho, also [1mpreserve[34m[22m[]8;;#249\249]8;;\][0m) Marks the given message list for sav‐ + ing in the user’s system [4minbox[34m[24m[]8;;#453\453]8;;\] [0minstead of in the [4msecondary[0m + [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\][0m. Does not override the [1mdelete[34m[22m[]8;;#176\176]8;;\] [0mcom‐ + mand. S-nail deviates from the POSIX standard, because + [1mnext[34m[22m[]8;;#241\241]8;;\] [0missued after [1mhold[34m[22m[]8;;#217\217]8;;\] [0mdisplays the following mes‐ + sage, not the current one. + + [1mif[22m]8;:id=218;#\]8;;\ [Only new quoting rules](i) Part of the [1mif[22m, [1melif[34m[22m[]8;;#190\190]8;;\][0m, + [1melse[34m[22m[]8;;#191\191]8;;\][0m, [1mendif[34m[22m[]8;;#192\192]8;;\] [0mconditional execution: if the given ex‐ + pression(s) evaluate to true the encapsulated block is exe‐ + cuted. All arguments (values, operators, metacharacters for + groups, AND-OR lists etc.) must be separate tokens ([4mShell-style[0m + [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m). The expressions are parsed much like + the ‘[[ .. ]]’ construct of some sh(1)[34m[]8;:id=715;man:sh(1)\715]8;;\][0mells; quoting liter‐ + als that equal syntax elements, especially ‘[’ and unary opera‐ + tors, avoids syntax ambiguities; quoting variable-only argu‐ + ments is only needed if they may expand to the empty string. + Syntax errors cause blocks to be skipped (as no-ops) until + [1mendif[34m[22m[]8;;#192\192]8;;\][0m. [1mRemarks: [22min a whiteout the modifier [1meval[34m[22m[]8;;#127\127]8;;\] [0mdoes + not work, even for the conditional command that toggles that + state. + + if expression + [commands ...] + eli[f] + [commands ...] + el[se] + [commands ...] + en[dif] + + set i=! + if r && $i == !; echo yes; else; echo no; end + + set i=-n + if -n == && ’-n’ == -n; echo yes; end + yes + if -n == && \-n == -n; echo yes; end + yes + if -n == && $i == -n; echo yes; end + yes + if -n == && -n == -n; echo yes; end + ..this is an error + + The only portable operators are [1mr [22m(receive mode) and [1ms [22m(send + mode), all others are extensions. This includes case-insensi‐ + tivity, and the (partially) spelled-out [1mreceive [22mand [1msend[22m. Fur‐ + ther no-argument operators are [1mt [22m(any word beginning with ‘t’ + not equal to ‘true’) that matches interactive terminal sessions + (running attached to a terminal, and none of the “quickrun” + command line options [1m-e[34m[22m[]8;;#66\66]8;;\][0m, [1m-H[34m[22m[]8;;#69\69]8;;\] [0mand [1m-L[34m[22m[]8;;#72\72]8;;\] [0mwere used), as + well as any boolean value (see [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mfor tex‐ + tual boolean representations). Non-argument operators are de‐ + tected as a last ressort. + + Unary variable test operators are [1m-N [22mand [1m-Z [22mwhich test whether + the given variable exists, or not, so that ‘-N editalong’ is + true when [4meditalong[34m[24m[]8;;#416\416]8;;\] [0mis set, whereas ‘-Z editalong’ is if + it is not. [1m-n [22mand [1m-z [22mtest whether the length of the given + string is nonzero or zero. + + Integer binary operators interpret arguments as integral signed + 64-bit numbers, and compare them arithmetically. Invalid num‐ + bers are errors, unset variables and the empty string are 0. + Operators may be suffixed with the question mark [1m? [22mmodifier to + enforce ‘saturated’ operation mode where numbers linger at the + minimum or maximum value instead of causing an error, the key‐ + word is optional, ‘-lt?’, ‘-lt?satu’ and ‘-lt?saturated’ are + identical. The operators are [1m-lt [22m(less than), [1m-le [22m(less than + or equal to), [1m-eq [22m(equal), [1m-ne [22m(not equal), [1m-ge [22m(greater than + or equal to), and [1m-gt [22m(greater than), for example ‘if 3 -gt + 2;echo yes;end’. + + 8-bit US-ASCII byte and regular expression binary operators in‐ + terpret arguments textually. Unset variables expand to the + empty string. Operators can be suffixed with the question mark + [1m? [22mmodifier to choose a ‘case-insensitive’ operation mode, the + keyword is optional, ‘==?’, ‘==?case’ and ‘==?case-insensitive’ + are identical. Available 8-bit US-ASCII byte binary operators + are [1m< [22m(less than), [1m<= [22m(less than or equal to), [1m== [22m(equal), [1m!=[0m + (not equal), [1m>= [22m(greater than or equal to), [1m> [22m(greater than), + as well as [1m=% [22m(is substring of) and [1m!% [22m(is not substring of), + for example ‘if Water =% at;echo yes;end’. + + [Option] Regular expression binary operators work in the active + locale (see [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\][0m). [1m=˜ [22mand [1m!˜ [22minterpret the right + hand side argument as an extended regular expression. Match + groups (in parenthesis, see re_format(7)[34m[]8;:id=716;man:re_format(7)\716]8;;\] [0mor regex(7)[34m[]8;:id=717;man:regex(7)\717]8;;\][0m, + dependent on host system) can be accessed in [1mlocal[34m[22m[]8;;#130\130]8;;\][0m-most + scope via the [4mˆ[34m[24m[]8;;#352\352]8;;\] [0mmultiplexer sub-variables [4mˆ#[34m[24m[]8;;#353\353]8;;\][0m, + [4mˆ0[34m[24m[]8;;#354\354]8;;\][0m, [4mˆ1[34m[24m[]8;;#355\355]8;;\][0m, for example ‘if knoedel =˜? .*(OEDE).*; echo + yes, $ˆ1 is in $ˆ0; end’. + + Unary file operators test an aspect of the given filename argu‐ + ment. [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mare not performed. Unless + noted the same ‘saturated’ question mark [1m? [22mmodifier like for + integer binary operators may be given to ignore the argument + and (re)use the file status cache that persists until expres‐ + sion evaluation ends. A non-existing cache is treated as a + non-existing file. Without modifier the cache is updated. The + operators are [1m-b [22m(file exists and is block special), [1m-c [22m(ex‐ + ists, character special), [1m-d [22m(exists, directory), [1m-e [22m(exists), + [1m-f [22m(exists, regular file), [1m-g [22m(exists, set-group-ID), [1m-k [22m(ex‐ + ists, sticky bit set), [1m-L [22m(exists, symbolic link), [1m-O [22m(exists, + owned by effective user ID), [1m-p [22m(exists, named pipe), [1m-r [22m(ex‐ + ists, user can read, no modifier), [1m-S [22m(exists, socket), [1m-s [22m(ex‐ + ists, size greater than zero), [1m-t [22m(file descriptor number argu‐ + ment is open on a terminal, no modifier), [1m-u [22m(exists, set-user- + ID), [1m-w [22m(exists, user can write, no modifier), [1m-x [22m(exists, user + can execute / search, no modifier). All operators resolve sym‐ + bolic links except [1m-L[22m. For example ‘if -f /etc/motd && -s? ’’; + echo yes; end’. + + Binary file operators interpret the left and right hand side + arguments as filenames. [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mare not + performed. The operators are [1m-ef [22m(both files refer to same de‐ + vice and inode), [1m-nt [22m(left hand modification is newer, or it + exists and right hand does not), [1m-ot [22m(left hand modification is + older, or it does not exist and right hand side does). All op‐ + erators resolve symbolic links. For example ‘if /etc/passwd + -nt /etc/shadow; echo yes; end’. + + Expressions can be joined via AND-OR lists (where AND is [1m&& [22mand + OR is [1m||[22m), which have equal precedence and left associativity. + Further groups can be created via interlockable pairs of brack‐ + ets [1m[ ... ][22m, themselve joinable with AND-OR lists. The unary + operator [1m! [22mreverses the result of individual expressions or en‐ + tire groups. + + if -N debug;echo *debug* set;else;echo not;endif + if "$ttycharset" == UTF-8 || "$ttycharset" ==?cas UTF8 + echo ttycharset is UTF-8, the former case-sensitive! + endif + set t1=one t2=one + if ${t1} == ${t2} + echo The non-empty variables are byte-wise equal + endif + if $features =% ,+regex, && "$TERM" =˜?case ˆxterm.* + echo ..in an X terminal + endif + if [ [ true ] && [ [ "${t1}" != ’’ ] || \ + [ "$t2" != ’’ ] ] ] + echo Noisy, noisy + endif + if true && [ -n "$t1" || -n "${t2}" ] + echo Left associativity as known from the shell + endif + + [1mignore[22m]8;:id=219;#\]8;;\ (ig) Superseded by the multiplexer [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. + + [1mlist[22m]8;:id=220;#\]8;;\ Shows all built-in commands in a lookup order that does not al‐ + ways correlate to the alphabetical one: names can be abbrevi‐ + ated, and POSIX standardized some abbreviations. [Option] In + [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mmode argument types and documentation strings will + be shown, and the set of command flags will show up: + + ‘‘local’’ supports the modifier [1mlocal[34m[22m[]8;;#130\130]8;;\][0m. + ‘‘vput’’ supports the modifier [1mvput[34m[22m[]8;;#132\132]8;;\][0m. + ‘*!*’ the error number is tracked in [4m![34m[24m[]8;;#351\351]8;;\][0m. + ‘needs-box’ whether the command needs an active mailbox, a + [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. + ‘ok:’ indicators whether command is ... + ‘batch/interactive’ + usable in interactive or batch mode + ([1m-#[34m[22m[]8;;#90\90]8;;\][0m). + ‘send-mode’ usable in send mode. + ‘subprocess’ allowed when running in a sub‐ + process, for example via + [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m. + ‘not ok:’ indicators whether command is not ... + ‘compose mode’ available in [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m. + ‘startup’ available during program startup, + for example in [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m + (usually given as “nay”). + ‘gabby’ The command produces [4mhistory-gabby[34m[24m[]8;;#443\443]8;;\][0m + [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mentries. + + [1mlocalopts[0m + [Obsolete] Please just use the [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mmodifier, as in + ‘local set’, ‘local environ set’ or ‘local call’. + + [1mLfollowup[22m]8;:id=221;#\]8;;\, [1mLreply[22m]8;:id=222;#\]8;;\ + (Compose mode) Reply to messages that come in via known + ([1mmlist[34m[22m[]8;;#230\230]8;;\][0m) or subscribed ([1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0m) mailing lists, or + pretend to do so (see [4mMailing[24m [4mlists[34m[24m[]8;;#11\11]8;;\][0m): on top of the usual + [1mfollowup[34m[22m[]8;;#207\207]8;;\] [0mand [1mreply[34m[22m[]8;;#261\261]8;;\] [0mfunctionality this will actively + resort and even remove message recipients in order to generate + a message that is supposed to be sent to a mailing list. It + will also implicitly generate a ‘Mail-Followup-To:’ header if + that seems useful, regardless of [4mfollowup-to[34m[24m[]8;;#429\429]8;;\][0m. For more + documentation refer to [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[0m + [4mmode[34m[24m[]8;;#7\7]8;;\][0m. + + This may generate the errors [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-DESTADDRREQ if no recip‐ + ient has been specified, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-PERM if some recipients + where rejected by [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-IO if an I/O error + occurs, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP if a necessary character set conver‐ + sion fails, and [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL for other errors. It can also + fail with errors of [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. Any error stops + processing of further messages. + + [1mMail[22m]8;:id=223;#\]8;;\ (Compose mode) Similar to [1mmail[34m[22m[]8;;#224\224]8;;\][0m, but save the message in a + file named after the local part of the first recipient’s ad‐ + dress, overwriting [4mrecord[34m[24m[]8;;#537\537]8;;\][0m, but honouring [4moutfolder[34m[24m[]8;;#493\493]8;;\][0m. + + [1mmail[22m]8;:id=224;#\]8;;\ (Compose mode)(m) Send mail to given (or asked for) list of re‐ + cipients. Unless [4mfullnames[34m[24m[]8;;#437\437]8;;\] [0mis set recipient addresses are + skinned, and see [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m. + + This may generate the errors [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-DESTADDRREQ if no recip‐ + ient has been specified, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-PERM if some recipients + where rejected by [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP if multiple + messages have been specified, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-IO if an I/O error oc‐ + curs, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP if a necessary character set conversion + fails, and [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL for other errors. It can also fail + with errors of [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. + + [1mmailcap[22m]8;:id=225;#\]8;;\ [Option] Without arguments, or with only [4mshow[24m, the content of + [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\] [0mcache is shown, (re-)initializing it as + necessary. If it is [4mload[24m the cache will only be (re-)initial‐ + ized, and [4mclear[24m will remove its contents. Only one attempt to + load the files is made, [4mclear[24m has to be used for a retry. The + load and parse step reacts upon [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. + + [1mmbox[22m]8;:id=226;#\]8;;\ (mb) The given message list is to be sent to the [4msecondary[0m + [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\] [0mwhen the folder is left; this is default + except with [4mhold[34m[24m[]8;;#446\446]8;;\][0m. [v15 behaviour may differ] Can only be + used in a [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0m. + + [1mmimetype[22m]8;:id=227;#\]8;;\, [1munmimetype[22m]8;:id=228;#\]8;;\ + [Only new quoting rules] Without arguments the MIME type cache + is shown, maybe more [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. Otherwise arguments are + joined, and interpreted as shown in [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m + (also see [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m), and the result + will be prepended (last in first out) to the cache. In any + event MIME type sources are loaded first as necessary – + [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\] [0mfine-tunes loading. + + The latter command deletes all entries of the given MIME types, + asterisk ‘*’ discards all defined MIME types, just like + ‘reset’, but that also reenables cache initialization via + [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\][0m. + + [1mmimeview[22m]8;:id=229;#\]8;;\ [v15 behaviour may differ] Only available in interactive mode, + this command allows execution of external MIME type handlers + which do not integrate into the normal [1mtype[34m[22m[]8;;#297\297]8;;\] [0moutput ([4mHTML[0m + [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m). ([v15 behaviour may differ] No + syntax to directly address parts, this restriction may vanish.) + The user will be asked for each supported part in turn whether + the registered handler shall be used to display the part. + + [1mmlist[22m]8;:id=230;#\]8;;\, [1munmlist[22m]8;:id=231;#\]8;;\ + [Only new quoting rules] Manage the list of known [4mMailing[0m + [4mlists[34m[24m[]8;;#11\11]8;;\][0m; subscriptions are controlled via [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0m. + The former shows all currently known lists if used without ar‐ + guments, otherwise the given specifications become known. [Op‐ + tion] Many addresses can be matched with a single one by using + [4mmagic[24m [4mregular[24m [4mexpression[24m [4mcharacters[34m[24m[]8;;#92\92]8;;\] [0m(matched sequentially + via linked lists instead of dictionaries, though). The latter + deletes all given specifications, or all with asterisk ‘*’. + + [1mmlsubscribe[22m]8;:id=232;#\]8;;\, [1munmlsubscribe[22m]8;:id=233;#\]8;;\ + Building upon the command pair [1mmlist[34m[22m[]8;;#230\230]8;;\][0m, [1munmlist[34m[22m[]8;;#231\231]8;;\][0m, but + only managing the subscription attribute of mailing lists. + (The former also creates yet unknown mailing lists.) + + [1mMove[22m]8;:id=234;#\]8;;\ Similar to [1mmove[34m[22m[]8;;#235\235]8;;\][0m, but move messages to a file named after + the local part of the sender of the first message instead of + taking a filename argument; [4moutfolder[34m[24m[]8;;#493\493]8;;\] [0mis inspected to de‐ + cide on the actual storage location. + + [1mmove[22m]8;:id=235;#\]8;;\ Acts like [1mcopy[34m[22m[]8;;#169\169]8;;\][0m, but marks the messages for deletion if + they were transferred successfully. + + [1mMore[22m]8;:id=236;#\]8;;\ Like [1mmore[34m[22m[]8;;#237\237]8;;\][0m, but display all headers and MIME parts. Iden‐ + tical to [1mPage[34m[22m[]8;;#245\245]8;;\][0m. + + [1mmore[22m]8;:id=237;#\]8;;\ Show the given messages in PAGER[34m[]8;;#640\640]8;;\][0m, even in non-interactive + mode (only ‘[1mif[34m[22m[]8;;#218\218]8;;\] [0mterminal’). Identical to [1mpage[34m[22m[]8;;#246\246]8;;\][0m. + + [1mmtaaliases[22m]8;:id=238;#\]8;;\ + [Option] Without an argument or with [4mshow[24m the [4mmta-aliases[34m[24m[]8;;#483\483]8;;\][0m + cache is initialized if necessary and then shown; the output is + normalized and properly quoted and fitted to COLUMNS[34m[]8;;#624\624]8;;\][0m; it + is usable as an aliases(5)[34m[]8;:id=718;man:aliases(5)\718]8;;\] [0minput file. If the argument is + [4mclear[24m the cache is removed, whereas [4mload[24m will also reinitialize + it. Otherwise the expansion of the given MTA alias is shown in + one line. With two arguments, hyphen-minus ‘-’ being the + first, show the recursive expansion of the second. + + [1mnetrc[22m]8;:id=239;#\]8;;\ [Option] Without arguments or with [4mshow[24m the [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0mcache + is shown, (re-)initializing it (as necessary). If the argument + is [4mload[24m then the cache will (only) be (re-)initialized, [4mclear[0m + removes its contents. Loading and parsing can be made more + [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. [4mlookup[24m will query the cache for the URL given as + the second argument (‘[USER@]HOST’). See [4mnetrc-lookup[34m[24m[]8;;#489\489]8;;\][0m, + [4mnetrc-pipe[34m[24m[]8;;#490\490]8;;\] [0mand the section [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[0m + [4mlookup[34m[24m[]8;;#18\18]8;;\][0m; the section [4mThe[24m [4m.netrc[24m [4mfile[34m[24m[]8;;#39\39]8;;\] [0mdocuments the file + format in detail. + + [1mnewmail[22m]8;:id=240;#\]8;;\ Checks for new mail in the current [1mfolder[34m[22m[]8;;#203\203]8;;\][0m, and shows a + message if so; if [4mheader[34m[24m[]8;;#438\438]8;;\] [0mis set the [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mof new + messages are shown. This command is not available for all + mailbox types. + + [1mnext[22m]8;:id=241;#\]8;;\ (n) Go to the next (the first matching) message and [1mtype[34m[22m[]8;;#297\297]8;;\][0m + it on success. This is the default command for an empty inter‐ + active input line. + + [1mNew[22m]8;:id=242;#\]8;;\ Same as [1mUnread[34m[22m[]8;;#299\299]8;;\][0m. + + [1mnew[22m]8;:id=243;#\]8;;\ Same as [1munread[34m[22m[]8;;#300\300]8;;\][0m. + + [1mnoop[22m]8;:id=244;#\]8;;\ If the current [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mis accessed via a network connec‐ + tion, a no-op(eration) command is sent over the wire (for keep- + alive purposes). + + [1mPage[22m]8;:id=245;#\]8;;\ Like [1mpage[34m[22m[]8;;#246\246]8;;\][0m, but display all headers and MIME parts. Iden‐ + tical to [1mMore[34m[22m[]8;;#236\236]8;;\][0m. + + [1mpage[22m]8;:id=246;#\]8;;\ Show the given messages in PAGER[34m[]8;;#640\640]8;;\][0m, even in non-interactive + mode (only ‘[1mif[34m[22m[]8;;#218\218]8;;\] [0mterminal’). Identical to [1mmore[34m[22m[]8;;#237\237]8;;\][0m. + + [1mPipe[22m]8;:id=247;#\]8;;\ Like [1mpipe[34m[22m[]8;;#248\248]8;;\][0m, but pipe all headers and MIME parts. + + [1mpipe[22m]8;:id=248;#\]8;;\ (pi) Takes an optional message list and a shell command (de‐ + faults to [4mcmd[34m[24m[]8;;#399\399]8;;\][0m), and pipes the messages in visual form (as + via [1mpage[34m[22m[]8;;#246\246]8;;\][0m) through the command invoked by the SHELL[34m[]8;;#643\643]8;;\] [0mIf + the [4mpage[34m[24m[]8;;#507\507]8;;\] [0mvariable is set, every message is followed by a + formfeed character. + + [1mpreserve[22m]8;:id=249;#\]8;;\ (pre) A synonym for [1mhold[34m[22m[]8;;#217\217]8;;\][0m. + + [1mPrint[22m]8;:id=250;#\]8;;\ (P) Alias for [1mType[34m[22m[]8;;#296\296]8;;\][0m. + + [1mprint[22m]8;:id=251;#\]8;;\ (p) Research UNIX equivalent of [1mtype[34m[22m[]8;;#297\297]8;;\][0m. + + [1mquit[22m]8;:id=252;#\]8;;\ (q) Initiate a full program exit that includes updating the ac‐ + tive mailbox, preserving of messages marked [1mhold[34m[22m[]8;;#217\217]8;;\] [0mor + [1mpreserve[34m[22m[]8;;#249\249]8;;\][0m, or never being referenced in the system + [4minbox[34m[24m[]8;;#453\453]8;;\] [0m(also see [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0m), saving of + messages in the [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\][0m, saving of the + the line editor [4mhistory-file[34m[24m[]8;;#442\442]8;;\][0m, among others. + [4mon-account-cleanup[34m[24m[]8;;#494\494]8;;\] [0mis evaluated when set. If new mail has + arrived during the session, the message “You have new mail” + will be shown. A return to the shell is effected. The op‐ + tional status number argument will be passed through to + exit(3)[34m[]8;:id=719;man:exit(3)\719]8;;\][0m. [v15 behaviour may differ] For now it can happen + that the given status will be overwritten, later this will only + occur if a later error needs to be reported onto an otherwise + success indicating status. + + [1mread[22m]8;:id=253;#\]8;;\ [Only new quoting rules] Read a line from standard input, or + the [1mreadctl[34m[22m[]8;;#256\256]8;;\] [0mactivated descriptor, split as indicated by + [4mifs[34m[24m[]8;;#449\449]8;;\][0m, into to the given [1mlocal[34m[22m[]8;;#130\130]8;;\][0mizable variable(s), which + must honour [4mvariable[24m [4mname[24m [4mrules[34m[24m[]8;;#133\133]8;;\] [0m([4m![34m[24m[]8;;#351\351]8;;\] [0merror codes ap‐ + ply); the exit status [4m?[34m[24m[]8;;#350\350]8;;\] [0mreports the number of bytes read, + or ‘-1’ on error, with [4m![34m[24m[]8;;#351\351]8;;\] [0mset to [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-BADF in case of + I/O errors, or [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NONE upon End-Of-File (with no more + bytes to read). With more fields than variables, successive + data is assigned to the last; with less fields than variables, + unused are assigned empty strings. (Behaves like SHELL[34m[]8;;#643\643]8;;\][0ms + read(1)[34m[]8;:id=720;man:read(1)\720]8;;\] [0mcommand with [1m-r[34m[22m[]8;;#79\79]8;;\] [0moption used.) + + ? read a b c + H e l l o + ? echo "$? <$a> <$b> <$c>" + 16 <H> <e> <l l o> + ? set ifs=:; read a b c;unset ifs + hey2.0,:"’you ",:world!:mars.: + ? echo <$a><$b><$c><$d> + <hey2.0,><"’you ",><world!:mars.:><> + ? set ifs=:; read a b c d;unset ifs + hey2.0,:"’you ",:world!:mars.: + ? echo <$a><$b><$c><$d> + <hey2.0,><"’you ",><world!><mars.> + + [1mreadsh[22m]8;:id=254;#\]8;;\ [Only new quoting rules] Like [1mread[34m[22m[]8;;#253\253]8;;\][0m, but splits on shell + token boundaries ([4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m) rather than + at [4mifs[34m[24m[]8;;#449\449]8;;\][0m. [v15 behaviour may differ] Could become a + [1mcommandalias[34m[22m[]8;;#166\166]8;;\][0m, maybe ‘read --tokenize --’. + + [1mreadall[22m]8;:id=255;#\]8;;\ [Only new quoting rules] Read anything unexpanded from standard + input, or the [1mreadctl[34m[22m[]8;;#256\256]8;;\] [0mactivated descriptor, into to the + given [1mlocal[34m[22m[]8;;#130\130]8;;\][0mizable variable, which must honour [4mvariable[0m + [4mname[24m [4mrules[34m[24m[]8;;#133\133]8;;\] [0m([4m![34m[24m[]8;;#351\351]8;;\] [0merror codes apply); the exit status + [4m?[34m[24m[]8;;#350\350]8;;\] [0mreports the number of bytes read, or ‘-1’ on error, with + [4m![34m[24m[]8;;#351\351]8;;\] [0mset to [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-BADF in case of I/O errors, or + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NONE upon End-Of-File (with no more bytes to read). + [v15 behaviour may differ] The input data length is restricted + to 31-bits. + + [1mreadctl[22m]8;:id=256;#\]8;;\ [Only new quoting rules] Manage input channels for [1mread[34m[22m[]8;;#253\253]8;;\][0m, + [1mreadsh[34m[22m[]8;;#254\254]8;;\] [0mand [1mreadall[34m[22m[]8;;#255\255]8;;\][0m. Errors are reported via error + number [4m![34m[24m[]8;;#351\351]8;;\] [0mand exit status [4m?[34m[24m[]8;;#350\350]8;;\][0m. Channel names are first + checked for standard input hyphen-minus ‘-’, which always ex‐ + ists, then for a numeric file descriptor number, otherwise a + filename is assumed; filename based channels undergo minimal + [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0m(no meta expansion are performed). + + Without arguments known channels are listed, as with [1mshow[22m. New + active ones can be [1mcreate[22md, existing ones can be [1mset [22mactive and + [1mremove[22md by giving their name. Shared (fcntl(2)[34m[]8;:id=721;man:fcntl(2)\721]8;;\][0m) [1mlock[22ms can + be applied but to standard I/O channels: this is tried several + times and can thus block and fail, an uppercase first letter + will log iterations (case-insensitivity still applies besides). + [Option]([4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mincludes ‘,+flock,’) The otherwise iden‐ + tical [1mflock [22mlock type uses flock(2)[34m[]8;:id=722;man:flock(2)\722]8;;\][0m. Also see [1mfop[34m[22m[]8;;#208\208]8;;\][0m. + + $ printf ’echon "hey, "\nread a\nyou\necho $a’ |\ + s-nail -R# + hey, you + + $ LC_ALL=C printf ’echon "hey, "\nread a\necho $a’ |\ + LC_ALL=C 6<<< ’you’ s-nail -R#X’readctl create 6’ + hey, you + + ? set fn=/tmp/members.dat + ? readctl create $fn + ? set rv=$? es=$! ed=$ˆERRDOC + ? if $rv -eq 0 + ? readctl Lock $fn # ignore error + ? call .read-and-handle-until-eof "$fn" + ? readctl remove $fn + ? else + ? echoerr $’Cannot read file \$fn: \$ed’ + ? endif + + [1mremove[22m]8;:id=257;#\]8;;\ [Only new quoting rules] Remove named [1mfolders[34m[22m[]8;;#205\205]8;;\][0m. The given + names are mailbox type classified, and type specific removal + will be applied; removal of unknown types is refused. In in‐ + teractive mode the user is asked for confirmation. + + [1mrename[22m]8;:id=258;#\]8;;\ [Only new quoting rules] Rename the [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mgiven first to + the name given second. [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mincluding + shell pathname wildcard pattern expansions (glob(7)[34m[]8;:id=723;man:glob(7)\723]8;;\][0m) are + performed on both arguments. Both folders must be of the same + type. + + [1mReply[22m]8;:id=259;#\]8;;\, [1mRespond[22m]8;:id=260;#\]8;;\ + (Compose mode)(R) Identical to [1mreply[34m[22m[]8;;#261\261]8;;\] [0mexcept that it + replies to only the senders of the given messages, by using the + first message as the template to quote, for the ‘Subject:’ + etc.; setting [4mflipr[34m[24m[]8;;#426\426]8;;\] [0mwill exchange this command with + [1mreply[34m[22m[]8;;#261\261]8;;\][0m. + + [1mreply[22m]8;:id=261;#\]8;;\, [1mrespond[22m]8;:id=262;#\]8;;\ + (Compose mode)(r) Successively group reply to each of the given + messages by addressing the sender and all recipients, subject + to [4mfullnames[34m[24m[]8;;#437\437]8;;\] [0mand [1malternates[34m[22m[]8;;#149\149]8;;\] [0mprocessing. + [4mfollowup-to[34m[24m[]8;;#429\429]8;;\][0m, [4mfollowup-to-honour[34m[24m[]8;;#431\431]8;;\][0m, [4mreply-to-honour[34m[24m[]8;;#543\543]8;;\][0m + as well as [4mrecipients-in-cc[34m[24m[]8;;#536\536]8;;\] [0minfluence response behaviour. + [4mquote[34m[24m[]8;;#528\528]8;;\] [0mas well as [4mquote-as-attachment[34m[24m[]8;;#530\530]8;;\] [0mconfigure + whether responded-to messages shall be quoted etc. [4mrecord[34m[24m[]8;;#537\537]8;;\][0m + controls saving the response message. Setting [4mflipr[34m[24m[]8;;#426\426]8;;\] [0mwill + exchange this command with [1mReply[34m[22m[]8;;#259\259]8;;\][0m. [1mLreply[34m[22m[]8;;#222\222]8;;\] [0moffers spe‐ + cial support for replying to mailing lists. For more documen‐ + tation refer to [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m. + + This may generate the errors [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-DESTADDRREQ if no recip‐ + ient has been specified, or was rejected by [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m + policy, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-IO if an I/O error occurs, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP + if a necessary character set conversion fails, and + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL for other errors. It can also fail with errors + of [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. Any error stops processing of fur‐ + ther messages. + + [1mResend[22m]8;:id=263;#\]8;;\ Like [1mresend[34m[22m[]8;;#264\264]8;;\][0m, but does not add any header lines. This is + not a way to hide the sender’s identity, but useful for sending + a bounced message again to the same recipients. + + [1mresend[22m]8;:id=264;#\]8;;\ Send all given messages to the given recipient + ([4mfullnames[34m[24m[]8;;#437\437]8;;\][0m). ‘Resent-From:’ and related header fields are + prepended to sent messages. Saving in [4mrecord[34m[24m[]8;;#537\537]8;;\] [0mis only per‐ + formed if [4mrecord-resent[34m[24m[]8;;#539\539]8;;\] [0mis set. [v15 behaviour may dif‐ + fer](Compose mode) is not entered, the only supported hooks are + [4mon-resend-enter[34m[24m[]8;;#506\506]8;;\] [0mand [4mon-resend-cleanup[34m[24m[]8;;#505\505]8;;\][0m. + + This may generate the errors [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-DESTADDRREQ if no recip‐ + ient has been specified, or was rejected by [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m + policy, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-IO if an I/O error occurs, [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTSUP + if a necessary character set conversion fails, and + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL for other errors. It can also fail with errors + of [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. Any error stops processing of fur‐ + ther messages. + + [1mretain[22m]8;:id=265;#\]8;;\ (ret) Superseded by the multiplexer [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. + + [1mreturn[22m]8;:id=266;#\]8;;\ Return control of execution to the outer scope. Two optional + positive decimal number arguments (default 0): the first is the + 32-bit ([v15 behaviour may differ] later 64-bit) return value + ([4m?[34m[24m[]8;;#350\350]8;;\][0m), the second the 32-bit error number ([4m![34m[24m[]8;;#351\351]8;;\][0m). As doc‐ + umented for [4m?[34m[24m[]8;;#350\350]8;;\] [0ma non-0 exit status may cause the program to + exit. Only available inside of a [1mdefine[34m[22m[]8;;#174\174]8;;\][0md macro or an + [1maccount[34m[22m[]8;;#144\144]8;;\][0m. + + [1mSave[22m]8;:id=267;#\]8;;\ (S) Similar to [1msave, [22mbut save messages to a file named after + the local part of the sender of the first message instead of + taking a filename argument; [4moutfolder[34m[24m[]8;;#493\493]8;;\] [0mis inspected to de‐ + cide on the actual storage location. + + [1msave[22m]8;:id=268;#\]8;;\ (s) Append the given messages to the given filename, which un‐ + dergoes [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mincluding shell pathname + wildcard pattern expansions (glob(7)[34m[]8;:id=724;man:glob(7)\724]8;;\][0m). If no filename is + given, the [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\] [0mis used. The + quoted filename and the generated byte count is shown on suc‐ + cess. If editing a [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mthe messages + are marked for deletion. The ‘save’ slot of the white- and + blacklisting command [1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0mfilters header fields to + be saved. Also see [1mCopy[34m[22m[]8;;#168\168]8;;\][0m. + + [1msearch[22m]8;:id=269;#\]8;;\ Displays a header summary of all messages given, as via + [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. This is an alias of [1mfrom[34m[22m[]8;;#211\211]8;;\][0m. Also see + [4mSpecifying[24m [4mmessages[34m[24m[]8;;#14\14]8;;\][0m. + + [1mseen[22m]8;:id=270;#\]8;;\ Marks all given messages as having been read. + + [1mset[22m]8;:id=271;#\]8;;\, [1munset[22m]8;:id=272;#\]8;;\ + (se, [Only new quoting rules] uns) Manage (set and clear) + built-in and free-form custom [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m. Without + arguments the former lists currently existing ones, with + [4mdebug[34m[24m[]8;;#412\412]8;;\] [0mor [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mtheir attributes are included as + comments. [1mNote[22m: this mode does not automatically establish + ‘[1menviron[34m[22m[]8;;#193\193]8;;\] [0m[1mlink[22m’ for built-in [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0mvariables: + only explicit addressing via [1mvarshow[34m[22m[]8;;#303\303]8;;\] [0m(with arguments), us‐ + age in an [1mif[34m[22m[]8;;#218\218]8;;\] [0mcondition or an argument to [1mecho[34m[22m[]8;;#185\185]8;;\][0m, ex‐ + plicit [1mset[22mting (not necessarily via [1menviron[34m[22m[]8;;#193\193]8;;\][0m), as well as + some program-internal use cases (look-ups) do this. + + With arguments the given ‘name’s or ‘name=value’ pairs (no + space before or after the equal sign ‘=’) are set or adjusted. + Prefixing ‘no’, for example ‘set noname’, equals calling [1munset[0m + (‘unset name’), which erases all given variable names. They + both support [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscoping. [1mNote: local[34m[22m[]8;;#130\130]8;;\][0mized free- + form custom names use an isolated namespace and do not affect + [1menviron[34m[22m[]8;;#193\193]8;;\][0mment links; on the other hand changes to built-in + variables are passed down the call chain. + + ? set atab=$’’ aspace=’ ’ zero=0 noprompt + ? define mboxfix { + local set mbox-rfc4155 + File "${1}"; copy * "${2}" + } + + [1msetdot[22m]8;:id=273;#\]8;;\ Set the “dot” to the given message. Error number [4m![34m[24m[]8;;#351\351]8;;\] [0mis + supported. + + [1mshcodec[22m]8;:id=274;#\]8;;\ Apply [4m[+]e[ncode][24m or [4md[ecode][24m shell quoting rules to the fol‐ + lowing raw-data. The result of ‘+encode’ is not roundtrip en‐ + abled (Unicode etc.: only local decode); also see + [1mmle-quote-rndtrip[34m[22m[]8;;#108\108]8;;\][0m. On error [4m![34m[24m[]8;;#351\351]8;;\] [0mis set to + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-CANCELED, and the unmodified input is the result. + (Error may change again due to output or result storage er‐ + rors.) Supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). + + [1mshell[22m]8;:id=275;#\]8;;\ (sh) Invokes an interactive SHELL[34m[]8;;#643\643]8;;\][0m, then returns its exit + status. + + [1mshortcut[22m]8;:id=276;#\]8;;\, [1munshortcut[22m]8;:id=277;#\]8;;\ + [Only new quoting rules] Manage the filename shortcuts of + [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. The latter deletes all shortcuts given as argu‐ + ments (all with asterisk ‘*’). Without arguments the former + shows all currently defined shortcuts, with one the target of + the given. Otherwise arguments specify pairs of shortcut names + and expansions, creating new or updating already existing ones. + + [1mshift[22m]8;:id=278;#\]8;;\ [Only new quoting rules] Shift positional parameter stack + (starting at [4m1[34m[24m[]8;;#365\365]8;;\][0m) by the given positive decimal number, or 1 + without argument. Giving 0 causes no action, successfully. + Shifting more than the number of positional parameters is an + error. The stack as such can be managed via [1mvpospar[34m[22m[]8;;#307\307]8;;\][0m. + + [1mshow[22m]8;:id=279;#\]8;;\ Show raw message content (like [1mtype[34m[22m[]8;;#297\297]8;;\][0m, but perform neither + MIME decoding nor decryption). + + [1msize[22m]8;:id=280;#\]8;;\ (si) For all given messages, show their number, and the lines + and bytes of the raw message content. + + [1msleep[22m]8;:id=281;#\]8;;\ [Only new quoting rules] Sleep the given number of seconds (and + optionally milliseconds), With any third argument the sleep is + uninterruptible, otherwise [4m![34m[24m[]8;;#351\351]8;;\] [0mwill be set to [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INTR + upon interruption. If the given duration(s) overflow the time + datatype an [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-OVERFLOW error occurs, if the given dura‐ + tions are no valid integers [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL. + + [1msort[22m]8;:id=282;#\]8;;\, [1munsort[22m]8;:id=283;#\]8;;\ + Without arguments the former only shows, otherwise it sets the + current sorting criterion; the latter is the same as ‘sort + none’. The criterion affects the visual [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mrepresen‐ + tation, as well as addressing modes when [4mSpecifying[0m + [4mmessages[34m[24m[]8;;#14\14]8;;\] [0mand the meaning of [1mnext[34m[22m[]8;;#241\241]8;;\][0m. The unique message + numbers remain unchanged. A newly (un)ordered [1mheaders[34m[22m[]8;;#214\214]8;;\][0m + summary is displayed if [4mheader[34m[24m[]8;;#438\438]8;;\] [0mis set. For automatic + [1mfolder[34m[22m[]8;;#203\203]8;;\] [0msorting set [4mautosort[34m[24m[]8;;#382\382]8;;\][0m, as in + ‘[1mset[34m[22m[]8;;#271\271]8;;\] [0mautosort=thread’. Possible sorting criterions are: + + [4mdate[24m Sort by ‘Date:’ field (message send time). + [4mfrom[24m Sort by ‘From:’ field (address of sender). The + sender’s real name (if any) is used if [4mshowname[34m[24m[]8;;#554\554]8;;\][0m + is set. + [4mnone[24m Do not sort (same as [1munsort[22m). + [4msize[24m Sort by size. + spam [Option] Sort by spam score classified by + [1mspamrate[34m[22m[]8;;#289\289]8;;\][0m. + [4mstatus[24m Sort by [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m. + [4msubject[24m Sort by subject. + [4mthread[24m Create a threaded display. [4mautocollapse[34m[24m[]8;;#380\380]8;;\] [0mmay be + set to [1mcollapse[34m[22m[]8;;#162\162]8;;\] [0mthreads automatically. + [4mto[24m Sort by ‘To:’ field (recipient address). The recipi‐ + ent’s real name (if any) is used if [4mshowname[34m[24m[]8;;#554\554]8;;\] [0mis + set. + + [1msource[22m]8;:id=284;#\]8;;\ [Only new quoting rules](so) Reads commands from the given file + after doing [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m. A filename with a + trailing vertical bar ‘|’ is interpreted as a SHELL[34m[]8;;#643\643]8;;\] [0mcom‐ + mand, the output of which will be read. Dependent on + [4mposix[34m[24m[]8;;#523\523]8;;\] [0mand [4merrexit[34m[24m[]8;;#419\419]8;;\][0m, as well as on the modifier + [1mignerr[34m[22m[]8;;#129\129]8;;\][0m, encountered errors will stop reading (or even + cause program exit). [v15 behaviour may differ] [1msource [22mcannot + be used from within hook macros like [4mon-mailbox-open[34m[24m[]8;;#501\501]8;;\][0m, nor + from [1maccount[34m[22m[]8;;#144\144]8;;\][0ms, but only from macros that were [1mcall[34m[22m[]8;;#155\155]8;;\][0med. + + [1msource_if[22m]8;:id=285;#\]8;;\ + [Only new quoting rules] Different to [1msource[34m[22m[]8;;#284\284]8;;\] [0m(beside not + supporting pipe aka shell command input) is that no error is + generated if the given file cannot be opened successfully. + + [1mspamclear[22m]8;:id=286;#\]8;;\ + [Option] Clears the ‘is-spam’ flag of the given messages. + + [1mspamforget[22m]8;:id=287;#\]8;;\ + [Option] Pass the given messages to the [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0mso + that it can un-train its Bayesian filter. Unless otherwise + noted the ‘is-spam’ flag is inspected to decide what shall be + forgotten, “ham” or “spam”. + + [1mspamham[22m]8;:id=288;#\]8;;\ [Option] Pass the given messages to the [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0mto + inform it they are “ham”. This also clears the ‘is-spam’ flag. + + [1mspamrate[22m]8;:id=289;#\]8;;\ [Option] Pass the given messages to the [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0mfor + rating purposes, without modifying messages, but only setting + the ‘is-spam’ accordingly. The rating and flag will be forgot‐ + ten once the [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mis left. [4mHandling[24m [4mspam[34m[24m[]8;;#20\20]8;;\] [0mshows the + complete picture. + + [1mspamset[22m]8;:id=290;#\]8;;\ [Option] Sets the ‘is-spam’ flag of the given messages. + + [1mspamspam[22m]8;:id=291;#\]8;;\ [Option] Pass the given messages to the [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0mto + inform it they are “spam”. This also sets the flag ‘is-spam’. + + [1mtls[22m]8;:id=292;#\]8;;\ [Option][Only new quoting rules] TLS information and management + command multiplexer to aid in [4mEncrypted[24m [4mnetwork[0m + [4mcommunication[34m[24m[]8;;#19\19]8;;\] [0mwith the given URL ([4mOn[24m [4mURL[24m [4msyntax[24m [4mand[0m + [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m). The port of the URL’s ‘server:port’ + defaults to HTTPS (443); only protocols which establish TLS di‐ + rectly are supported, not those which upgrade an insecure chan‐ + nel. Subcommands support [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). + The error result is the empty string, the error itself is + stored in [4m![34m[24m[]8;;#351\351]8;;\][0m. For example, string length overflows are + caught and set [4m![34m[24m[]8;;#351\351]8;;\] [0mto [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-OVERFLOW. The TLS configu‐ + ration is honoured, for example [4mtls-verify[34m[24m[]8;;#608\608]8;;\] [0mand + [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m. + + ? vput tls result fingerprint pop3s://ex.am.ple + ? echo $?/$!/$ˆERRNAME: $result + + [1mcertchain [22mShow the complete verified peer certificate chain of + the given URL. Includes informational fields in con‐ + junction with [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. + + [1mcertificate [22mShow only the peer certificate, without any sign‐ + ers, of the given URL. Includes informational fields + in conjunction with [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. + + [1mfingerprint [22mShow the [4mtls-fingerprint-digest[34m[24m[]8;;#606\606]8;;\][0med fingerprint + of the certificate of the given URL. + [4mtls-fingerprint[34m[24m[]8;;#605\605]8;;\] [0mis actively ignored for the run‐ + time of this command. + + [1mTop[22m]8;:id=293;#\]8;;\ Like [1mtop[34m[22m[]8;;#294\294]8;;\] [0mbut uses the [1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0m‘type’ slot for + white- and blacklisting header fields. + + [1mtop[22m]8;:id=294;#\]8;;\ (to) [1mtype[34m[22m[]8;;#297\297]8;;\][0ms out the first [4mtoplines[34m[24m[]8;;#609\609]8;;\] [0mlines of each of + the given messages. Unless ‘top’ selection has been estab‐ + lished with [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m, only ‘From:’, ‘To:’, ‘Cc:’, and + ‘Subject:’ are shown. The message content display can be com‐ + pressed via [4mtopsqueeze[34m[24m[]8;;#610\610]8;;\][0m. + + [1mtouch[22m]8;:id=295;#\]8;;\ (tou) Marks the given messages for saving in the [4msecondary[0m + [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mMBOX[34m[]8;;#638\638]8;;\][0m. POSIX deviation: an adjacent [1mnext[34m[22m[]8;;#241\241]8;;\][0m + will [1mtype[34m[22m[]8;;#297\297]8;;\] [0mthe following, not the current message. + + [1mType[22m]8;:id=296;#\]8;;\ (T) Like [1mtype[34m[22m[]8;;#297\297]8;;\] [0mbut do not filter header fields through + [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m, and visualize all parts of MIME + ‘multipart/alternative’ messages. + + [1mtype[22m]8;:id=297;#\]8;;\ (t) Show the given messages. Whether and when PAGER[34m[]8;;#640\640]8;;\] [0mis + used for display instead of the [4mscreen[34m[24m[]8;;#547\547]8;;\] [0mis controlled by + [4mcrt[34m[24m[]8;;#408\408]8;;\][0m. ([1mmore[34m[22m[]8;;#237\237]8;;\] [0malways uses PAGER[34m[]8;;#640\640]8;;\][0m.) Message headers + are filtered as chosen by the ‘type’ selection of + [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. For MIME multipart messages all ‘text’ mes‐ + sage parts, all parts with a registered MIME type handler ([4mHTML[0m + [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m) that produces + [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\][0m, and all ‘message’ parts are shown, others + are hidden except for their headers. Messages are decrypted + and converted to [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mas necessary. [1mmimeview[34m[22m[]8;;#229\229]8;;\][0m + can be used to display parts of other sort. + + [1munaccount[34m[22m[]8;;#145\145]8;;\][0m + See [1maccount[34m[22m[]8;;#144\144]8;;\][0m. + + [1munalias[34m[22m[]8;;#148\148]8;;\][0m + (una) See [1malias[34m[22m[]8;;#147\147]8;;\][0m. + + [1munanswered[34m[22m[]8;;#152\152]8;;\][0m + See [1manswered[34m[22m[]8;;#151\151]8;;\][0m. + + [1munbind[34m[22m[]8;;#154\154]8;;\][0m + See [1mbind[34m[22m[]8;;#153\153]8;;\][0m. + + [1muncollapse[34m[22m[]8;;#163\163]8;;\][0m + See [1mcollapse[34m[22m[]8;;#162\162]8;;\][0m. + + [1muncolour[34m[22m[]8;;#165\165]8;;\][0m + See [1mcolour[34m[22m[]8;;#164\164]8;;\][0m. + + [1mundefine[34m[22m[]8;;#175\175]8;;\][0m + See [1mdefine[34m[22m[]8;;#174\174]8;;\][0m. + + [1mundelete[34m[22m[]8;;#177\177]8;;\][0m + See [1mdelete[34m[22m[]8;;#176\176]8;;\][0m. + + [1mundraft[34m[22m[]8;;#184\184]8;;\][0m + See [1mdraft[34m[22m[]8;;#183\183]8;;\][0m. + + [1munflag[34m[22m[]8;;#201\201]8;;\][0m + See [1mflag[34m[22m[]8;;#200\200]8;;\][0m. + + [1munignore[22m]8;:id=298;#\]8;;\ Superseded by the multiplexer [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. + + [1munmimetype[34m[22m[]8;;#228\228]8;;\][0m + See [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m. + + [1munmlist[34m[22m[]8;;#231\231]8;;\][0m + See [1mmlist[34m[22m[]8;;#230\230]8;;\][0m. + + [1munmlsubscribe[34m[22m[]8;;#233\233]8;;\][0m + See [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0m. + + [1mUnread[22m]8;:id=299;#\]8;;\ Same as [1munread[34m[22m[]8;;#300\300]8;;\][0m. + + [1munread[22m]8;:id=300;#\]8;;\ Marks all given messages as not being read ([4mMessage[0m + [4mstates[34m[24m[]8;;#13\13]8;;\][0m). + + [1munretain[22m]8;:id=301;#\]8;;\ Superseded by the multiplexer [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. + + [1munset[34m[22m[]8;;#272\272]8;;\][0m + [Only new quoting rules](uns) See [1mset[34m[22m[]8;;#271\271]8;;\][0m. + + [1munshortcut[34m[22m[]8;;#277\277]8;;\][0m + See [1mshortcut[34m[22m[]8;;#276\276]8;;\][0m. + + [1munsort[34m[22m[]8;;#283\283]8;;\][0m + See [1msort[34m[22m[]8;;#282\282]8;;\][0m. + + [1murlcodec[22m]8;:id=302;#\]8;;\ Apply [4me[ncode][24m, [4md[ecode][24m, [4mp[ath]enc[ode][24m or [4mp[ath]dec[ode][24m URL + percent codec (RFC 3986) operations on the following raw-data. + The latter two are slightly modified to better adhere to file‐ + names: tilde ‘˜’ is not allowed, and the initial character can + neither be hyphen-minus ‘-’ nor dot ‘’. ([v15 behaviour may + differ] The path-aware decoder is yet identical to the normal + one.) This is a character set agnostic operation which could + decode bytes that are invalid in the current [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. + + Supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m(see [4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m), and manages the + error number [4m![34m[24m[]8;;#351\351]8;;\][0m. If the operation fails [4m![34m[24m[]8;;#351\351]8;;\] [0mis set to + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-CANCELED, and the unmodified input is the result (er‐ + ror number may change again due to output or result storage er‐ + rors). [v15 behaviour may differ] This command does not know + about URLs beside what is documented. ([1mvexpr[34m[22m[]8;;#306\306]8;;\] [0moffers a + [1mmakeprint [22msubcommand, shall the URL be displayed.) + + [1mvarshow[22m]8;:id=303;#\]8;;\ [Only new quoting rules] Show only the given variables, or all + [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m. In the latter case [1mlocal[34m[22m[]8;;#130\130]8;;\] [0m[1mscope[0m + settings are not covered, [1mvpospar[34m[22m[]8;;#307\307]8;;\] [0mand other positional pa‐ + rameters are never covered. The output is subject to + [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. + + [1mverify[22m]8;:id=304;#\]8;;\ [Option] Verifies all given messages. If a message is not a + S/MIME signed message, verification will fail for it. The + process checks if the message was signed using a valid certifi‐ + cate, whether the sender address matches one of those certifi‐ + cate presented, and whether the message content has not been + altered. + + [1mversion[22m]8;:id=305;#\]8;;\ Show [4mversion[34m[24m[]8;;#617\617]8;;\] [0mand [4mfeatures[34m[24m[]8;;#425\425]8;;\][0m, optionally in a more + [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mform that includes build and running system envi‐ + ronment informations. Supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[0m + [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). + + [1mvexpr[22m]8;:id=306;#\]8;;\ [Option][Only new quoting rules] Multiplexer which offers + signed 64-bit numeric calculations, as well as other, mostly + string-based operations. C-style byte string operations are + available via [1mcsop[34m[22m[]8;;#170\170]8;;\][0m, and file operations via [1mfop[34m[22m[]8;;#208\208]8;;\][0m. The + first argument defines number, type, and meaning of the remain‐ + ing arguments. An empty number argument is treated as 0. Sup‐ + ports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). The result in case of + errors is ‘-1’ for usage errors and numeric operations, the + empty string otherwise; “soft” errors, like when a search oper‐ + ation failed, will also set the [4m![34m[24m[]8;;#351\351]8;;\] [0merror number to + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NODATA. Except when otherwise noted numeric argu‐ + ments are parsed as signed 64-bit numbers, and errors will be + reported in the error number [4m![34m[24m[]8;;#351\351]8;;\] [0mas the numeric error + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-RANGE. + + Numeric operations work on one or two signed 64-bit integers + according to [4mnumber[24m [4msyntax[24m [4mrules[34m[24m[]8;;#135\135]8;;\][0m. Unsigned interpretation + of a number can be enforced with an ‘u’ prefix (case-insensi‐ + tive), as in ‘u-110’; power-of-two bases (2,4,8,16,32,64) are + unsigned by default, but regarding overflow detection and error + constants it still makes a difference. To enforce signed in‐ + terpretation (instead) prefix ‘s’ (case-insensitive). One in‐ + teger is expected by assignment (equals sign ‘=’), which does + nothing but validity and overflow detection, unary not (tilde + ‘˜’), which creates the bitwise complement, and unary plus and + minus. Two integers are used by addition (plus sign ‘+’), sub‐ + traction (hyphen-minus ‘-’), multiplication (asterisk ‘*’), di‐ + vision (solidus ‘/’) and modulo (percent sign ‘%’), as well as + for the bitwise operators logical or (vertical bar ‘|’, to be + quoted) , bitwise and (ampersand ‘&’), bitwise xor (circumflex + ‘ˆ’), the bitwise signed left- and right shifts (‘<<’, ‘>>’), + as well as for the unsigned right shift ‘>>>’. + + Another numeric operation is [1mpbase[22m, which takes a number base + in between 2 and 64, inclusive, and will act on the second num‐ + ber given just the same as what equals sign ‘=’ does, but the + number result will be formatted in the base given, as a signed + 64-bit number unless unsigned interpretation of the input num‐ + ber had been forced. + + Numeric operations support a saturated mode via the question + mark ‘?’ modifier suffix; the keyword ‘saturated’ is optional, + ‘+?’, ‘+?satu’, and ‘+?saturated’ are therefore identical. In + saturated mode overflow errors and division and modulo by zero + are no longer reported via the return status, but the result + will linger at the minimum or maximum possible value, instead + of overflowing (or trapping). This is true also for the argu‐ + ment parse step. For the bitwise shifts, the saturated maximum + is 63. Any caught overflow will be reported via the error num‐ + ber [4m![34m[24m[]8;;#351\351]8;;\] [0mas [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-OVERFLOW. + + ? vput vexpr res -? +1 -9223372036854775808 + ? echo $?/$!/$ˆERRNAME:$res + 0/75/OVERFLOW:-9223372036854775808 + + Character set agnostic string functions have no notion of lo‐ + cale settings and character sets. + + [1mdate-utc [22mOutputs the current date and time in UTC (Coordinated + Universal Time) with values named such that ‘vput + vexpr x date-utc; eval set $x’ creates accessible + variables. An optional argument denotes the UNIX + seconds-since-the-epoch to be used instead of the + current time. (The algorithm does not know about + leap seconds and works until 65535-12-31T23:59:59.) + + [1mdate-stamp-utc [22mOutputs the current UTC time in RFC 3339 inter‐ + net date/time format. + + [1mepoch [22mThe seconds and nanoseconds since the Unix epoch + (1970-01-01T00:00:00) named ‘epoch_sec’ and + ‘epoch_nsec’ such that ‘vput vexpr x epoch; eval set + $x’ creates accessible variables. May be given one + to six optional arguments naming (in order) year, + month, day (of month), hour, minute and second to be + used instead of the current time. (The algorithm + works until 65535-12-31T23:59:59.) + + [1mrandom [22mGenerates a random string of the given length, or of + PATH_MAX bytes (a constant from [4m/usr/include[24m) if the + value 0 is given; the random string will be base64url + encoded according to RFC 4648, and thus be usable as + a (portable) filename. + + String operations work, sufficient support provided, according + to the active user’s locale encoding and character set + ([4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\][0m). Where the question mark ‘?’ modifier + suffix is supported, a case-insensitive operation mode is + available; the keyword ‘case’ is optional, ‘regex?’ and + ‘regex?case’ are therefore identical. + + [1mmakeprint [22m(One-way) Converts the argument to something safely + printable on the terminal. + + [1mregex [22m[Option] A string operation that tries to match the + first argument with the regular expression + (re_format(7)[34m[]8;:id=725;man:re_format(7)\725]8;;\] [0mor regex(7)[34m[]8;:id=726;man:regex(7)\726]8;;\][0m, dependent on + host system) given as the second argument. ‘?’ modi‐ + fier suffix is supported. With the optional third + argument the match group accessors [4mˆ#[34m[24m[]8;;#353\353]8;;\][0m, [4mˆ0[34m[24m[]8;;#354\354]8;;\][0m, + [4mˆ1[34m[24m[]8;;#355\355]8;;\] [0mare set (in [1mlocal[34m[22m[]8;;#130\130]8;;\][0m-most scope) for suc‐ + cessful matches, and the argument is interpreted as + if specified within dollar-single-quote ([4mShell-style[0m + [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m): + + ? vput vexpr res regex bananarama \ + (.*)NanA(.*) ’\${ˆ1}au\$ˆ2’ + ? echo $?/$!/$ˆERRNAME:$res: + 1/61/NODATA:: + ? vput vexpr res regex?case bananarama \ + (.*)NanA(.*) ’\${ˆ1}uauf\$ˆ2’ + ? echo $?/$!/$ˆERRNAME:$res: + 0/0/NONE:bauauframa: + + [1mvpospar[22m]8;:id=307;#\]8;;\ [Only new quoting rules] Manage the scope’s positional parame‐ + ter stack (see [4m1[34m[24m[]8;;#365\365]8;;\][0m, [4m#[34m[24m[]8;;#363\363]8;;\][0m, [4m*[34m[24m[]8;;#361\361]8;;\][0m, [4m@[34m[24m[]8;;#362\362]8;;\] [0mas well as + [1mshift[34m[22m[]8;;#278\278]8;;\][0m). The global scope can be enforced with the modi‐ + fier [1mglobal[34m[22m[]8;;#128\128]8;;\][0m. If the first argument is ‘clear’ the stack + is cleared. otherwise, is cleared. If it is ‘set’ the remain‐ + ing arguments will be used to (re)create the stack, if the pa‐ + rameter stack size limit is excessed an [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-OVERFLOW er‐ + ror will occur. ‘evalset’ acts likewise, but only takes one + argument to furtherly [1meval[34m[22m[]8;;#127\127]8;;\][0muate in a special mode where + number sign ‘#’ is an ordinary character ([4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\][0m). + + If the first argument is ‘quote’, a round-trip capable repre‐ + sentation of the stack contents is created, with each quoted + parameter separated from each other with the first character of + [4mifs[34m[24m[]8;;#449\449]8;;\][0m, and followed by the first character of [4mif-ws[24m, if that + is not empty and not identical to the first. If that results + in no separation at all a [1mspace [22mcharacter is used. This mode + supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m([4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). The subcommands + ‘set’ and ‘quote’ can be used (in conjunction with [1meval[34m[22m[]8;;#127\127]8;;\][0m) + to losslessly (re)create an argument stack from and to a single + variable. + + ? vpospar set hey, "’you ", world! + ? echo $#: <$1><$2><$3> + ? vput vpospar x quote + ? vpospar clear + ? echo $#: <$1><$2><$3> + ? eval vpospar set $x + ? echo $#: <$1><$2><$3> + ? + ? set x=$’a b\n#c d\ne f\n’ + ? set ifs=$’\n’; vpospar set $x; unset ifs + ? echo $#: <$1><$2><$3> + 1: <a b + #c d + e f + ><><> + ? set ifs=$’\n’; eval vpospar set $x; unset ifs + ? echo $#: <$1><$2><$3> + 1: <a b><><> + ? set ifs=$’\n’; vpospar evalset $x; unset ifs + ? echo $#: <$1><$2><$3> + 3: <a b><#c d><e f> + + [1mvisual[22m]8;:id=308;#\]8;;\ (v) Successively invoke the VISUAL[34m[]8;;#650\650]8;;\] [0mdisplay editor on the + given messages. Modified contents are discarded unless + [4mwritebackedited[34m[24m[]8;;#623\623]8;;\] [0mis set, and are not used unless the mail‐ + box can be written to, and the editor returns a successful exit + status. [1medit[34m[22m[]8;;#189\189]8;;\] [0mcan be used instead for a less display ori‐ + ented editor. + + [1mwrite[22m]8;:id=309;#\]8;;\ (w) For conventional messages the body without all headers is + written. The original message is never marked for deletion in + the originating mail folder. The output is decrypted and con‐ + verted to its native format as necessary. If the output file + exists, the text is appended. If a message is in MIME multi‐ + part format its first part is written to the specified file as + for conventional messages, handling of the remains depends on + the execution mode. No special handling of compressed files is + performed. + + In interactive mode the user is consecutively asked for the + filenames of the processed MIME parts. For convenience saving + of each part may be skipped by giving an empty value, the same + result as writing it to [4m/dev/null[34m[24m[]8;;#657\657]8;;\][0m. Shell piping the part + content by specifying a leading vertical bar ‘|’ character for + the filename is supported. Other user input undergoes the + usual [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m, including shell pathname + wildcard pattern expansions (glob(7)[34m[]8;:id=727;man:glob(7)\727]8;;\][0m) and shell variable + expansion for the message as such, not the individual parts, + and contents of the destination file are overwritten if the + file previously existed. Character set conversion to + [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mis performed when saving text data. + + [v15 behaviour may differ] In non-interactive mode any part + which does not specify a filename is ignored, and suspicious + parts of filenames of the remaining parts are URL percent en‐ + coded (as via [1murlcodec[34m[22m[]8;;#302\302]8;;\][0m) to prevent injection of malicious + character sequences, resulting in a filename that will be writ‐ + ten into the current directory. Existing files will not be + overwritten, instead the part number or a dot are appended af‐ + ter a number sign ‘#’ to the name until file creation succeeds + (or fails due to other reasons). + + [1mxcall[22m]8;:id=310;#\]8;;\ [Only new quoting rules] The sole difference to [1mcall[34m[22m[]8;;#155\155]8;;\] [0mis + that the new macro is executed in place of the current one, + which will not regain control: all resources of the current + macro will be released first, except the re-parented settings + covered by [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscoping. If this command is not used + from within a [1mcall[34m[22m[]8;;#155\155]8;;\][0med macro it will silently be (a more ex‐ + pensive variant of) [1mcall[34m[22m[]8;;#155\155]8;;\][0m. + + [1mxit[22m]8;:id=311;#\]8;;\ (x) A synonym for [1mexit[34m[22m[]8;;#195\195]8;;\][0m. + + [1mz[22m]8;:id=312;#\]8;;\ [Only new quoting rules] Message [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mare shown in + [4mscreen[34m[24m[]8;;#547\547]8;;\][0mfuls. Without arguments this command scrolls to the + next screen of messages, likewise if given ‘+’. An argument of + ‘-’ scrolls to the last, ‘ˆ’ scrolls to the first, and ‘$’ to + the last screen. A number argument prefixed by ‘+’ or ‘-’ in‐ + dicates that the window is calculated in relation to the cur‐ + rent position, and a number without a prefix specifies an ab‐ + solute position. + + [1mZ[22m]8;:id=313;#\]8;;\ [Only new quoting rules] Similar to [1mz[34m[22m[]8;;#312\312]8;;\][0m, but scrolls to the + next or previous [4mscreen[34m[24m[]8;;#547\547]8;;\] [0mthat contains at least one ‘new’ + or [1mflag[34m[22m[]8;;#200\200]8;;\][0mged message. + +[1mCOMMAND ESCAPES[22m]8;:id=30;#\]8;;\ + [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0mescapes offer access to attachments, header editing, in‐ + vocation of [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0mand more. They are available when interactive, + when requested via [1m-˜[34m[22m[]8;;#89\89]8;;\][0m, as well as in batch mode ([1m-#[34m[22m[]8;;#90\90]8;;\][0m). They are + only recognized in the leftmost column and consist of an [4mescape[34m[24m[]8;;#421\421]8;;\][0m + character (default tilde ‘˜’), optional modifiers (that act like [4mCommand[0m + [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m), and a command character. Interspersed whitespace is ig‐ + nored. To write an [4mescape[34m[24m[]8;;#421\421]8;;\] [0mcharacter in the leftmost column, double + it. [Option] Addition to the [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mis prevented by placing any + number of whitespace after [4mescape[34m[24m[]8;;#421\421]8;;\][0m. [Option] Key [1mbind[34m[22m[]8;;#153\153]8;;\][0mings sup‐ + port a command escape specific context. Modifiers are + + [1m• [22mHyphen-minus ‘-’ acts like [1mignerr[34m[22m[]8;;#129\129]8;;\] [0mdoes for [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\][0m, and + overrides [4merrexit[34m[24m[]8;;#419\419]8;;\][0m. + + ? set errexit; reply . + ˜ - : illegal + s-nail: illegal: unknown command + ˜:illegal + s-nail: illegal: unknown command + s-nail: Failed to prepare composed message + $ + + [1m• [22mDollar ‘$’ [1meval[34m[22m[]8;;#127\127]8;;\][0muates the remains of the line as often as it is + used ([4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m). [v15 behaviour may differ] + For now the entire input line is evaluated as a whole; to avoid that + control operators like semicolon [1m; [22mare interpreted unintentionally, + they must be quoted. + + ? set var=’bla bla bla’; reply . + ˜:echo ’$var’ + $var + ˜$:echo ’$var’ + bla bla bla + + Unless otherwise documented escapes manage the error number [4m![34m[24m[]8;;#351\351]8;;\] [0mand + the exit/return status [4m?[34m[24m[]8;;#350\350]8;;\][0m, and so [4merrexit[34m[24m[]8;;#419\419]8;;\] [0mmay cause leaving com‐ + pose mode and program exits. + + [1m˜![22m]8;:id=314;#\]8;;\ [4mcommand[0m + Execute the given SHELL[34m[]8;;#643\643]8;;\] [0m[4mcommand[24m, replacing unescaped ex‐ + clamation marks with the previously executed command if + [4mbang[34m[24m[]8;;#383\383]8;;\] [0mis set. + + [1m˜.[22m]8;:id=315;#\]8;;\ [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0mis left, and the message is sent. The hooks + [4mon-compose-splice-shell[34m[24m[]8;;#499\499]8;;\] [0mand [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m, in or‐ + der, are called when set, after which, in interactive mode, + [4maskatend[34m[24m[]8;;#370\370]8;;\] [0m(leading to [4maskcc[34m[24m[]8;;#372\372]8;;\][0m, [4maskbcc[34m[24m[]8;;#373\373]8;;\][0m) and + [4maskattach[34m[24m[]8;;#371\371]8;;\] [0mwill be checked as well as [4masksend[34m[24m[]8;;#374\374]8;;\][0m, after + which a set [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\] [0mhook will be called, + [4mautocc[34m[24m[]8;;#379\379]8;;\] [0mand [4mautobcc[34m[24m[]8;;#378\378]8;;\] [0mwill be joined in if set, finally + a given [4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\] [0mwill be incorporated. + + [1m˜:[22m]8;:id=316;#\]8;;\ [4mcommand[24m or [1m˜_ [4m[22mcommand[0m + Can be used to execute [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\] [0m(not all are allowed in + compose mode). + + [1m˜<[22m]8;:id=317;#\]8;;\ [4mfilename[0m + Identical to [1m˜r[34m[22m[]8;;#341\341]8;;\][0m. + + [1m˜<![22m]8;:id=318;#\]8;;\ [4mcommand[0m + [4mcommand[24m is executed using the SHELL[34m[]8;;#643\643]8;;\][0m, and its standard out‐ + put is inserted into the message. + + [1m˜?[22m]8;:id=319;#\]8;;\ [Option] Write a summary of command escapes. + + [1m˜@[22m]8;:id=320;#\]8;;\ [[4mfilename...[24m] + Append or edit the list of attachments. Does not manage error + number [4m![34m[24m[]8;;#351\351]8;;\] [0mand exit status [4m?[34m[24m[]8;;#350\350]8;;\] [0m(use [1m˜ˆ[34m[22m[]8;;#322\322]8;;\] [0mif error han‐ + dling is necessary). The append mode expects a list of + [4mfilename[24m arguments as shell tokens ([4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\][0m; token-separating commas are also ignored), to be + interpreted as documented for the command line option [1m-a[34m[22m[]8;;#58\58]8;;\][0m, + with the message number exception as below. + + Without [4mfilename[24m arguments the attachment list is edited, entry + by entry; if a filename is left empty, that attachment is + deleted from the list; once the end of the list is reached ei‐ + ther new attachments may be entered or the session can be quit + by committing an empty input. In non-interactive as well as in + batch mode ([1m-#[34m[22m[]8;;#90\90]8;;\][0m) the list of attachments is effectively not + edited but instead recreated; again, an empty input ends list + creation. + + For all modes, if a given filename solely consists of the num‐ + ber sign ‘#’ followed by either a valid message number of the + currently active mailbox, or by a period ‘.’, referring to the + current message of the active mailbox, the so-called “dot”, the + given message is attached as a ‘message/rfc822’ MIME message + part. The number sign must be quoted to avoid misinterpreta‐ + tion as a shell comment character. + + [1m˜|[22m]8;:id=321;#\]8;;\ [4mcommand[0m + Filter the message text through a SHELL[34m[]8;;#643\643]8;;\] [0m[4mcommand[24m; its stan‐ + dard output forms the new message text. If no output or a + non-0 exit status is generated, the original message text is + retained. The command fmt(1)[34m[]8;:id=728;man:fmt(1)\728]8;;\] [0mis often used as a rejusti‐ + fying filter (‘˜| /usr/bin/fmt -tuw11’). + + ‘˜||’ instead filters the entire message including header + fields, so that ‘˜|| echo Fcc: /tmp/test; cat’ will prepend a + file-carbon-copy message header. Also see [1m˜e[34m[22m[]8;;#328\328]8;;\][0m, [1m˜v[34m[22m[]8;;#346\346]8;;\][0m. + + [1m˜ˆ[22m]8;:id=322;#\]8;;\ [4mcmd[24m [[4msubcmd[24m [[4marg3[24m [[4marg4[24m]]] + Inspect and modify the message using the semantics of + [1mdigmsg[34m[22m[]8;;#178\178]8;;\][0m, therefore arguments are evaluated according to + [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\][0m. Error number [4m![34m[24m[]8;;#351\351]8;;\] [0mand exit + status [4m?[34m[24m[]8;;#350\350]8;;\] [0mare not managed: errors are handled via the pro‐ + tocol, and hard errors like I/O failures cannot be handled. + + The protocol consists of command lines followed by (a) response + line(s). The first field of the response line represents a + status code which specifies whether a command was successful or + not, whether result data is to be expected, and if, the format + of the result data. Response data will be shell quoted as nec‐ + essary for consumption by [1mreadsh[34m[22m[]8;;#254\254]8;;\][0m, or [1mvpospar[34m[22m[]8;;#307\307]8;;\] [0mand + [1meval[34m[22m[]8;;#127\127]8;;\][0m, to name a few. Error status code lines may option‐ + ally contain additional context: + + ‘210’ Status ok; the remains of the line are the result. + ‘211’ Status ok; the rest of the line is optionally used + for more status. What follows are lines of result + addresses, terminated by an empty line. All the in‐ + put, including the empty line, must be consumed be‐ + fore further commands can be issued. Address lines + consist of two token, first the plain network ad‐ + dress, e.g., ‘bob@exam.ple’, followed by the (quoted) + full address as known: ‘’(Lovely) Bob + <bob@exam.ple>’’. Non-network addresses use the + first field to indicate the type (hyphen-minus ‘-’ + for files, vertical bar ‘|’ for pipes, and number + sign ‘#’ for names which will undergo [1malias[34m[22m[]8;;#147\147]8;;\] [0mpro‐ + cessing) instead, the actual value will be in the + second field. + ‘212’ Status ok; the rest of the line is optionally used + for more status. What follows are lines of furtherly + unspecified (quoted) string content, terminated by an + empty line. All the input, including the empty line, + must be consumed before further commands can be is‐ + sued. + ‘500’ Syntax error; invalid command. + ‘501’ Syntax error or otherwise invalid parameters or argu‐ + ments. + ‘505’ Error: an argument fails verification. For example + an invalid address has been specified (also see + [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m), or an attempt was made to modify + anything in S-nail’s own namespace, or a modifying + subcommand has been used on a read-only message. + ‘506’ Error: an otherwise valid argument is rendered in‐ + valid due to context. For example, a second address + is added to a header which may consist of a single + address only. + + If a command indicates failure then the message will have re‐ + mained unmodified. Most commands can fail with ‘500’ if re‐ + quired arguments are missing, or excessive arguments have been + given (false command usage). ([v15 behaviour may differ] The + latter does not yet occur regularly, because as stated in + [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mour argument parser is not yet + smart enough to work on subcommand base; for example one might + get excess argument error for a three argument subcommand that + receives four arguments, but not for a four argument subcommand + which receives six arguments: here excess will be joined.) The + following (case-insensitive) commands are supported: + + [1mattachment [22mThis command allows listing, removal and addition of + message attachments. The second argument specifies + the subcommand to apply, one of: + + [1mattribute [22mThis uses the same search mechanism as de‐ + scribed for [1mremove [22mand prints any known at‐ + tributes of the first found attachment via + ‘212’ upon success or ‘501’ if no such at‐ + tachment can be found. The attributes are + written as lines with a keyword and a value + token. + + [1mattribute-at [22mThis uses the same search mechanism as + described for [1mremove-at [22mand is otherwise + identical to [1mattribute[22m. + + [1mattribute-set [22mThis uses the same search mechanism as + described for [1mremove[22m, and will set the at‐ + tribute given as the fourth to the value + given as the fifth token argument. If the + value is an empty token, then the given at‐ + tribute is removed, or reset to a default + value if existence of the attribute is cru‐ + cial. + + It returns via ‘210’ upon success, with the + index of the found attachment following, + ‘505’ for message attachments or if the + given keyword is invalid, and ‘501’ if no + such attachment can be found. The following + keywords may be used (case-insensitively): + + ‘filename’ Sets the filename of the MIME + part, i.e., the name that is + used for display and when (sug‐ + gesting a name for) saving (pur‐ + poses). + ‘content-description’ Associate some de‐ + scriptive information to the at‐ + tachment’s content, used in + favour of the plain filename by + some MUAs. + ‘content-id’ May be used for uniquely iden‐ + tifying MIME entities in several + contexts; this expects a special + reference address format as de‐ + fined in RFC 2045 and generates + a ‘505’ upon address content + verification failure. + ‘content-type’ Defines the media type/sub‐ + type of the part, which is man‐ + aged automatically, but can be + overwritten. + ‘content-disposition’ Automatically set to + the string ‘attachment’. + + [1mattribute-set-at [22mThis uses the same search mechanism + as described for [1mremove-at [22mand is otherwise + identical to [1mattribute-set[22m. + + [1minsert [22mAdds the attachment given as the third argu‐ + ment, specified exactly as documented for + the command line option [1m-a[34m[22m[]8;;#58\58]8;;\][0m, and support‐ + ing the message number extension as docu‐ + mented for [1m˜@[34m[22m[]8;;#320\320]8;;\][0m. This reports ‘210’ upon + success, with the index of the new attach‐ + ment following, ‘505’ if the given file can‐ + not be opened, ‘506’ if an on-the-fly per‐ + formed character set conversion fails, oth‐ + erwise ‘501’ is reported; this is also re‐ + ported if character set conversion is re‐ + quested but not available. + + [1mlist [22mList all attachments via ‘212’, or report + ‘501’ if no attachments exist. This command + is the default command of [1mattachment [22mif no + second argument has been given. + + [1mremove [22mThis will remove the attachment given as the + third argument, and report ‘210’ upon suc‐ + cess or ‘501’ if no such attachment can be + found. If there exists any path component + in the given argument, then an exact match + of the path which has been used to create + the attachment is used directly, but if only + the basename of that path matches then all + attachments are traversed to find an exact + match first, and the removal occurs after‐ + wards; if multiple basenames match, a ‘506’ + error occurs. Message attachments are + treated as absolute pathnames. + + If no path component exists in the given ar‐ + gument, then all attachments will be + searched for ‘filename=’ parameter matches + as well as for matches of the basename of + the path which has been used when the at‐ + tachment has been created; multiple matches + result in a ‘506’. + + [1mremove-at [22mThis will interpret the third argument as a + number and remove the attachment at that + list position (counting from one!), report‐ + ing ‘210’ upon success or ‘505’ if the argu‐ + ment is not a number or ‘501’ if no such at‐ + tachment exists. + + [1mheader [22mThis command allows listing, inspection, and editing + of message headers. Header name case is not normal‐ + ized, so that case-insensitive comparison should be + used when matching names. The second argument speci‐ + fies the subcommand to apply, one of: + + [1minsert [22mCreate a new or an additional instance of + the header given in the third argument, with + the header body content as given in the + fourth token. It may return ‘501’ if the + third argument specifies a free-form header + field name that is invalid, or if body con‐ + tent extraction fails to succeed, ‘505’ if + any extracted address does not pass syntax + and/or security checks or on S-nail name‐ + space violations, and ‘506’ to indicate pre‐ + vention of excessing a single-instance + header — note that ‘Subject:’ can be ap‐ + pended to (a space separator will be added + automatically first). ‘To:’, ‘Cc:’ and + ‘Bcc:’ support the ‘?single’ modifier to en‐ + force treatment as a single recipient, for + example ‘header insert To?single: ’exa, + <m@ple>’’; the word ‘single’ is optional. + + ‘210’ is returned upon success, followed by + the name of the header and the list position + of the newly inserted instance. The list + position is always 1 for single-instance + header fields. All free-form header fields + are managed in a single list; also see + [4mcustomhdr[34m[24m[]8;;#409\409]8;;\][0m. + + [1mheaderpick [22mTakes the name of a [1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0m[4mcontext[0m + and filters accordingly, giving ‘210’ on + success, and ‘501’ for read-only messages or + an invalid [4mcontext[24m. + + [1mlist [22mWithout a third argument a list of all yet + existing headers is given via ‘210’; this + command is the default command of [1mheader [22mif + no second argument has been given. A third + argument restricts output to the given + header only, which may fail with ‘501’ if no + such field is defined. + + [1mremove [22mThis will remove all instances of the header + given as the third argument, reporting ‘210’ + upon success, ‘501’ if no such header can be + found, and ‘505’ on S-nail namespace viola‐ + tions. + + [1mremove-at [22mThis will remove from the header given as + the third argument the instance at the list + position (counting from one!) given with the + fourth argument, reporting ‘210’ upon suc‐ + cess or ‘505’ if the list position argument + is not a number or on S-nail namespace vio‐ + lations, and ‘501’ if no such header in‐ + stance exists. + + [1mshow [22mShows the content of the header given as the + third argument. The content will be con‐ + verted to [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0m([v15 behaviour + may differ] and then be made printable ac‐ + cording to LC_ALL[34m[]8;;#628\628]8;;\][0m). Dependent on the + header type this may respond with ‘211’ or + ‘212’; any failure results in ‘501’. + + In compose mode read-only access to optional pseudo + headers in the S-nail private namespace is available: + + ‘Mailx-Command:’ + The name of the command that generates the + message, one of ‘forward’, ‘Lreply’, ‘mail’, + ‘Reply’, ‘reply’, ‘resend’. This pseudo + header always exists (in compose mode). + ‘Mailx-Edited-Sender:’ + ‘Mailx-Edited-Origin:’ + Different to the RFC 5322 originator fields + of the otherwise identical ‘-Orig-’ series + below these might take into account + [4mreply-to-honour[34m[24m[]8;;#543\543]8;;\] [0mand + [4mreply-to-swap-in[34m[24m[]8;;#544\544]8;;\][0m. This sender field + will however be identical to + ‘Mailx-Orig-Sender:’ unless the edited (re‐ + placed) originator field is unambiguous. + ‘Mailx-Orig-Sender:’ + ‘Mailx-Orig-From:’ + ‘Mailx-Orig-To:’ + ‘Mailx-Orig-Cc:’ + ‘Mailx-Orig-Bcc:’ + The values of said headers of the original + message which has been addressed by any of + [1mreply[34m[22m[]8;;#261\261]8;;\][0m, [1mforward[34m[22m[]8;;#210\210]8;;\][0m, [1mresend[34m[22m[]8;;#264\264]8;;\][0m. The + sender field is filled in according to what + is described for [4mfrom[34m[24m[]8;;#436\436]8;;\][0m. + ‘Mailx-Raw-To:’ + ‘Mailx-Raw-Cc:’ + ‘Mailx-Raw-Bcc:’ + Represent the frozen initial state of these + headers before any transformation + ([1malias[34m[22m[]8;;#147\147]8;;\][0m, [1malternates[34m[22m[]8;;#149\149]8;;\][0m, + [4mrecipients-in-cc[34m[24m[]8;;#536\536]8;;\] [0metc.) took place. + + [1mepoch [22mShow the message date as seconds since epoch via + ‘210’. Error for an invalid date is ‘501’, for using + this command in compose mode ‘505’. For converting + times you may want to look at [1mvexpr[34m[22m[]8;;#306\306]8;;\][0m. + + [1mhelp[22m, [1m? [22mShow an abstract of the above commands via ‘211’. + + [1mversion [22mThis command will print the protocol version via + ‘210’. + + [1m˜A[22m]8;:id=323;#\]8;;\ The same as ‘[1m˜i[34m[22m[]8;;#334\334]8;;\] [0m[4mSign[34m[24m[]8;;#556\556]8;;\][0m’. + + [1m˜a[22m]8;:id=324;#\]8;;\ The same as ‘[1m˜i[34m[22m[]8;;#334\334]8;;\] [0m[4msign[34m[24m[]8;;#557\557]8;;\][0m’. + + [1m˜b[22m]8;:id=325;#\]8;;\ [4mname[24m [4m...[0m + Add the given names to the list of blind carbon copy recipi‐ + ents. + + [1m˜c[22m]8;:id=326;#\]8;;\ [4mname[24m [4m...[0m + Add the given names to the list of carbon copy recipients. + + [1m˜d[22m]8;:id=327;#\]8;;\ Read the file specified by the DEAD[34m[]8;;#625\625]8;;\] [0mvariable into the mes‐ + sage. + + [1m˜e[22m]8;:id=328;#\]8;;\ Invoke the text EDITOR[34m[]8;;#626\626]8;;\] [0mon the message collected so far, + then return to compose mode. [1m˜v[34m[22m[]8;;#346\346]8;;\] [0mcan be used for a more + display oriented editor, and [1m˜|[34m[22m[]8;;#321\321]8;;\][0m| offers a pipe-based edit‐ + ing approach. + + [1m˜F[22m]8;:id=329;#\]8;;\ [4mmessages[0m + Read the named messages into the message being sent, including + all message headers and MIME parts, and honouring + [4mforward-add-cc[34m[24m[]8;;#432\432]8;;\] [0mas well as [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\] [0mand + [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. If no messages are specified, read + in the current message, the “dot”. + + [1m˜f[22m]8;:id=330;#\]8;;\ [4mmessages[0m + Read the named messages into the message being sent. If no + messages are specified, read in the current message, the “dot”. + Strips down the list of header fields according to the + ‘forward’ (with [4mposix[34m[24m[]8;;#523\523]8;;\][0m: ‘type’) white- and blacklist selec‐ + tion of [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m, and honours [4mforward-add-cc[34m[24m[]8;;#432\432]8;;\] [0mas + well as [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\] [0mand [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. + For MIME multipart messages, only the first displayable part is + included. + + [1m˜H[22m]8;:id=331;#\]8;;\ In interactive mode, edit the message header fields ‘From:’, + ‘Reply-To:’ and ‘Sender:’ by typing each one in turn and allow‐ + ing the user to edit the field. The default values for these + fields originate from the [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, [4mreply-to[34m[24m[]8;;#542\542]8;;\] [0mand + [4msender[34m[24m[]8;;#551\551]8;;\] [0mvariables. In non-interactive mode this sets + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTTY. + + [1m˜h[22m]8;:id=332;#\]8;;\ In interactive mode, edit the message header fields ‘To:’, + ‘Cc:’, ‘Bcc:’ and ‘Subject:’ by typing each one in turn and al‐ + lowing the user to edit the field. In non-interactive mode + this sets [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-NOTTY. + + [1m˜I[22m]8;:id=333;#\]8;;\ [4mvariable[0m + Insert the value of the specified variable into the message. + The message remains unaltered if the variable is unset or + empty. Any embedded character sequences ‘\t’ horizontal tabu‐ + lator and ‘\n’ line feed are expanded in [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode; oth‐ + erwise the expansion should occur at [1mset[34m[22m[]8;;#271\271]8;;\] [0mtime + ([4mv15-compat[34m[24m[]8;;#615\615]8;;\][0m, [1mwysh[34m[22m[]8;;#134\134]8;;\][0m). + + [1m˜i[22m]8;:id=334;#\]8;;\ [4mvariable[0m + Like [1m˜I[34m[22m[]8;;#333\333]8;;\][0m, but appends a newline character. + + [1m˜M[22m]8;:id=335;#\]8;;\ [4mmessages[0m + Read the named messages into the message being sent, indented + by [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m. If no messages are specified, read the + current message, the “dot”. Honours [4mforward-add-cc[34m[24m[]8;;#432\432]8;;\] [0mas + well as [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\] [0mand [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. + + [1m˜m[22m]8;:id=336;#\]8;;\ [4mmessages[0m + Read the named messages into the message being sent, indented + by [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m. If no messages are specified, read the + current message, the “dot”. Strips down the list of header + fields according to the ‘type’ white- and blacklist selection + of [1mheaderpick[34m[22m[]8;;#212\212]8;;\][0m. Honours [4mforward-add-cc[34m[24m[]8;;#432\432]8;;\] [0mas well as + [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\] [0mand [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. For + MIME multipart messages, only the first displayable part is in‐ + cluded. + + [1m˜p[22m]8;:id=337;#\]8;;\ Display the message collected so far, prefaced by the message + header fields and followed by the attachment list, if any. + + [1m˜Q[22m]8;:id=338;#\]8;;\ Read in the given / current message(s) using the algorithm of + [4mquote[34m[24m[]8;;#528\528]8;;\] [0m(except that is implicitly assumed, even if not + set), honouring [4mquote-add-cc[34m[24m[]8;;#529\529]8;;\][0m. + + [1m˜q[22m]8;:id=339;#\]8;;\ Abort the message being sent, copying it to the file specified + by the DEAD[34m[]8;;#625\625]8;;\] [0mvariable if [4msave[34m[24m[]8;;#546\546]8;;\] [0mis set. + + [1m˜R[22m]8;:id=340;#\]8;;\ [4mfilename[0m + Identical to [1m˜r[34m[22m[]8;;#341\341]8;;\][0m, but indent each line that has been read + by [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m. + + [1m˜r[22m]8;:id=341;#\]8;;\ [4mfilename[24m [[4mHERE-delimiter[24m] + Read the named file, object to [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mex‐ + cluding shell globs and variable expansions, into the message; + if [4mfilename[24m is the hyphen-minus ‘-’ then standard input is used + (for pasting, for example). Only in this latter mode + [4mHERE-delimiter[24m may be given: if it is data will be read in un‐ + til the given [4mHERE-delimiter[24m is seen on a line by itself, and + encountering EOF is an error; the [4mHERE-delimiter[24m is a required + argument in non-interactive mode; if it is single-quote quoted + then the pasted content will not be expanded, [v15 behaviour + may differ] otherwise a future version of S-nail may perform + shell-style expansion on the content. + + [1m˜s[22m]8;:id=342;#\]8;;\ [4mstring[0m + Cause the named string to become the current subject field. + Newline (NL) and carriage-return (CR) bytes are invalid and + will be normalized to space (SP) characters. + + [1m˜t[22m]8;:id=343;#\]8;;\ [4mname[24m [4m...[0m + Add the given name(s) to the direct recipient list. + + [1m˜U[22m]8;:id=344;#\]8;;\ [4mmessages[0m + Read in the given / current message(s) excluding all headers, + indented by [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m. Honours [4mforward-add-cc[34m[24m[]8;;#432\432]8;;\] [0mas + well as [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\] [0mand [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. + + [1m˜u[22m]8;:id=345;#\]8;;\ [4mmessages[0m + Read in the given / current message(s), excluding all headers. + Honours [4mforward-add-cc[34m[24m[]8;;#432\432]8;;\] [0mas well as [4mforward-inject-head[34m[24m[]8;;#434\434]8;;\][0m + and [4mforward-inject-tail[34m[24m[]8;;#435\435]8;;\][0m. + + [1m˜v[22m]8;:id=346;#\]8;;\ Invoke the VISUAL[34m[]8;;#650\650]8;;\] [0meditor on the message collected so far, + then return to compose mode. [1m˜e[34m[22m[]8;;#328\328]8;;\] [0mcan be used for a less + display oriented editor, and [1m˜|[34m[22m[]8;;#321\321]8;;\][0m| offers a pipe-based edit‐ + ing approach. + + [1m˜w[22m]8;:id=347;#\]8;;\ [4mfilename[0m + Write the message onto the named file, which is object to the + usual [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m. If the file exists, the + message is appended to it. + + [1m˜x[22m]8;:id=348;#\]8;;\ Same as [1m˜q[34m[22m[]8;;#339\339]8;;\][0m, except that the message is not saved at all. + +[1mINTERNAL VARIABLES[22m]8;:id=31;#\]8;;\ + Variables are names that exist or not, and optionally expand to values. + They can be created or changed with [1mset[34m[22m[]8;;#271\271]8;;\] [0mand erased with [1munset[34m[22m[]8;;#272\272]8;;\][0m. + There are built-in variables which may have typed values and attributes, + as explained below. Custom variables with optional (string) values may + be defined freely. [1mvarshow[34m[22m[]8;;#303\303]8;;\] [0mwill inspect all built-in or the given + variables, [1mset[34m[22m[]8;;#271\271]8;;\] [0mwithout arguments all currently existing ones; both + support a detailed [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mlisting mode. Some built-in variables + are synchronized from and with the program [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\][0m, others can be + linked or created with [1menviron[34m[22m[]8;;#193\193]8;;\] [0mto henceforth have said property; + these have to honour SHELL[34m[]8;;#643\643]8;;\] [0m[4mvariable[24m [4mname[24m [4mrules[34m[24m[]8;;#133\133]8;;\][0m. + + ? set one=val\ 1 two="val 2" \ + three=’val "3"’ four=$’val \’4\’’; \ + environ set FIVE=val\ 5; \ + varshow one two three four FIVE; \ + unset one two three four FIVE; \ + varshow one two three four FIVE + + Boolean variables have no value and can only be in the states “set” and + “unset”. Values need proper quoting upon assignment time, the quoting + rules are documented for [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\][0m. Dependent upon the built-in vari‐ + able values may become interpreted as colour names, command specifica‐ + tions, normal text, etc. They may be treated as numbers, in which case + decimal values are expected if so documented, otherwise the usual [4mnumber[0m + [4msyntax[24m [4mrules[34m[24m[]8;;#135\135]8;;\] [0mapply. + + “Boolean string” is a special kind of string value, either a decimal in‐ + teger (with ‘0’ being false and ‘1’ or any other value being true), or + one of the (case-insensitive) strings ‘off’, ‘no’, ‘n’ and ‘false’ for a + false boolean and ‘on’, ‘yes’, ‘y’ and ‘true’ for a true boolean. ]8;:id=349;#\]8;;\A spe‐ + cial kind of boolean string is the “quadoption” which is optionally pre‐ + fixed with the (case-insensitive) term ‘ask-’, as in ‘ask-yes’: in inter‐ + active mode the user will be prompted, otherwise the actual boolean is + used. + + Some built-in variables exist as so-called “chains” which extend the + plain ‘variable’ with ‘variable-HOST’ and ‘variable-USER@HOST’ variants. + Here ‘HOST’ will be converted to all lowercase when looked up (but not + when the variable is set or unset!), [Option]ally IDNA converted, and in‐ + deed means ‘server:port’ if a ‘port’ had been specified in the contextual + Uniform Resource Locator URL, see [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[0m + [4mlookup[34m[24m[]8;;#18\18]8;;\][0m. Even though this mechanism is based on URLs no URL percent + encoding ([1murlcodec[34m[22m[]8;;#302\302]8;;\][0m) may be applied to neither of ‘USER’ nor ‘HOST’, + variable chains need to be specified using raw data; the mentioned sec‐ + tion contains examples. Variables which support chains are explicitly + documented as such, and since chains are special users should not create + custom names like ‘variable-xyz’ in order to avoid false classifications + and treatment of such variables. + + [1mInitial settings[22m]8;:id=32;#\]8;;\ + The standard POSIX 2008/Cor 2-2016 mandates the following initial set‐ + tings for built-in internal variables: no[4mallnet[34m[24m[]8;;#368\368]8;;\][0m, no[4mappend[34m[24m[]8;;#369\369]8;;\][0m, + [4masksub[34m[24m[]8;;#376\376]8;;\][0m, no[4maskbcc[34m[24m[]8;;#373\373]8;;\][0m, no[4mautoprint[34m[24m[]8;;#381\381]8;;\][0m, no[4mbang[34m[24m[]8;;#383\383]8;;\][0m, no[4mcmd[34m[24m[]8;;#399\399]8;;\][0m, + no[4mcrt[34m[24m[]8;;#408\408]8;;\][0m, no[4mdebug[34m[24m[]8;;#412\412]8;;\][0m, no[4mdot[34m[24m[]8;;#414\414]8;;\][0m, [4mescape[34m[24m[]8;;#421\421]8;;\] [0mset to ‘˜’, + no[4mflipr[34m[24m[]8;;#426\426]8;;\][0m, no[4mfolder[34m[24m[]8;;#427\427]8;;\][0m, [4mheader[34m[24m[]8;;#438\438]8;;\][0m, no[4mhold[34m[24m[]8;;#446\446]8;;\][0m, no[4mignore[34m[24m[]8;;#451\451]8;;\][0m, + no[4mignoreeof[34m[24m[]8;;#452\452]8;;\][0m, no[4mkeep[34m[24m[]8;;#455\455]8;;\][0m, no[4mkeepsave[34m[24m[]8;;#457\457]8;;\][0m, no[4mmetoo[34m[24m[]8;;#475\475]8;;\][0m, + no[4moutfolder[34m[24m[]8;;#493\493]8;;\][0m, no[4mpage[34m[24m[]8;;#507\507]8;;\][0m, [4mprompt[34m[24m[]8;;#525\525]8;;\] [0mset to ‘? ’, no[4mquiet[34m[24m[]8;;#527\527]8;;\][0m, + no[4mrecord[34m[24m[]8;;#537\537]8;;\][0m, [4msave[34m[24m[]8;;#546\546]8;;\][0m, no[4msendwait[34m[24m[]8;;#552\552]8;;\][0m, no[4mshowto[34m[24m[]8;;#555\555]8;;\][0m, no[4mSign[34m[24m[]8;;#556\556]8;;\][0m, + no[4msign[34m[24m[]8;;#557\557]8;;\][0m, [4mtoplines[34m[24m[]8;;#609\609]8;;\] [0mset to ‘5’. + + However, some initial (and some default) settings are built-in, and (may) + diverge, others may become adjusted by one of the [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m. + Displaying the former is accomplished via [1mset[34m[22m[]8;;#271\271]8;;\][0m: ‘$ s-nail -:/ -v + -Xset -Xx’. In general this implementation sets (and has extended the + meaning of) [4msendwait[34m[24m[]8;;#552\552]8;;\][0m, and does not support the no[4monehop[24m variable – + use command line options or [4mmta-arguments[34m[24m[]8;;#484\484]8;;\] [0mto pass options through to + a [4mmta[34m[24m[]8;;#482\482]8;;\][0m. The system-wide resource file as shipped, sets, among oth‐ + ers, [4mhold[34m[24m[]8;;#446\446]8;;\][0m, [4mkeep[34m[24m[]8;;#455\455]8;;\] [0mand [4mkeepsave[34m[24m[]8;;#457\457]8;;\][0m, establishes a default + [1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0mselection etc., and should thus be taken into account. + + [1mBuilt-in variables[22m]8;:id=33;#\]8;;\ + [4m?[24m]8;:id=350;#\]8;;\ (Read-only) The exit status of the last command, or the + [1mreturn[34m[22m[]8;;#266\266]8;;\] [0mvalue of the macro [1mcall[34m[22m[]8;;#155\155]8;;\][0med last. This status + has a meaning in the state machine: in conjunction with + [4merrexit[34m[24m[]8;;#419\419]8;;\] [0many non-0 exit status will cause a program exit, + and in [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode any error while loading (any of the) re‐ + source files will have the same effect. [1mignerr[34m[22m[]8;;#129\129]8;;\][0m, one of + the [4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m, can be used to instruct the state + machine to ignore errors. + + [4m![24m]8;:id=351;#\]8;;\ (Read-only) The current error number (errno(3)[34m[]8;:id=729;man:errno(3)\729]8;;\][0m), which is + set after an error occurred; it is also available via + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m, and the error name and documentation string can be + queried via [4mˆERRNAME[34m[24m[]8;;#358\358]8;;\] [0mand [4mˆERRDOC[34m[24m[]8;;#357\357]8;;\][0m. [v15 behaviour may + differ] This machinery is new and the error number is only re‐ + ally usable if a command explicitly states that it manages the + variable [4m![34m[24m[]8;;#351\351]8;;\][0m, for others errno will be used in case of er‐ + rors, or [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-INVAL if that is 0: it thus may or may not + reflect the real error. The error number may be set with the + command [1mreturn[34m[22m[]8;;#266\266]8;;\][0m. + + [4mˆ[24m]8;:id=352;#\]8;;\ (Read-only) This is a multiplexer variable which performs dy‐ + namic expansion of the requested state or condition, of which + there are: + + [4mˆ#[24m]8;:id=353;#\]8;;\, [4mˆ0[24m]8;:id=354;#\]8;;\, [4mˆ1[24m]8;:id=355;#\]8;;\ + Access to match groups of the last regular expression + evaluation in [1mlocal[34m[22m[]8;;#130\130]8;;\][0m-most scope, created for ex‐ + ample by the [1mif[34m[22m[]8;;#218\218]8;;\] [0mcommand. The former denotes the + number of match groups including [4mˆ0[24m that holds the + entire matching string (0 for no match); for example + + \if abrakadabra =˜ (.+)ka.* + \echo $ˆ#: <$ˆ0> <$ˆ1> <$ˆ2> + \end + # -> + 2: <abrakadabra> <abra> <> + + [4mˆERR[24m]8;:id=356;#\]8;;\, [4mˆERRDOC[24m]8;:id=357;#\]8;;\, [4mˆERRNAME[24m]8;:id=358;#\]8;;\ + The number, documentation, and name of the current + errno(3)[34m[]8;:id=730;man:errno(3)\730]8;;\][0m, respectively, usually set after an er‐ + ror occurred. The former as shown is identical to + [4m![34m[24m[]8;;#351\351]8;;\][0m. Documentation is an [Option], the name is + used as a fallback. Each of these can be suffixed + with a hyphen minus followed by a name or number, in + which case the expansion refers to the given error. + Note this is a direct mapping of (a subset of) the + system error values, with (high numbered) fallbacks + for unsupported constants: + + define work { + \eval echo \$1: \$ˆERR-$1: \ + \$ˆERRNAME-$1: \$ˆERRDOC-$1 + \eval if \$(($1 + 1)) -lt 16 + \eval xcall work \$(($1 + 1)) + \end + } + \call work $ˆERR-NONE + + [4mˆERRQUEUE-COUNT[24m]8;:id=359;#\]8;;\, [4mˆERRQUEUE-EXISTS[24m]8;:id=360;#\]8;;\ + The number of messages in the [Option]al queue of + [1merrors[34m[22m[]8;;#194\194]8;;\][0m, and a string indicating queue state: + empty or (translated) “ERROR”. Always 0 and the + empty string, respectively, unless [4mfeatures[34m[24m[]8;;#425\425]8;;\] [0min‐ + cludes ‘,+errors,’. + + [4m*[24m]8;:id=361;#\]8;;\ (Read-only) Expands all positional parameters (see [4m1[34m[24m[]8;;#365\365]8;;\][0m), + separated by the first character of the value of [4mifs[34m[24m[]8;;#449\449]8;;\][0m. + [v15 behaviour may differ] The special semantics of the equally + named special parameter of the SHELL[34m[]8;;#643\643]8;;\] [0mare not yet sup‐ + ported. + + [4m@[24m]8;:id=362;#\]8;;\ (Read-only) Expands all positional parameters (see [4m1[34m[24m[]8;;#365\365]8;;\][0m), + separated by a space character. If placed in double quotation + marks, each positional parameter is properly quoted to expand + to a single parameter again. + + [4m#[24m]8;:id=363;#\]8;;\ (Read-only) Expands to the number of positional parameters, + i.e., the size of the positional parameter stack in decimal. + + [4m0[24m]8;:id=364;#\]8;;\ (Read-only) Inside the scope of a [1mdefine[34m[22m[]8;;#174\174]8;;\][0md and [1mcall[34m[22m[]8;;#155\155]8;;\][0med + macro this expands to the name of the calling macro, or to the + empty string if the macro is running from top-level or as a + hook. For the [Option]al regular expression search and replace + operator of [1mvexpr[34m[22m[]8;;#306\306]8;;\] [0mthis expands to the entire matching ex‐ + pression. It represents the program name in global context, + and “compose mode” in [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m. + + [4m1[24m]8;:id=365;#\]8;;\ (Read-only) Access of the positional parameter stack. All fur‐ + ther parameters can be accessed with this syntax, too, ‘2’, ‘3’ + etc.; positional parameters can be shifted off the stack by + calling [1mshift[34m[22m[]8;;#278\278]8;;\][0m. The parameter stack contains, for example, + the arguments of a [1mcall[34m[22m[]8;;#155\155]8;;\][0med [1mdefine[34m[22m[]8;;#174\174]8;;\][0md macro, the matching + groups of the [Option]al regular expression search and replace + expression of [1mvexpr[34m[22m[]8;;#306\306]8;;\][0m, and can be explicitly created or + overwritten with the command [1mvpospar[34m[22m[]8;;#307\307]8;;\][0m. + + [4maccount[24m]8;:id=366;#\]8;;\ (Read-only) Is set to the active [1maccount[34m[22m[]8;;#144\144]8;;\][0m. + + [4madd-file-recipients[24m]8;:id=367;#\]8;;\ + (Boolean) When file or pipe recipients have been specified, + mention them in the corresponding address fields of the message + instead of silently stripping them from their recipient list. + By default such recipients are not mentioned. + + [4mallnet[24m]8;:id=368;#\]8;;\ (Boolean) Causes only the local part to be evaluated when com‐ + paring addresses. + + [4mappend[24m]8;:id=369;#\]8;;\ (Boolean) Causes messages saved in the [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\][0m + MBOX[34m[]8;;#638\638]8;;\] [0mto be appended to the end rather than prepended. + This should always be set. + + [4maskatend[24m]8;:id=370;#\]8;;\ (Boolean) Causes the prompts for ‘Cc:’ and ‘Bcc:’ lists to ap‐ + pear after the message has been edited. + + [4maskattach[24m]8;:id=371;#\]8;;\ + (Boolean) If set, S-nail asks an interactive user for files to + attach at the end of each message; An empty line finalizes the + list. + + [4maskcc[24m]8;:id=372;#\]8;;\ (Boolean) Causes the interactive user to be prompted for carbon + copy recipients (at the end of each message if [4maskatend[34m[24m[]8;;#370\370]8;;\] [0mor + [4mbsdcompat[34m[24m[]8;;#387\387]8;;\] [0mare set). + + [4maskbcc[24m]8;:id=373;#\]8;;\ (Boolean) Causes the interactive user to be prompted for blind + carbon copy recipients (at the end of each message if + [4maskatend[34m[24m[]8;;#370\370]8;;\] [0mor [4mbsdcompat[34m[24m[]8;;#387\387]8;;\] [0mare set). + + [4masksend[24m]8;:id=374;#\]8;;\ (Boolean) Causes the interactive user to be prompted for con‐ + firmation to send the message or reenter compose mode after + having been shown a preliminary envelope summary. + + [4masksign[24m]8;:id=375;#\]8;;\ (Boolean)[Option] Causes the interactive user to be prompted if + the message is to be signed at the end of each message. The + [4msmime-sign[34m[24m[]8;;#568\568]8;;\] [0mvariable is ignored when this variable is set. + + [4masksub[24m]8;:id=376;#\]8;;\ (Boolean) Causes S-nail to prompt the interactive user for the + subject upon entering compose mode unless a subject already ex‐ + ists. + + [4mattrlist[24m]8;:id=377;#\]8;;\ A sequence of characters to display in the ‘attribute’ column + of the [4mheadline[34m[24m[]8;;#439\439]8;;\] [0mas shown in the display of [1mheaders[34m[22m[]8;;#214\214]8;;\][0m; + each for one type of messages (see [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m), with + the default being ‘NUROSPMFAT+-$˜’ or ‘NU *HMFAT+-$˜’ if the + [4mbsdflags[34m[24m[]8;;#388\388]8;;\] [0mvariable is set, in the following order: + + ‘N’ new. + ‘U’ unread but old. + ‘R’ new but read. + ‘O’ read and old. + ‘S’ saved. + ‘P’ preserved. + ‘M’ mboxed. + ‘F’ flagged. + ‘A’ answered. + ‘T’ draft. + ‘+’ [v15 behaviour may differ] start of a (collapsed) + thread in threaded [1msort[34m[22m[]8;;#282\282]8;;\] [0mmode; + ‘-’ [v15 behaviour may differ] an uncollapsed thread in + threaded [1msort[34m[22m[]8;;#282\282]8;;\] [0mmode; only used in conjunction + with [1m-L[34m[22m[]8;;#72\72]8;;\][0m. + ‘$’ classified as spam. + ‘˜’ classified as possible spam. + + [4mautobcc[24m]8;:id=378;#\]8;;\ Specifies a list of recipients to which a blind carbon copy of + each outgoing message will be sent automatically. + + [4mautocc[24m]8;:id=379;#\]8;;\ Specifies a list of recipients to which a carbon copy of each + outgoing message will be sent automatically. + + [4mautocollapse[24m]8;:id=380;#\]8;;\ + (Boolean) Causes threads to be [1mcollapse[34m[22m[]8;;#162\162]8;;\][0md automatically + when ‘thread’ed [1msort[34m[22m[]8;;#282\282]8;;\] [0mmode is entered. + + [4mautoprint[24m]8;:id=381;#\]8;;\ + (Boolean) Enable automatic [1mtype[34m[22m[]8;;#297\297]8;;\][0ming of a(n existing) + “successive” message after [1mdelete[34m[22m[]8;;#176\176]8;;\] [0mand [1mundelete[34m[22m[]8;;#177\177]8;;\] [0mcom‐ + mands: the message that becomes the new “dot” is shown automat‐ + ically, as via [1mdp[34m[22m[]8;;#180\180]8;;\] [0mor [1mdt[34m[22m[]8;;#181\181]8;;\][0m. + + [4mautosort[24m]8;:id=382;#\]8;;\ Causes sorted mode (see the [1msort[34m[22m[]8;;#282\282]8;;\] [0mcommand) to be entered + automatically with the value of this variable as sorting method + when a folder is opened, for example ‘set autosort=thread’. + + [4mbang[24m]8;:id=383;#\]8;;\ (Boolean) Enables the substitution of all not (reverse-solidus) + escaped exclamation mark ‘!’ characters by the contents of the + last executed command for the [1m![34m[22m[]8;;#138\138]8;;\] [0mshell escape command and + [1m˜![34m[22m[]8;;#314\314]8;;\][0m, one of the compose mode [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. If this + variable is not set no reverse solidus stripping is performed. + + [4mbind-timeout[24m]8;:id=384;#\]8;;\ + [Obsolete] Predecessor of [4mbind-inter-byte-timeout[34m[24m[]8;;#385\385]8;;\][0m. [v15 + behaviour may differ] Setting this automatically sets the suc‐ + cessor. + + [4mbind-inter-byte-timeout[24m]8;:id=385;#\]8;;\ + [Option] Terminals may generate multi-byte sequences for spe‐ + cial function keys, for example, but these sequences may not + become read as a unit. Multi-byte sequences may also be de‐ + fined freely via [1mbind[34m[22m[]8;;#153\153]8;;\][0m. This variable specifies the time‐ + out in milliseconds that the [4mMLE[34m[24m[]8;;#93\93]8;;\] [0m(see [4mOn[24m [4mterminal[24m [4mcontrol[0m + [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m) waits for more bytes to arrive unless it + considers a sequence “complete”. The default is 200, the maxi‐ + mum is about 10 seconds. In the following example the comments + state which sequences are affected by this timeout: + + ? bind base abc echo 0 # abc + ? bind base ab,c echo 1 # ab + ? bind base abc,d echo 2 # abc + ? bind base ac,d echo 3 # ac + ? bind base a,b,c echo 4 + ? bind base a,b,c,d echo 5 + ? bind base a,b,cc,dd echo 6 # cc and dd + + [4mbind-inter-key-timeout[24m]8;:id=386;#\]8;;\ + [Option] Multi-key [1mbind[34m[22m[]8;;#153\153]8;;\] [0msequences do not time out by de‐ + fault. If this variable is set, then the current key sequence + is forcefully terminated once the timeout (in milliseconds) + triggers. The value should be (maybe significantly) larger + than [4mbind-inter-byte-timeout[34m[24m[]8;;#385\385]8;;\][0m, but cannot excess the maxi‐ + mum, too. + + [4mbsdcompat[24m]8;:id=387;#\]8;;\ + (Boolean) Sets some cosmetical features to traditional BSD + style; has the same affect as setting [4maskatend[34m[24m[]8;;#370\370]8;;\] [0mand all + other variables prefixed with ‘bsd’; it also changes the behav‐ + iour of [4memptystart[34m[24m[]8;;#418\418]8;;\] [0m(which does not exist in BSD). + + [4mbsdflags[24m]8;:id=388;#\]8;;\ (Boolean) Changes the letters shown in the first column of a + header summary to traditional BSD style. + + [4mbsdheadline[24m]8;:id=389;#\]8;;\ + (Boolean) Changes the display of columns in a header summary to + traditional BSD style. + + [4mbsdmsgs[24m]8;:id=390;#\]8;;\ (Boolean) Changes some informational messages to traditional + BSD style. + + [4mbsdorder[24m]8;:id=391;#\]8;;\ (Boolean) Causes the ‘Subject:’ field to appear immediately af‐ + ter the ‘To:’ field in message headers and with the [1m˜h[34m[22m[]8;;#332\332]8;;\][0m + [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. + + [4mbuild-cc[24m]8;:id=392;#\]8;;\, [4mbuild-ld[24m]8;:id=393;#\]8;;\, [4mbuild-os[24m]8;:id=394;#\]8;;\, [4mbuild-rest[24m]8;:id=395;#\]8;;\ + (Read-only) The build environment, including the compiler, the + linker, the operating system S-nail has been build for, usually + taken from uname(1)[34m[]8;:id=731;man:uname(1)\731]8;;\] [0mvia ‘uname -s’, and then lowercased, + as well as all the possibly interesting rest of the configura‐ + tion and build environment. This information is also available + in the [4mverbose[34m[24m[]8;;#616\616]8;;\] [0moutput of the command [1mversion[34m[22m[]8;;#305\305]8;;\][0m. + + [4mcharset-7bit[24m]8;:id=396;#\]8;;\ + The value that should appear in the ‘charset=’ parameter of + ‘Content-Type:’ MIME header fields when no character set con‐ + version of the message data was performed. This defaults to + US-ASCII, and the chosen character set should be US-ASCII com‐ + patible. + + [4mcharset-8bit[24m]8;:id=397;#\]8;;\ + [Option] The default 8-bit character set that is used as an im‐ + plicit last member of the variable [4msendcharsets[34m[24m[]8;;#549\549]8;;\][0m. This de‐ + faults to UTF-8 if character set conversion capabilities are + available, and to ISO-8859-1 otherwise (unless the operating + system environment is known to always and exclusively support + UTF-8 locales), in which case the only supported character set + is [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mand this variable is effectively ignored. + + [4mcharset-unknown-8bit[24m]8;:id=398;#\]8;;\ + [Option] RFC 1428 specifies conditions when internet mail gate‐ + ways shall “upgrade” the content of a mail message by using a + character set with the name ‘unknown-8bit’. Because of the un‐ + classified nature of this character set S-nail will not be ca‐ + pable to convert this character set to any other character set. + If this variable is set any message part which uses the charac‐ + ter set ‘unknown-8bit’ is assumed to really be in the character + set given in the value, otherwise the (final) value of + [4mcharset-8bit[34m[24m[]8;;#397\397]8;;\] [0mis used for this purpose. + + This variable will also be taken into account if a MIME type + (see [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m) of a MIME message part that uses + the ‘binary’ character set is forcefully treated as text. + + [4mcmd[24m]8;:id=399;#\]8;;\ The default value for the [1mpipe[34m[22m[]8;;#248\248]8;;\] [0mcommand. + + [4mcolour-disable[24m]8;:id=400;#\]8;;\ + (Boolean)[Option] Forcefully disable usage of colours. Also + see the section [4mColoured[24m [4mdisplay[34m[24m[]8;;#16\16]8;;\][0m. + + [4mcolour-pager[24m]8;:id=401;#\]8;;\ + [Obsolete](Boolean)[Option] This is now an implied setting when + [4mcolour-disable[34m[24m[]8;;#400\400]8;;\] [0mis not set! + + [4mcontact-mail[24m]8;:id=402;#\]8;;\, [4mcontact-web[24m]8;:id=403;#\]8;;\ + (Read-only) Addresses for contact per email and web, respec‐ + tively, for bug reports, suggestions, or anything else regard‐ + ing S-nail. The former can be used directly: ‘? [1meval[34m[22m[]8;;#127\127]8;;\][0m + [1mmail[34m[22m[]8;;#224\224]8;;\] [0m$contact-mail’. + + [4mcontent-description-forwarded-message[24m]8;:id=404;#\]8;;\, + [4mcontent-description-quote-attachment[24m]8;:id=405;#\]8;;\, + [4mcontent-description-smime-message[24m]8;:id=406;#\]8;;\, + [4mcontent-description-smime-signature[24m]8;:id=407;#\]8;;\ + [Option](partially) Strings which will be placed in according + ‘Content-Description:’ headers if non-empty. They all have de‐ + fault values, for example ‘Forwarded message’. + + [4mcrt[24m]8;:id=408;#\]8;;\ If set it defines the threshold that determines how many lines + of output there have to be before the PAGER[34m[]8;;#640\640]8;;\] [0mwill be used + for display. Usage of the PAGER[34m[]8;;#640\640]8;;\] [0mcan be forced by setting + this to the value ‘0’, setting it without a value will deduce + the current height of the terminal screen to compute the + threshold (see LINES[34m[]8;;#631\631]8;;\][0m, [4mscreen[34m[24m[]8;;#547\547]8;;\] [0mand stty(1)[34m[]8;:id=732;man:stty(1)\732]8;;\][0m). [v15 + behaviour may differ] At the moment this may use the count of + lines of the message in wire format, which, dependent on the + [4mmime-encoding[34m[24m[]8;;#479\479]8;;\] [0mof the message, is unrelated to the number + of display lines. (The software is old and historically the + relation was a given thing.) + + [4mcustomhdr[24m]8;:id=409;#\]8;;\ + Define a set of custom headers to be injected into newly com‐ + posed or forwarded messages. A custom header consists of the + field name followed by a colon ‘:’ and the field content body. + Standard header field names cannot be overwritten by a custom + header, with the exception of ‘Comments:’ and ‘Keywords:’. + Different to the command line option [1m-C[34m[22m[]8;;#61\61]8;;\] [0mthe variable value + is interpreted as a comma-separated list of custom headers: to + include commas in header bodies they need to become escaped + with reverse solidus ‘\’. Headers can be managed more freely + in [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0mvia [1m˜ˆ[34m[22m[]8;;#322\322]8;;\][0m. + + ? set customhdr=’Hdr1: Body1-1\, Body1-2, Hdr2: Body2’ + + [4mdatefield[24m]8;:id=410;#\]8;;\ + Controls the appearance of the ‘%d’ date and time format speci‐ + fication of the [4mheadline[34m[24m[]8;;#439\439]8;;\] [0mvariable, that is used, for exam‐ + ple, when viewing the summary of [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. If unset, then + the local receiving date is used and displayed unformatted, + otherwise the message sending ‘Date:’. It is possible to as‐ + sign a strftime(3)[34m[]8;:id=733;man:strftime(3)\733]8;;\] [0mformat string and control formatting, + but embedding newlines via the ‘%n’ format is not supported, + and will result in display errors. The default is ‘%Y-%m-%d + %H:%M’, and also see [4mdatefield-markout-older[34m[24m[]8;;#411\411]8;;\][0m. + + [4mdatefield-markout-older[24m]8;:id=411;#\]8;;\ + Only used in conjunction with [4mdatefield[34m[24m[]8;;#410\410]8;;\][0m. Can be used to + create a visible distinction of messages dated more than a day + in the future, or older than six months, a concept comparable + to the [1m-l [22moption of the POSIX utility ls(1)[34m[]8;:id=734;man:ls(1)\734]8;;\][0m. If set to + the empty string, then the plain month, day and year of the + ‘Date:’ will be displayed, but a strftime(3)[34m[]8;:id=735;man:strftime(3)\735]8;;\] [0mformat string + to control formatting can be assigned. The default is + ‘%Y-%m-%d’. + + [4mdebug[24m]8;:id=412;#\]8;;\ (Boolean) (Almost) Enter a debug-only sandbox mode which gener‐ + ates many log messages, disables the actual delivery of mes‐ + sages, and also implies no[4mrecord[34m[24m[]8;;#537\537]8;;\] [0mas well as no[4msave[34m[24m[]8;;#546\546]8;;\][0m. + Also see [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. + + [4mdisposition-notification-send[24m]8;:id=413;#\]8;;\ + (Boolean)[Option] Emit a ‘Disposition-Notification-To:’ header + (RFC 3798) with the message. This requires the [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mvari‐ + able to be set. + + [4mdot[24m]8;:id=414;#\]8;;\ (Boolean) When dot is set, a period ‘.’ on a line by itself + during message input in (interactive or batch [1m-#[34m[22m[]8;;#90\90]8;;\][0m) [4mCompose[0m + [4mmode[34m[24m[]8;;#8\8]8;;\] [0mwill be treated as end-of-message (in addition to the + normal end-of-file condition). This behaviour is implied in + [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode with a set [4mignoreeof[34m[24m[]8;;#452\452]8;;\][0m. + + [4mdotlock-disable[24m]8;:id=415;#\]8;;\ + (Boolean)[Option] Disable creation of [4mdotlock[24m [4mfiles[34m[24m[]8;;#204\204]8;;\] [0mfor + MBOX databases. + + [4meditalong[24m]8;:id=416;#\]8;;\ + If this variable is set then the editor is started automati‐ + cally when a message is composed in interactive mode. If the + value starts with the letter ‘v’ then this acts as if [1m˜v[34m[22m[]8;;#346\346]8;;\][0m, + otherwise as if [1m˜e[34m[22m[]8;;#328\328]8;;\] [0m(see [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m) had been + specified. The [4meditheaders[34m[24m[]8;;#417\417]8;;\] [0mvariable is implied for this + automatically spawned editor session. + + [4meditheaders[24m]8;:id=417;#\]8;;\ + (Boolean) When a message is edited while being composed, its + header is included in the editable text. + + [4memptystart[24m]8;:id=418;#\]8;;\ + (Boolean) When entering interactive mode S-nail normally writes + “No mail for user” and exits immediately if a mailbox is empty + or does not exist. If this variable is set S-nail starts even + with an empty or non-existent mailbox (the latter behaviour + furtherly depends upon [4mbsdcompat[34m[24m[]8;;#387\387]8;;\][0m, though). + + [4merrexit[24m]8;:id=419;#\]8;;\ (Boolean) Let each command with a non-0 exit status, including + every [1mcall[34m[22m[]8;;#155\155]8;;\][0med macro which [1mreturn[34m[22m[]8;;#266\266]8;;\][0ms a non-0 status, + cause a program exit unless prefixed by [1mignerr[34m[22m[]8;;#129\129]8;;\] [0m(see + [4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m). This also affects [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m, + but which use a different modifier for ignoring the error. For + more on this topic refer to the variable [4m?[34m[24m[]8;;#350\350]8;;\][0m. + + [4merrors-limit[24m]8;:id=420;#\]8;;\ + [Option] Maximum number of entries in the [1merrors[34m[22m[]8;;#194\194]8;;\] [0mqueue. + + [4mescape[24m]8;:id=421;#\]8;;\ The first character of this value defines the escape character + for [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0min [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\][0m. The default value + is the character tilde ‘˜’. If set to the empty string, com‐ + mand escapes are disabled. + + [4mexpandaddr[24m]8;:id=422;#\]8;;\ + If unset only user name and email address recipients are al‐ + lowed [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m. If set + without value all possible recipient types will be accepted. A + value is parsed as a comma-separated list of case-insensitive + strings, and if that contains ‘restrict’ behaviour equals the + former except when in interactive mode or if [4mCOMMAND[0m + [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0mwere enabled via [1m-˜[34m[22m[]8;;#89\89]8;;\] [0mor [1m-#[34m[22m[]8;;#90\90]8;;\][0m, in which case it + equals the latter, allowing all address types. ‘restrict’ re‐ + ally acts like ‘restrict,-all,+name,+addr’, so care for order‐ + ing issues must be taken. + + Recipient types can be added and removed with a plus sign ‘+’ + or hyphen-minus ‘-’ prefix, respectively. By default invalid + or disallowed types are filtered out and cause a warning, hard + send errors need to be enforced by including ‘fail’. The value + ‘all’ covers all types, ‘fcc’ whitelists ‘Fcc:’ header targets + regardless of other settings, ‘file’ file targets (it includes + ‘fcc’), ‘pipe’ command pipeline targets, ‘name’ user names + still unexpanded after [1malias[34m[22m[]8;;#147\147]8;;\] [0mand [4mmta-aliases[34m[24m[]8;;#483\483]8;;\] [0mprocess‐ + ing and thus left for expansion by the [4mmta[34m[24m[]8;;#482\482]8;;\] [0m(invalid for + the built-in SMTP one), and ‘addr’ network addresses. Targets + are interpreted in the given order, so that ‘restrict,fail, + +file,-all,+addr’ will cause hard errors for any non-network + address recipient address unless running interactively or hav‐ + ing been started with the option [1m-˜[34m[22m[]8;;#89\89]8;;\] [0mor [1m-#[34m[22m[]8;;#90\90]8;;\][0m; in the lat‐ + ter case(s) any type may be used. + + Plain user name recipients addressing valid local users can be + expanded to fully qualified network addresses (also see + [4mhostname[34m[24m[]8;;#447\447]8;;\][0m) by including ‘nametoaddr’ in the list. Histori‐ + cally invalid recipients were stripped off without causing er‐ + rors, this can be changed by making ‘failinvaddr’ an entry of + the list (it really acts like ‘failinvaddr,+addr’). Likewise, + ‘domaincheck’ (really ‘domaincheck,+addr’) compares address do‐ + main names against a whitelist and strips off (‘fail’ for hard + errors) recipients which fail this test; the domain name + ‘localhost’ and the non-empty value of [4mhostname[34m[24m[]8;;#447\447]8;;\] [0m(the real + hostname otherwise) are always whitelisted, + [4mexpandaddr-domaincheck[34m[24m[]8;;#423\423]8;;\] [0mcan be set to extend this list. + Finally some address providers (for example [1m-b[34m[22m[]8;;#60\60]8;;\][0m, [1m-c[34m[22m[]8;;#62\62]8;;\] [0mand + all other command line recipients) will be evaluated as if + specified within dollar-single-quotes (see [4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\][0m) if the value list contains the string ‘shquote’. + + [4mexpandaddr-domaincheck[24m]8;:id=423;#\]8;;\ + Can be set to a comma-separated list of domain names which + should be whitelisted for the evaluation of the ‘domaincheck’ + mode of [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m. IDNA encoding is not automatically + performed, [1maddrcodec[34m[22m[]8;;#146\146]8;;\] [0mcan be used to prepare the domain (of + an address). + + [4mexpandargv[24m]8;:id=424;#\]8;;\ + Unless this variable is set additional [4mmta[34m[24m[]8;;#482\482]8;;\] [0marguments from + the command line, as can be given after a [1m-- [22mseparator, results + in a program termination with failure status. The same can be + accomplished by using the special (case-insensitive) value + ‘fail’. A lesser strict variant is the otherwise identical + ‘restrict’, which does accept such arguments in interactive + mode, or if tilde commands were enabled explicitly by using one + of the command line options [1m-˜[34m[22m[]8;;#89\89]8;;\] [0mor [1m-#[34m[22m[]8;;#90\90]8;;\][0m. The empty value + will allow unconditional usage. + + [4mfeatures[24m]8;:id=425;#\]8;;\ (Read-only) String giving a list of optional features. Fea‐ + tures are preceded with a plus sign ‘+’ if they are available, + with a hyphen-minus ‘-’ otherwise. To ease substring matching + the string starts and ends with a comma. The output of the + command [1mversion[34m[22m[]8;;#305\305]8;;\] [0mincludes this information in a more pleas‐ + ant output. + + [4mflipr[24m]8;:id=426;#\]8;;\ (Boolean) This setting reverses the meanings of a set of reply + commands, turning the lowercase variants, which by default ad‐ + dress all recipients included in the header of a message + ([1mreply[34m[22m[]8;;#261\261]8;;\][0m, [1mrespond[34m[22m[]8;;#262\262]8;;\][0m, [1mfollowup[34m[22m[]8;;#207\207]8;;\][0m) into the uppercase + variants, which by default address the sender only ([1mReply[34m[22m[]8;;#259\259]8;;\][0m, + [1mRespond[34m[22m[]8;;#260\260]8;;\][0m, [1mFollowup[34m[22m[]8;;#206\206]8;;\][0m) and vice versa. + + [4mfolder[24m]8;:id=427;#\]8;;\ The default path under which mailboxes are to be saved: file‐ + names that begin with the plus sign ‘+’ will have the plus sign + replaced with the value of this variable if set, otherwise the + plus sign will remain unchanged when doing [4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m; also see [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mfor more on this + topic, and know about standard imposed implications of + [4moutfolder[34m[24m[]8;;#493\493]8;;\][0m. The value supports a subset of transformations + itself, and if the non-empty value does not start with a + solidus ‘/’, then the value of HOME[34m[]8;;#627\627]8;;\] [0mwill be prefixed auto‐ + matically. Once the actual value is evaluated first, the in‐ + ternal variable [4mfolder-resolved[34m[24m[]8;;#428\428]8;;\] [0mwill be updated for + caching purposes. + + [4mfolder-hook-FOLDER[24m, [4mfolder-hook[0m + [Obsolete] Predecessor of both of [4mon-mailbox-newmail[34m[24m[]8;;#502\502]8;;\] [0m(with + a different [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscope!) and [4mon-mailbox-open[34m[24m[]8;;#501\501]8;;\][0m. + + [4mfolder-resolved[24m]8;:id=428;#\]8;;\ + (Read-only) Set to the fully resolved path of [4mfolder[34m[24m[]8;;#427\427]8;;\] [0monce + that evaluation has occurred; rather internal. + + [4mfollowup-to[24m]8;:id=429;#\]8;;\ + (Boolean) Controls whether a ‘Mail-Followup-To:’ header is gen‐ + erated when sending messages to known mailing lists. The user + as determined via [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or, if that contains multiple ad‐ + dresses, [4msender[34m[24m[]8;;#551\551]8;;\][0m) will be placed in there if any list re‐ + cipient is not a subscribed list. Also see + [4mfollowup-to-honour[34m[24m[]8;;#431\431]8;;\] [0mand the commands [1mmlist[34m[22m[]8;;#230\230]8;;\][0m, + [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0m, [1mreply[34m[22m[]8;;#261\261]8;;\] [0mand [1mLreply[34m[22m[]8;;#222\222]8;;\][0m. + + [4mfollowup-to-add-cc[24m]8;:id=430;#\]8;;\ + (Boolean) Controls whether the user will be added to the mes‐ + sages’ ‘Cc:’ list in addition to placing an entry in + ‘Mail-Followup-To:’ (see [4mfollowup-to[34m[24m[]8;;#429\429]8;;\][0m). + + [4mfollowup-to-honour[24m]8;:id=431;#\]8;;\ + Controls whether a ‘Mail-Followup-To:’ header is honoured when + group-replying to a message via [1mreply[34m[22m[]8;;#261\261]8;;\] [0mor [1mLreply[34m[22m[]8;;#222\222]8;;\][0m. + This is a [4mquadoption[34m[24m[]8;;#349\349]8;;\][0m; if set without a value it defaults + to “yes”, and see [4mfollowup-to[34m[24m[]8;;#429\429]8;;\][0m. + + [4mforward-add-cc[24m]8;:id=432;#\]8;;\ + (Boolean) Whether senders of messages forwarded via [1m˜F[34m[22m[]8;;#329\329]8;;\][0m, + [1m˜f[34m[22m[]8;;#330\330]8;;\][0m, [1m˜m[34m[22m[]8;;#336\336]8;;\][0m, [1m˜U[34m[22m[]8;;#344\344]8;;\] [0mor [1m˜u[34m[22m[]8;;#345\345]8;;\] [0mshall be made members of + the carbon copies ‘Cc:’ list. + + [4mforward-as-attachment[24m]8;:id=433;#\]8;;\ + (Boolean) Original messages are normally sent as inline text + with the [1mforward[34m[22m[]8;;#210\210]8;;\] [0mcommand, and only the first part of a + multipart message is included. With this setting enabled mes‐ + sages are sent as unmodified MIME ‘message/rfc822’ attachments + with all of their parts included. + + [4mforward-inject-head[24m]8;:id=434;#\]8;;\, [4mforward-inject-tail[24m]8;:id=435;#\]8;;\ + The strings to put before and after the text of a message with + the [1mforward[34m[22m[]8;;#210\210]8;;\] [0mcommand, respectively. The former defaults to + ‘-------- Original Message --------\n’. Special format direc‐ + tives in these strings will be expanded if possible, and if so + configured the output will be folded according to + [4mquote-fold[34m[24m[]8;;#532\532]8;;\][0m; for more refer to [4mquote-inject-head[34m[24m[]8;;#533\533]8;;\][0m. In‐ + jections will not be performed by [1mforward[34m[22m[]8;;#210\210]8;;\] [0mif the variable + [4mforward-as-attachment[34m[24m[]8;;#433\433]8;;\] [0mis set — the [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m + [1m˜F[34m[22m[]8;;#329\329]8;;\][0m, [1m˜f[34m[22m[]8;;#330\330]8;;\][0m, [1m˜M[34m[22m[]8;;#335\335]8;;\][0m, [1m˜m[34m[22m[]8;;#336\336]8;;\][0m, [1m˜U[34m[22m[]8;;#344\344]8;;\][0m, [1m˜u[34m[22m[]8;;#345\345]8;;\] [0malways in‐ + ject. + + [4mfrom[24m]8;:id=436;#\]8;;\ The address, or a list of addresses to put into the ‘From:’ + field of the message header, quoting RFC 5322: the author(s) of + the message, that is, the mailbox(es) of the person(s) or sys‐ + tem(s) responsible for the writing of the message. If multiple + addresses are used specifying a ‘Sender:’ is required according + to that RFC, which can be done via [4msender[34m[24m[]8;;#551\551]8;;\][0m. [v15 behaviour + may differ] Expect automatic management of the [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mand + [4msender[34m[24m[]8;;#551\551]8;;\] [0mrelationship (requiring an address order in the + former). Dependent on the context these addresses are handled + as if they were in the list of [1malternates[34m[22m[]8;;#149\149]8;;\][0m. + + If a file-based MTA is used, then [4mfrom[24m (or, if that contains + multiple addresses, [4msender[34m[24m[]8;;#551\551]8;;\][0m) can nonetheless be used as the + envelope sender address at the MTA protocol level (the RFC 5321 + reverse-path), either via the [1m-r[34m[22m[]8;;#79\79]8;;\] [0mcommand line option (with‐ + out argument; see there for more), or by setting + [4mr-option-implicit[34m[24m[]8;;#535\535]8;;\][0m. + + If the machine’s hostname is not valid at the Internet (for ex‐ + ample at a dialup machine) either this or [4mhostname[34m[24m[]8;;#447\447]8;;\] [0mhave to + be set (a SMTP-based [4mmta[34m[24m[]8;;#482\482]8;;\] [0madds onto this [4msmtp-from[34m[24m[]8;;#574\574]8;;\][0m): + if so the message and MIME part related unique ID fields + ‘Message-ID:’ and ‘Content-ID:’ will be created (except when + disallowed by [4mmessage-id-disable[34m[24m[]8;;#472\472]8;;\] [0mor [4mstealthmua[34m[24m[]8;;#590\590]8;;\][0m). + + [4mfullnames[24m]8;:id=437;#\]8;;\ + (Boolean) Due to historical reasons comments and name parts of + email addresses are removed by default when sending mail, re‐ + plying to or forwarding a message. If this variable is set + such stripping is not performed. + + [4mheader[24m]8;:id=438;#\]8;;\ (Boolean) Causes the header summary to be written at startup + and after commands that affect the number of messages or the + order of messages in the current [1mfolder[34m[22m[]8;;#203\203]8;;\][0m. Unless in + [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode a header summary will also be displayed on + folder changes. The command line option [1m-N[34m[22m[]8;;#75\75]8;;\] [0mcan be used to + set no[4mheader[34m[24m[]8;;#438\438]8;;\][0m. + + [4mheadline[24m]8;:id=439;#\]8;;\ A format string to use for the summary of [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. Format + specifiers in the given string start with a percent sign ‘%’ + and may be followed by an optional decimal number indicating + the field width — if that is negative, the field is to be left- + aligned. Names and addresses are subject to modifications ac‐ + cording to [4mshowname[34m[24m[]8;;#554\554]8;;\] [0mand [4mshowto[34m[24m[]8;;#555\555]8;;\][0m. Valid format speci‐ + fiers are: + + ‘%%’ A plain percent sign. + ‘%>’ “Dotmark”: a space character but for the current mes‐ + sage (“dot”), for which it expands to ‘>’ (dependent + on [4mheadline-plain[34m[24m[]8;;#441\441]8;;\][0m). + ‘%<’ “Dotmark”: a space character but for the current mes‐ + sage (“dot”), for which it expands to ‘<’ (dependent + on [4mheadline-plain[34m[24m[]8;;#441\441]8;;\][0m). + ‘%$’ [Option] The spam score of the message, as has been + classified via the command [1mspamrate[34m[22m[]8;;#289\289]8;;\][0m. Shows only + a replacement character if there is no spam support. + ‘%a’ Message attribute character (status flag); the actual + content can be adjusted by setting [4mattrlist[34m[24m[]8;;#377\377]8;;\][0m. + ‘%d’ The date found in the ‘Date:’ header of the message + when [4mdatefield[34m[24m[]8;;#410\410]8;;\] [0mis set (the default), otherwise + the date when the message was received. Formatting + can be controlled by assigning a strftime(3)[34m[]8;:id=736;man:strftime(3)\736]8;;\][0m + format string to [4mdatefield[34m[24m[]8;;#410\410]8;;\] [0m(and + [4mdatefield-markout-older[34m[24m[]8;;#411\411]8;;\][0m). + ‘%e’ The indenting level in threaded [1msort[34m[22m[]8;;#282\282]8;;\] [0mmode. + ‘%f’ The address of the message sender. + ‘%i’ The message thread tree structure. (Note that this + format does not support a field width, and honours + [4mheadline-plain[34m[24m[]8;;#441\441]8;;\][0m.) + ‘%L’ Mailing list status: is the recipient of the message + a known ‘l’ ([1mmlist[34m[22m[]8;;#230\230]8;;\][0m) or ‘L’ [1mmlsubscribe[34m[22m[]8;;#232\232]8;;\][0md + mailing list? The letter ‘P’ announces the presence + of a RFC 2369 ‘List-Post:’ header, which makes a mes‐ + sage a valuable target of [1mLreply[34m[22m[]8;;#222\222]8;;\][0m. + ‘%l’ The number of lines of the message, if available. + ‘%m’ Message number. + ‘%o’ The number of octets (bytes) in the message, if + available. + ‘%S’ Message subject (if any) in double quotes. + ‘%s’ Message subject (if any). + ‘%t’ The position in sorted order. + ‘%U’ The value 0 except in an IMAP mailbox, where it ex‐ + pands to the UID of the message. + + The default is ‘%>%a%m %-18f %16d %4l/%-5o %i%-s’, or + ‘%>%a%m %20-f %16d %3l/%-5o %i%-S’ if [4mbsdcompat[34m[24m[]8;;#387\387]8;;\] [0mis set. + Also see [4mattrlist[34m[24m[]8;;#377\377]8;;\][0m, [4mheadline-plain[34m[24m[]8;;#441\441]8;;\] [0mand + [4mheadline-bidi[34m[24m[]8;;#440\440]8;;\][0m. + + [4mheadline-bidi[24m]8;:id=440;#\]8;;\ + Bidirectional text requires special treatment when displaying + headers, because numbers (in dates or for file sizes etc.) will + not affect the current text direction, in effect resulting in + ugly line layouts when arabic or other right-to-left text is to + be displayed. On the other hand only a minority of terminals + is capable to correctly handle direction changes, so that user + interaction is necessary for acceptable results. Note that ex‐ + tended host system support is required nonetheless, e.g., de‐ + tection of the terminal character set is one precondition; and + this feature only works in an Unicode (i.e., UTF-8) locale. + + In general setting this variable will cause S-nail to encapsu‐ + late text fields that may occur when displaying [4mheadline[34m[24m[]8;;#439\439]8;;\][0m + (and some other fields, like dynamic expansions in [4mprompt[34m[24m[]8;;#525\525]8;;\][0m) + with special Unicode control sequences; it is possible to fine- + tune the terminal support level by assigning a value: no value + (or any value other than ‘1’, ‘2’ and ‘3’) will make S-nail as‐ + sume that the terminal is capable to properly deal with Unicode + version 6.3, in which case text is embedded in a pair of U+2068 + (FIRST STRONG ISOLATE) and U+2069 (POP DIRECTIONAL ISOLATE) + characters. In addition no space on the line is reserved for + these characters. + + Weaker support is chosen by using the value ‘1’ (Unicode 6.3, + but reserve the room of two spaces for writing the control se‐ + quences onto the line). The values ‘2’ and ‘3’ select Unicode + 1.1 support (U+200E, LEFT-TO-RIGHT MARK); the latter again re‐ + serves room for two spaces in addition. + + [4mheadline-plain[24m]8;:id=441;#\]8;;\ + (Boolean) On Unicode (UTF-8) aware terminals enhanced graphical + symbols are used by default for certain entries of + [4mheadline[34m[24m[]8;;#439\439]8;;\][0m. If this variable is set only basic US-ASCII + symbols will be used. + + [4mhistory-file[24m]8;:id=442;#\]8;;\ + [Option] The (expandable) location of a permanent [1mhistory[34m[22m[]8;;#216\216]8;;\][0m + file for the [4mMLE[34m[24m[]8;;#93\93]8;;\] [0mline editor ([4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[0m + [4meditor[34m[24m[]8;;#15\15]8;;\][0m). Also see [4mhistory-size[34m[24m[]8;;#445\445]8;;\][0m. + + [4mhistory-gabby[24m]8;:id=443;#\]8;;\ + [Option] Add more entries to the MLE [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mas is nor‐ + mally done. A comma-separated list of case-insensitive strings + can be used to fine-tune which gabby entries shall be allowed. + If it contains ‘errors’, erroneous commands will also be added. + ‘all’ adds all optional entries, and is the fallback chattiness + identifier of [4mon-history-addition[34m[24m[]8;;#500\500]8;;\][0m. + + [4mhistory-gabby-persist[24m]8;:id=444;#\]8;;\ + (Boolean)[Option] The [4mhistory-gabby[34m[24m[]8;;#443\443]8;;\] [0mentries will not be + saved in persistent storage unless this variable is set. The + knowledge of whether a persistent entry was gabby is not lost. + Also see [4mhistory-file[34m[24m[]8;;#442\442]8;;\][0m. + + [4mhistory-size[24m]8;:id=445;#\]8;;\ + [Option] Setting this variable imposes a limit on the number of + concurrent [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mentries. If set to the value 0 then no + further history entries will be added, and loading and incorpo‐ + ration of the [4mhistory-file[34m[24m[]8;;#442\442]8;;\] [0mupon program startup can also + be suppressed by doing this. Runtime changes will not be re‐ + flected before the [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mis saved or loaded (again). + + [4mhold[24m]8;:id=446;#\]8;;\ (Boolean) This setting controls whether messages are held in + the system [4minbox[34m[24m[]8;;#453\453]8;;\][0m, and it is set by default. + + [4mhostname[24m]8;:id=447;#\]8;;\ Used instead of the value obtained from uname(3)[34m[]8;:id=737;man:uname(3)\737]8;;\] [0mand + getaddrinfo(3)[34m[]8;:id=738;man:getaddrinfo(3)\738]8;;\] [0mas the hostname when expanding local ad‐ + dresses, for example in ‘From:’ (also see [4mOn[24m [4msending[24m [4mmail,[24m [4mand[0m + [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m, for expansion of addresses that have a + valid user-, but no domain name in angle brackets). If either + of [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mor this variable is set the message and MIME part + related unique ID fields ‘Message-ID:’ and ‘Content-ID:’ will + be created (except when disallowed by [4mmessage-id-disable[34m[24m[]8;;#472\472]8;;\][0m + or [4mstealthmua[34m[24m[]8;;#590\590]8;;\][0m). If the [Option]al IDNA support is avail‐ + able (see [4midna-disable[34m[24m[]8;;#448\448]8;;\][0m) variable assignment is aborted + when a necessary conversion fails. + + Setting it to the empty string will cause the normal hostname + to be used, but nonetheless enables creation of said ID fields. + One should produce some test messages with the desired combina‐ + tion of [4mhostname[24m, and/or [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, [4msender[34m[24m[]8;;#551\551]8;;\][0m, [4msmtp-from[34m[24m[]8;;#574\574]8;;\][0m + etc. first. + + [4midna-disable[24m]8;:id=448;#\]8;;\ + (Boolean)[Option] Can be used to turn off the automatic conver‐ + sion of domain names according to the rules of IDNA (interna‐ + tionalized domain names for applications). Since the IDNA code + assumes that domain names are specified with the + [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mcharacter set, an UTF-8 locale charset is re‐ + quired to represent all possible international domain names + (before conversion, that is). + + [4mifs[24m]8;:id=449;#\]8;;\ The input field separator that is used ([v15 behaviour may dif‐ + fer] by some functions) to determine where to split input data. + + 1. Unsetting is treated as assigning the default value, + ‘ \t\n’. + 2. If set to the empty value, no field splitting will be + performed. + 3. If set to a non-empty value, all whitespace charac‐ + ters are extracted and assigned to the variable + [4mifs-ws[34m[24m[]8;;#450\450]8;;\][0m. + + a. [4mifs-ws[24m will be ignored at the beginning and end of + input. Diverging from POSIX shells default white‐ + space is removed in addition, which is owed to the + entirely different line content extraction rules. + b. Each occurrence of a character of [4mifs[24m will cause + field-splitting, any adjacent [4mifs-ws[24m characters will + be skipped. + + [4mifs-ws[24m]8;:id=450;#\]8;;\ (Read-only) Automatically deduced from the whitespace charac‐ + ters in [4mifs[34m[24m[]8;;#449\449]8;;\][0m. + + [4mignore[24m]8;:id=451;#\]8;;\ (Boolean) Ignore interrupt signals from the terminal while en‐ + tering messages; instead echo them as ‘@’ characters and dis‐ + card the current line. + + [4mignoreeof[24m]8;:id=452;#\]8;;\ + (Boolean) Ignore end-of-file conditions (‘control-D’) in + [4mCompose[24m [4mmode[34m[24m[]8;;#8\8]8;;\] [0mon message input and in interactive command in‐ + put. If set an interactive command input session can only be + left by explicitly using one of the commands [1mexit[34m[22m[]8;;#195\195]8;;\] [0mand + [1mquit[34m[22m[]8;;#252\252]8;;\][0m, and message input in compose mode can only be termi‐ + nated by entering a period ‘.’ on a line by itself or by using + the [1m˜.[34m[22m[]8;;#315\315]8;;\] [0m[4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m; Setting this implies the be‐ + haviour that [4mdot[34m[24m[]8;;#414\414]8;;\] [0mdescribes in [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode. + + [4minbox[24m]8;:id=453;#\]8;;\ If this is set to a non-empty string it will specify the user’s + [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0m, overriding MAIL[34m[]8;;#634\634]8;;\] [0mand the sys‐ + tem-dependent default, and (thus) be used to replace ‘%’ when + doing [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m; also see [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mfor + more on this topic. The value supports a subset of transforma‐ + tions itself. + + [4mindentprefix[24m]8;:id=454;#\]8;;\ + String used by the [1m˜m[34m[22m[]8;;#336\336]8;;\][0m, [1m˜M[34m[22m[]8;;#335\335]8;;\] [0mand [1m˜R[34m[22m[]8;;#340\340]8;;\] [0m[4mCOMMAND[0m + [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0mand by the [4mquote[34m[24m[]8;;#528\528]8;;\] [0moption for indenting mes‐ + sages, in place of the POSIX mandated default tabulator charac‐ + ter ‘\t’. Also see [4mquote-chars[34m[24m[]8;;#531\531]8;;\][0m. + + [4mkeep[24m]8;:id=455;#\]8;;\ (Boolean) If set, an empty [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mfile is + not removed. Note that, in conjunction with [4mposix[34m[24m[]8;;#523\523]8;;\] [0mmode + any empty file will be removed unless this variable is set. + This may improve the interoperability with other mail user + agents when using a common folder directory, and prevents mali‐ + cious users from creating fake mailboxes in a world-writable + spool directory. [v15 behaviour may differ] Only local regular + (MBOX) files are covered, Maildir and other mailbox types will + never be removed, even if empty. + + [4mkeep-content-length[24m]8;:id=456;#\]8;;\ + (Boolean) When (editing messages and) writing MBOX mailbox + files S-nail can be told to keep the ‘Content-Length:’ and + ‘Lines:’ header fields that some MUAs generate by setting this + variable. Since S-nail does neither use nor update these non- + standardized header fields (which in itself shows one of their + conceptual problems), stripping them should increase interoper‐ + ability in between MUAs that work with with same mailbox files. + Note that, if this is not set but [4mwritebackedited[34m[24m[]8;;#623\623]8;;\][0m, as be‐ + low, is, a possibly performed automatic stripping of these + header fields already marks the message as being modified. + [v15 behaviour may differ] At some future time S-nail will be + capable to rewrite and apply an [4mmime-encoding[34m[24m[]8;;#479\479]8;;\] [0mto modified + messages, and then those fields will be stripped silently. + + [4mkeepsave[24m]8;:id=457;#\]8;;\ (Boolean) When a message is saved it is usually discarded from + the originating folder when S-nail is quit. This setting + causes all saved message to be retained. + + [4mline-editor-config[24m]8;:id=458;#\]8;;\ + [Option] Some aspects of the [4mMLE[34m[24m[]8;;#93\93]8;;\] [0mare dynamically ad‐ + justable. Interpreted as a comma-separated list of case-insen‐ + sitive keywords. ‘quote-rndtrip’ denotes the default setting + of [1mmle-quote-rndtrip[34m[22m[]8;;#108\108]8;;\][0m. ‘srch-case’ defines whether + [1mmle-hist-srch-bwd[34m[22m[]8;;#109\109]8;;\] [0mand [1mmle-hist-srch-fwd[34m[22m[]8;;#110\110]8;;\] [0mmatch case- + insensitively, ‘srch-any’ whether they match any substring or + only at the beginning of lines, and [Option]ally ‘srch-regex’ + will instead search through history based on a regular expres‐ + sion. The cursor is placed at the end of the expanded history + search entry, with ‘srch-pos0’ only if it fits on the line: + like this the command name is always visible. + + [4mline-editor-cpl-word-breaks[24m]8;:id=459;#\]8;;\ + [Option] List of bytes which are used by the [1mmle-complete[34m[22m[]8;;#102\102]8;;\][0m + tabulator completion to decide where word boundaries exist, by + default ‘"’@=;|:’ [v15 behaviour may differ] This mechanism is + yet restricted. + + [4mline-editor-disable[24m]8;:id=460;#\]8;;\ + (Boolean) Turn off any line editing capabilities (from S-nails + POW, see [4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\] [0mfor more). + + [4mline-editor-no-defaults[24m]8;:id=461;#\]8;;\ + (Boolean)[Option] Do not establish any default key binding. + + [4mlog-prefix[24m]8;:id=462;#\]8;;\ + Error log message prefix string (‘s-nail: ’). + + [4mmailbox-basename[24m]8;:id=463;#\]8;;\ + (Read-only) The “last component” of the name of the current + mailbox ([1mfolder[34m[22m[]8;;#203\203]8;;\][0m). + + [4mmailbox-display[24m]8;:id=464;#\]8;;\ + (Read-only) The name of the current mailbox ([1mfolder[34m[22m[]8;;#203\203]8;;\][0m), pos‐ + sibly abbreviated for display purposes. + + [4mmailbox-resolved[24m]8;:id=465;#\]8;;\ + (Read-only) The fully resolved path of the current mailbox. + + [4mmailcap-disable[24m]8;:id=466;#\]8;;\ + (Boolean)[Option] Turn off consideration of MIME type handlers + from, and implicit loading of [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\][0m. + + [4mmailx-extra-rc[24m]8;:id=467;#\]8;;\ + An additional startup file that is loaded as the last of the + [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m. Use this file for commands that are not + understood by other POSIX mailx(1)[34m[]8;:id=739;man:mailx(1)\739]8;;\] [0mimplementations, i.e., + mostly anything which is not covered by [4mInitial[24m [4msettings[34m[24m[]8;;#32\32]8;;\][0m. + + [4mmarkanswered[24m]8;:id=468;#\]8;;\ + (Boolean) When a message is replied to and this variable is + set, it is marked as having been [1manswered[34m[22m[]8;;#151\151]8;;\][0m. See the sec‐ + tion [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m. + + [4mmbox-fcc-and-pcc[24m]8;:id=469;#\]8;;\ + (Boolean) By default all file and pipe message recipients (see + [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m) will be fed valid MBOX database entry message + data (see [1mfolder[34m[22m[]8;;#203\203]8;;\][0m, [4mmbox-rfc4155[34m[24m[]8;;#470\470]8;;\][0m), and existing file + targets will become extended in compliance to RFC 4155. If + this variable is unset then a plain standalone RFC 5322 message + will be written, and existing file targets will be overwritten. + + [4mmbox-rfc4155[24m]8;:id=470;#\]8;;\ + (Boolean) When opening MBOX mailbox databases, and in order to + achieve compatibility with old software, the very tolerant + POSIX standard rules for detecting message boundaries (so- + called ‘From_’ lines) are used instead of the stricter rules + from the standard RFC 4155. This behaviour can be switched by + setting this variable. + + This may temporarily be handy when S-nail complains about in‐ + valid ‘From_’ lines when opening a MBOX: in this case setting + this variable and re-opening the mailbox in question may cor‐ + rect the result. If so, copying the entire mailbox to some + other file, as in ‘copy * SOME-FILE’, will perform proper, all- + compatible ‘From_’ quoting for all detected messages, resulting + in a valid MBOX mailbox. ([v15 behaviour may differ] The bet‐ + ter and non-destructive approach is to re-encode invalid mes‐ + sages, as if it would be created anew, instead of mangling the + ‘From_’ lines; this requires the structural code changes of the + v15 rewrite.) Finally the variable can be unset again: + + ? define mboxfix { + local set mbox-rfc4155; File "${1}"; copy * "${2}" + } + ? call mboxfix /tmp/bad.mbox /tmp/good.mbox + + [4mmemdebug[24m]8;:id=471;#\]8;;\ (Boolean) Internal development variable. Auto-enabled if + [4mdebug[34m[24m[]8;;#412\412]8;;\] [0mis set, but can individually be disabled. + + [4mmessage-id-disable[24m]8;:id=472;#\]8;;\ + (Boolean) By setting this variable the generation of + ‘Message-ID:’ and ‘Content-ID:’ message and MIME part headers + can be completely suppressed, effectively leaving this task up + to the [4mmta[34m[24m[]8;;#482\482]8;;\][0m. Note that according to RFC 5321 a SMTP server + is not required to add this field by itself, so it should be + ensured that it accepts messages without ‘Message-ID’. + + [4mmessage-inject-head[24m]8;:id=473;#\]8;;\ + A string to put at the beginning of each new message, followed + by a newline. [Obsolete] The escape sequences tabulator ‘\t’ + and newline ‘\n’ are understood: expand when [1mset[34m[22m[]8;;#271\271]8;;\][0ming in‐ + stead ([4mv15-compat[34m[24m[]8;;#615\615]8;;\][0m, [1mwysh[34m[22m[]8;;#134\134]8;;\][0m). + + [4mmessage-inject-tail[24m]8;:id=474;#\]8;;\ + A string to put at the end of each new message, followed by a + newline. [Obsolete] The escape sequences tabulator ‘\t’ and + newline ‘\n’ are understood: expand when [1mset[34m[22m[]8;;#271\271]8;;\][0ming instead + ([4mv15-compat[34m[24m[]8;;#615\615]8;;\][0m, [1mwysh[34m[22m[]8;;#134\134]8;;\][0m). Also see [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\][0m. + + ? set sign=$’\n Tony’ Sign=$’\n Tony\n I am fixing things!’ + ? set message-inject-tail=${Sign} + + [4mmetoo[24m]8;:id=475;#\]8;;\ (Boolean) Usually, when an [1malias[34m[22m[]8;;#147\147]8;;\] [0mexpansion contains the + sender, the sender is removed from the expansion. Setting this + option suppresses these removals. Note that a set [4mmetoo[34m[24m[]8;;#475\475]8;;\][0m + also causes a ‘-m’ option to be passed through to the [4mmta[34m[24m[]8;;#482\482]8;;\][0m; + though most of the modern MTAs no longer document this flag, no + MTA is known which does not support it (for historical compati‐ + bility). + + [4mmime-allow-text-controls[24m]8;:id=476;#\]8;;\ + (Boolean) When sending messages, each part of the message is + MIME-inspected in order to classify the ‘Content-Type:’ and + ‘Content-Transfer-Encoding:’ (see [4mmime-encoding[34m[24m[]8;;#479\479]8;;\][0m) that is + required to send this part over mail transport, i.e., a compu‐ + tation rather similar to what the file(1)[34m[]8;:id=740;man:file(1)\740]8;;\] [0mcommand produces + when used with the ‘--mime’ option. + + This classification however treats text files which are encoded + in UTF-16 (seen for HTML files) and similar character sets as + binary octet-streams, forcefully changing any ‘text/plain’ or + ‘text/html’ specification to ‘application/octet-stream’: If + that actually happens a yet unset charset MIME parameter is set + to ‘binary’, effectively making it impossible for the receiving + MUA to automatically interpret the contents of the part. + + If this variable is set, and the data was unambiguously identi‐ + fied as text data at first glance (by a ‘.txt’ or ‘.html’ file + extension), then the original ‘Content-Type:’ will not be over‐ + written. + + [4mmime-alternative-favour-rich[24m]8;:id=477;#\]8;;\ + (Boolean) If this variable is set then rich MIME alternative + parts (e.g., HTML) will be preferred in favour of included + plain text versions when displaying messages, provided that a + handler exists which produces output that can be (re)integrated + into S-nail’s normal visual display. + + [4mmime-counter-evidence[24m]8;:id=478;#\]8;;\ + Normally the ‘Content-Type:’ field is used to decide how to + handle MIME parts. Some MUAs, however, do not use [4mThe[0m + [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\] [0m(also see [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[0m + [4mattachments[34m[24m[]8;;#10\10]8;;\][0m) or a similar mechanism to correctly classify + content, but specify an unspecific MIME type + (‘application/octet-stream’) even for plain text attachments. + If this variable is set then S-nail will try to re-classify + such MIME message parts, if possible, for example via a possi‐ + bly existing attachment filename. A non-empty value may also + be given, in which case a number is expected, actually a car‐ + rier of bits, best specified as a binary value, like + ‘mime-counter-evidence=0b1110’. + + [1m• [22mIf bit two is set (counting from 1, decimal 2) then the de‐ + tected [1mmimetype[34m[22m[]8;;#227\227]8;;\] [0mwill be carried along with the message + and be used for deciding which MIME handler is to be used, + for example; when displaying such a MIME part the part-info + will indicate the overridden content-type by showing a plus + sign ‘+’. + [1m• [22mIf bit three is set (decimal 4) then the counter-evidence + is always produced and a positive result will be used as + the MIME type, even forcefully overriding the parts given + MIME type. + [1m• [22mIf bit four is set (decimal 8) as a last resort the actual + content of ‘application/octet-stream’ parts will be in‐ + spected, so that data which looks like plain text can be + treated as such. This mode is even more relaxed when data + is to be displayed to the user or used as a message quote + (data consumers which mangle data for display purposes, + which includes masking of control characters, for example). + + [4mmime-encoding[24m]8;:id=479;#\]8;;\ + The MIME ‘Content-Transfer-Encoding’ to use in outgoing text + messages and message parts, where applicable (7-bit clean text + messages are without an encoding if possible): + + ‘8bit’ (Or ‘8b’.) 8-bit transport effectively causes the + raw data be passed through unchanged, but may cause + problems when transferring mail messages over chan‐ + nels that are not ESMTP (RFC 1869) compliant. Also, + several input data constructs are not allowed by the + specifications and may cause a different transfer-en‐ + coding to be used. By established rules and popular + demand occurrences of ‘ˆFrom_’ (see + [4mmbox-rfc4155[34m[24m[]8;;#470\470]8;;\][0m) will be MBOXO quoted (prefixed + with greater-than sign ‘>’) instead of causing a non- + destructive encoding like ‘quoted-printable’ to be + chosen, unless context (like message signing) re‐ + quires otherwise. + ‘quoted-printable’ + (Or ‘qp’.) Quoted-printable encoding is 7-bit clean + and has the property that ASCII characters are passed + through unchanged, so that an english message can be + read as-is; it is also acceptable for other single- + byte locales that share many characters with ASCII, + for example ISO-8859-1. The encoding will cause a + large overhead for messages in other character sets: + for example it will require up to twelve (12) bytes + to encode a single UTF-8 character of four (4) bytes. + It is the default encoding. + ‘base64’ (Or ‘b64’.) This encoding is 7-bit clean and will + always be used for binary data. This encoding has a + constant input:output ratio of 3:4, regardless of the + character set of the input data it will encode three + bytes of input to four bytes of output. This trans‐ + fer-encoding is not human readable without performing + a decoding step. + + [4mmime-force-sendout[24m]8;:id=480;#\]8;;\ + (Boolean)[Option] Whenever it is not acceptable to fail sending + out messages because of non-convertible character content this + variable may be set. It will, as a last resort, classify the + part content as ‘application/octet-stream’. Refer to the sec‐ + tion [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\] [0mfor the complete picture of character + set conversion, and [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\] [0mfor how + to internally or externally handle part content. + + [4mmimetypes-load-control[24m]8;:id=481;#\]8;;\ + Can be used to control which of [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\] [0mare + loaded: if the letter ‘u’ is part of the option value, then the + user’s personal [4m˜/.mime.types[34m[24m[]8;;#654\654]8;;\] [0mfile will be loaded (if it + exists); likewise the letter ‘s’ controls loading of the sys‐ + tem-wide [4m/etc/mime.types[34m[24m[]8;;#655\655]8;;\][0m; directives found in the user + file take precedence, letter matching is case-insensitive. If + this variable is not set S-nail will try to load both files. + Incorporation of the S-nail-built-in MIME types cannot be sup‐ + pressed, but they will be matched last (the order can be listed + via [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m). + + More sources can be specified by using a different syntax: if + the value string contains an equals sign ‘=’ then it is instead + parsed as a comma-separated list of the described letters plus + ‘f=FILENAME’ pairs; the given filenames will be expanded and + loaded, and their content may use the extended syntax that is + described in the section [4mThe[24m [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m. Directives + found in such files always take precedence (are prepended to + the MIME type cache). + + [4mmta[24m]8;:id=482;#\]8;;\ Select an alternate Message-Transfer-Agent by either specifying + the full pathname of an executable (a ‘file://’ prefix may be + given), or [Option]ally a SMTP aka SUBMISSION protocol URL: + + submissions://[user[:password]@]server[:port] + + The default has been chosen at compile time. MTA data trans‐ + fers are always performed in asynchronous child processes, and + without supervision unless either the [4msendwait[34m[24m[]8;;#552\552]8;;\] [0mor the + [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mvariable is set. Also see [4mmta-bcc-ok[34m[24m[]8;;#488\488]8;;\][0m. [Op‐ + tion]ally expansion of aliases(5)[34m[]8;:id=741;man:aliases(5)\741]8;;\] [0mcan be performed by set‐ + ting [4mmta-aliases[34m[24m[]8;;#483\483]8;;\][0m. + + For testing purposes there is the ‘test’ pseudo-MTA, which + dumps to standard output or optionally to a file, and honours + [4mmbox-fcc-and-pcc[34m[24m[]8;;#469\469]8;;\][0m: + + $ echo text | s-nail -:/ -Smta=test -s ubject ex@am.ple + $ </dev/null s-nail -:/ -Smta=test://./xy ex@am.ple + + For a file-based MTA it may be necessary to set [4mmta-argv0[34m[24m[]8;;#487\487]8;;\][0m + in in order to choose the right target of a modern + mailwrapper(8)[34m[]8;:id=742;man:mailwrapper(8)\742]8;;\] [0menvironment. It will be passed command + line arguments from several possible sources: from the variable + [4mmta-arguments[34m[24m[]8;;#484\484]8;;\] [0mif set, from the command line if given and + the variable [4mexpandargv[34m[24m[]8;;#424\424]8;;\] [0mallows their use. Argument pro‐ + cessing of the MTA will be terminated with a [1m-- [22mseparator. + + The otherwise occurring implicit usage of the following MTA + command line arguments can be disabled by setting the boolean + variable [4mmta-no-default-arguments[34m[24m[]8;;#485\485]8;;\] [0m(which will also disable + passing [1m-- [22mto the MTA): [1m-i [22m(for not treating a line with only a + dot ‘.’ character as the end of input), [1m-m [22m(shall the variable + [4mmetoo[34m[24m[]8;;#475\475]8;;\] [0mbe set) and [1m-v [22m(if the [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mvariable is + set); in conjunction with the [1m-r[34m[22m[]8;;#79\79]8;;\] [0mcommand line option or + [4mr-option-implicit[34m[24m[]8;;#535\535]8;;\] [0m[1m-f [22mas well as possibly [1m-F [22mwill (not) be + passed. + + [Option]ally S-nail can send mail over SMTP aka SUBMISSION net‐ + work connections to a single defined smart host by setting this + variable to a corresponding URL (see [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[0m + [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m). Server interaction (TLS, authentica‐ + tion type, etc.) is configurable via [4msmtp-config[34m[24m[]8;;#573\573]8;;\][0m. An + overview on TLS and links to more information can be found un‐ + der [4mEncrypted[24m [4mnetwork[24m [4mcommunication[34m[24m[]8;;#19\19]8;;\][0m. Note that with some + mail providers it may be necessary to set the [4msmtp-from[34m[24m[]8;;#574\574]8;;\][0m + variable in order to use a specific combination of [4mfrom[34m[24m[]8;;#436\436]8;;\][0m, + [4mhostname[34m[24m[]8;;#447\447]8;;\] [0mand [4mmta[34m[24m[]8;;#482\482]8;;\][0m. Network communication socket time‐ + outs are configurable via [4msocket-connect-timeout[34m[24m[]8;;#577\577]8;;\][0m. All + generated network traffic may be proxied over a SOCKS + [4msocks-proxy[34m[24m[]8;;#578\578]8;;\][0m, it can be logged by setting [4mverbose[34m[24m[]8;;#616\616]8;;\][0m + twice. The following SMTP variants may be used: + + [1m• [22mThe plain SMTP protocol (RFC 5321) that normally lives on + the server port 25, which will [Option]ally be upgraded to + a TLS encrypted session unless disallowed by + [4msmtp-config[34m[24m[]8;;#573\573]8;;\][0m. Assign a value like + ‘smtp://[user[:password]@]server[:port]’ to choose this + protocol. + + [1m• [22m[Option] The so-called SMTPS which is supposed to live on + server port 465 and is automatically TLS secured. Unfortu‐ + nately it never became a standardized protocol and may thus + not be supported by your hosts network service database – + in fact the port number has already been reassigned to + other protocols! + + SMTPS is nonetheless a commonly offered protocol and thus + can be chosen by assigning a value like + ‘smtps://[user[:password]@]server[:port]’; due to the men‐ + tioned problems it is usually necessary to explicitly spec‐ + ify the port as ‘:465’, however. + + [1m• [22mThe SUBMISSION protocol (RFC 6409) lives on server port 587 + and shares the semantics with SMTP from S-nail’s point of + view: ‘submission://[user[:password]@]server[:port]’. + + [1m• [22m[Option] The SUBMISSIONS protocol (RFC 8314) that lives on + server port 465 and is TLS secured by default. It can be + chosen by assigning a value like + ‘submissions://[user[:password]@]server[:port]’. Due to + the problems mentioned for SMTPS above and the fact that + SUBMISSIONS is new and a successor that lives on the same + port as the historical engineering mismanagement named + SMTPS, it is usually necessary to explicitly specify the + port as ‘:465’. + + [4mmta-aliases[24m]8;:id=483;#\]8;;\ + [Option] If set to a path pointing to a text file in valid MTA + (Postfix) aliases(5)[34m[]8;:id=743;man:aliases(5)\743]8;;\] [0mformat, the file is loaded and cached + (manageable with [1mmtaaliases[34m[22m[]8;;#238\238]8;;\][0m), and henceforth plain ‘name’ + (see [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m) message recipient names are recursively + expanded as a last expansion step, after the distribution lists + which can be created with [1malias[34m[22m[]8;;#147\147]8;;\][0m. Constraints on + aliases(5)[34m[]8;:id=744;man:aliases(5)\744]8;;\] [0mcontent support: only local addresses (names) + which are valid usernames (‘[a-z_][a-z0-9_-]*[$]?’) are treated + as expandable aliases, and [v15 behaviour may differ] + ‘:include:/file/name’ directives are not supported. By includ‐ + ing ‘-name’ in [4mexpandaddr[34m[24m[]8;;#422\422]8;;\] [0mit can be asserted that only ex‐ + panded names (mail addresses) are passed through to the MTA. + + [4mmta-arguments[24m]8;:id=484;#\]8;;\ + Arguments to pass through to a file-based [4mmta[34m[24m[]8;;#482\482]8;;\][0m, parsed ac‐ + cording to [4mShell-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0minto an array of + arguments which will be joined onto MTA options from other + sources, for example ‘? set mta-arguments=’-t -X "/tmp/my + log"’’. + + [4mmta-no-default-arguments[24m]8;:id=485;#\]8;;\ + (Boolean) Avoids passing standard command line options to a + file-based [4mmta[34m[24m[]8;;#482\482]8;;\] [0m(see there). + + [4mmta-no-recipient-arguments[24m]8;:id=486;#\]8;;\ + (Boolean) By default all recipient addresses will be passed as + command line options to a file-based [4mmta[34m[24m[]8;;#482\482]8;;\][0m. Setting this + variable disables this behaviour to aid those MTAs which employ + special treatment of such arguments. Doing so can make it nec‐ + essary to pass a [1m-t [22mvia [4mmta-arguments[34m[24m[]8;;#484\484]8;;\][0m, to testify the MTA + that it should use the passed message as a template. + + [4mmta-argv0[24m]8;:id=487;#\]8;;\ + Many systems use a so-called mailwrapper(8)[34m[]8;:id=745;man:mailwrapper(8)\745]8;;\] [0menvironment to + ensure compatibility with sendmail(1)[34m[]8;:id=746;man:sendmail(1)\746]8;;\][0m. This works by in‐ + specting the name that was used to invoke the mail delivery + system. If this variable is set then the mailwrapper (the pro‐ + gram that is actually executed when calling the file-based + [4mmta[34m[24m[]8;;#482\482]8;;\][0m) will treat its contents as that name. + + [4mmta-bcc-ok[24m]8;:id=488;#\]8;;\ + (Boolean) In violation of RFC 5322 some MTAs do not remove + ‘Bcc:’ header lines from transported messages after having + noted the respective recipients for addressing purposes. (The + MTAs Exim and Courier for example require the command line op‐ + tion [1m-t [22mto enforce removal.) Unless this is set corresponding + recipients are addressed by protocol-specific means or MTA com‐ + mand line options only, the header itself is stripped before + being sent over the wire. + + [4mnetrc-lookup-USER@HOST[24m, [4mnetrc-lookup-HOST[24m, [4mnetrc-lookup[24m]8;:id=489;#\]8;;\ + (Boolean)[Option] Used to control usage of the user’s + [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0mfile for lookup of account credentials, as docu‐ + mented in the section [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m + and for the command [1mnetrc[34m[22m[]8;;#239\239]8;;\][0m; the section [4mThe[24m [4m.netrc[24m [4mfile[34m[24m[]8;;#39\39]8;;\][0m + documents the file format. Also see [4mnetrc-pipe[34m[24m[]8;;#490\490]8;;\][0m. + + [4mnetrc-pipe[24m]8;:id=490;#\]8;;\ + [Option] When [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0mis loaded (see [1mnetrc[34m[22m[]8;;#239\239]8;;\] [0mand + [4mnetrc-lookup[34m[24m[]8;;#489\489]8;;\][0m) then S-nail will read the output of a shell + pipe instead of the user’s [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0mfile if this variable + is set (to the desired shell command). This can be used to, + for example, store [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0min encrypted form: ‘? set + netrc-pipe=’gpg -qd ˜/.netrc.pgp’’. + + [4mnewfolders[24m]8;:id=491;#\]8;;\ + [Option] If this variable has the value ‘maildir’, newly cre‐ + ated local folders will be in Maildir instead of MBOX format. + + [4mnewmail[24m]8;:id=492;#\]8;;\ Checks for new mail in the current folder each time the prompt + is shown. A Maildir folder must be re-scanned to determine if + new mail has arrived. If this variable is set to the special + value ‘nopoll’ then a Maildir folder will not be rescanned com‐ + pletely, but only timestamp changes are detected. Maildir + folders are [Option]al. + + [4moutfolder[24m]8;:id=493;#\]8;;\ + (Boolean) Causes a non-absolute filename specified in + [4mrecord[34m[24m[]8;;#537\537]8;;\][0m, as well as the sender-based filenames of the + [1mCopy[34m[22m[]8;;#168\168]8;;\][0m, [1mSave[34m[22m[]8;;#267\267]8;;\][0m, [1mFollowup[34m[22m[]8;;#206\206]8;;\] [0mand [1mfollowup[34m[22m[]8;;#207\207]8;;\] [0mcommands + to be interpreted relative to the [4mfolder[34m[24m[]8;;#427\427]8;;\] [0mdirectory rather + than relative to the current directory. + + [4mon-account-cleanup-ACCOUNT[24m, [4mon-account-cleanup[24m]8;:id=494;#\]8;;\ + Macro hook which will be called once an [1maccount[34m[22m[]8;;#144\144]8;;\] [0mis left, + as the very last step before unrolling the per-account scope + [1mlocal[34m[22m[]8;;#130\130]8;;\][0m. This hook is run even in case of fatal errors, in‐ + cluding those generated by switching to the account as such, + and it is advisable to perform only absolutely necessary ac‐ + tions, like cleaning up [1malternates[34m[22m[]8;;#149\149]8;;\][0m, for example. The spe‐ + cialized form is used in favour of the generic one if found. + + [4mon-compose-cleanup[24m]8;:id=495;#\]8;;\ + Macro hook which will be called after the message has been sent + (or not, in case of failures), as the very last step before un‐ + rolling compose mode [1mlocal [22mscope. This hook is run even in + case of fatal errors, and it is advisable to perform only ab‐ + solutely necessary actions, like cleaning up [1malternates[34m[22m[]8;;#149\149]8;;\][0m, + for example. + + For compose mode hooks that may affect the message content see + [4mon-compose-enter[34m[24m[]8;;#496\496]8;;\][0m, [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\][0m, + [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m. [v15 behaviour may differ] This hook + exists because [1malias[34m[22m[]8;;#147\147]8;;\][0m, [1malternates[34m[22m[]8;;#149\149]8;;\][0m, [1mcommandalias[34m[22m[]8;;#166\166]8;;\][0m, + [1mshortcut[34m[22m[]8;;#276\276]8;;\][0m, to name a few, are not yet covered by + [1mlocal[34m[22m[]8;;#130\130]8;;\][0m: changes applied in compose mode will continue to be + in effect thereafter. + + [4mon-compose-enter[24m]8;:id=496;#\]8;;\, [4mon-compose-leave[24m]8;:id=497;#\]8;;\ + Macro hooks which will be called once compose mode is entered, + and after composing has been finished, respectively; the exact + order of the steps taken is documented for [1m˜.[34m[22m[]8;;#315\315]8;;\][0m, one of the + [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. Context about the message being worked on + can be queried via [1mdigmsg[34m[22m[]8;;#178\178]8;;\][0m. [4mon-compose-cleanup[34m[24m[]8;;#495\495]8;;\] [0mcan be + used to perform other necessary cleanup steps. + + Here is an example that injects a signature (also see + [4mSign[34m[24m[]8;;#556\556]8;;\][0m, [4msign[34m[24m[]8;;#557\557]8;;\] [0mas well as [1m˜A[34m[22m[]8;;#323\323]8;;\][0m, [1m˜a[34m[22m[]8;;#324\324]8;;\][0m) via + [4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\][0m; instead using [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m + to simply inject the file of desire via [1m˜<[34m[22m[]8;;#317\317]8;;\] [0mor [1m˜<![34m[22m[]8;;#318\318]8;;\] [0mmay + be a better approach. + + define t_ocl { + vput ! i cat ˜/.mysig + if $? -eq 0 + vput csop message-inject-tail trim-end $i + end + + # Alternatively + readctl create ˜/.mysig + if $? -eq 0 + readall i + if $? -eq 0 + vput csop message-inject-tail trim-end $i + end + readctl remove ˜/.mysig + end + } + set on-compose-leave=t_ocl + + [4mon-compose-splice[24m]8;:id=498;#\]8;;\, [4mon-compose-splice-shell[24m]8;:id=499;#\]8;;\ + These hooks run after compose mode is finished, but before + [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\][0m. Both are executed in a subprocess, with + their input and output connected such that they can act like an + interactive user: S-nail’s output they [1mread[34m[22m[]8;;#253\253]8;;\][0m, input for + S-nail they can [1mecho[34m[22m[]8;;#185\185]8;;\][0m. Whereas the latter is a SHELL[34m[]8;;#643\643]8;;\][0m + command, the former is a [1mdefine[34m[22m[]8;;#174\174]8;;\][0md macro that is evaluated + in a restricted mode with only a small set of commands avail‐ + able (the [4mverbose[34m[24m[]8;;#616\616]8;;\] [0moutput of for example [1mlist[34m[22m[]8;;#220\220]8;;\] [0mindi‐ + cates the ‘subprocess’ capability). + + In the subprocess (a restricted set of) [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m + will always be available. For guaranteed reproducibilities’ + sake [4mescape[34m[24m[]8;;#421\421]8;;\] [0mand [4mifs[34m[24m[]8;;#449\449]8;;\] [0mare set to their defaults. The + escape [1m˜ˆ[34m[22m[]8;;#322\322]8;;\] [0mhas been especially designed for scriptability: + the first line these hooks will read on standard input is the + escape’s protocol version (“0 0 2”), backward incompatible pro‐ + tocol changes have to be expected. + + Care must be taken to avoid deadlocks and other false control + flow: if subprocess and S-nail both wait for more input, or if + one does not expect more input, whereas the other waits for + consumption of its output. Hooks are not automatically syn‐ + chronized: if a hook emits ‘˜x’ to cause S-nail to exit compose + mode, the subprocess will keep running nonetheless until the + macro is completely worked or [1mxit[34m[22m[]8;;#311\311]8;;\] [0mis called explicitly. + They will however receive a termination signal if the parent + enters an error condition. [v15 behaviour may differ] Protec‐ + tion against and interaction with signals is not yet given; it + is likely that in the future these scripts will be placed in an + isolated session, which is signalled in its entirety as neces‐ + sary. + + define ocs_signature { + read proto_version + echo ’˜< ˜/.mysig’ # ’˜<! fortune pathtofortunefile’ + } + set on-compose-splice=ocs_signature + + set on-compose-splice-shell=$’\ + read proto_version;\ + printf "hello $version! Headers: ";\ + echo \’˜ˆheader list\’;\ + read status result;\ + echo "status=$status result=$result";\ + ’ + + define ocsm { + read proto_version + echo Splice protocol version is $proto_version + echo ’˜ˆh l’; read hl; vput csop es subs "${hl}" 0 1 + if "$es" != 2 + echoerr ’Cannot read header list’; echo ’˜x’; xit + endif + if "$hl" !%?case ’ cc’ + echo ’˜ˆh i cc "Diet is your <mirr.or>"’; read es;\ + vput csop es substring "${es}" 0 1 + if "$es" != 2 + echoerr ’Cannot insert Cc: header’; echo ’˜x’ + # (no xit, macro finishes anyway) + endif + endif + } + set on-compose-splice=ocsm + + [4mon-history-addition[24m]8;:id=500;#\]8;;\ + This hook will be called if an entry is about to be added to + the [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mof the [4mMLE[34m[24m[]8;;#93\93]8;;\][0m, as documented in [4mOn[24m [4mterminal[0m + [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m. It will be called with three ar‐ + guments: the first is the name of the input context (see + [1mbind[34m[22m[]8;;#153\153]8;;\][0m), the second is either an empty string or the match‐ + ing [4mhistory-gabby[34m[24m[]8;;#443\443]8;;\] [0mtype, and the third being the complete + command line to be added. The entry will not be added to his‐ + tory if the hook uses a non-0 [1mreturn[34m[22m[]8;;#266\266]8;;\][0m. [v15 behaviour may + differ] A future version will give the expanded command name as + the third argument, followed by the tokenized command line as + parsed in the remaining arguments, the first of which is the + original unexpanded command name; i.e., one may do ‘[1mshift[34m[22m[]8;;#278\278]8;;\][0m + 4’ and will then be able to access the positional parameters as + usual via [4m*[34m[24m[]8;;#361\361]8;;\][0m, [4m#[34m[24m[]8;;#363\363]8;;\][0m, [4m1[34m[24m[]8;;#365\365]8;;\] [0metc. + + [4mon-mailbox-open-FOLDER[24m, [4mon-mailbox-open[24m]8;:id=501;#\]8;;\, [4mon-mailbox-newmail-FOLDER[24m, + [4mon-mailbox-newmail[24m]8;:id=502;#\]8;;\ + Macros which are evaluated when a [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mis opened or a + successful [1mnewmail[34m[22m[]8;;#240\240]8;;\] [0mcheck is performed, respectively. + [1mlocal[34m[22m[]8;;#130\130]8;;\] [0mscoping is activated by default, causing the covered + settings to be reverted no sooner but when [4mfolder-resolved[34m[24m[]8;;#428\428]8;;\][0m + is left again. The specialization is matched against the fully + expanded name, without metacharacters; however, if ‘FOLDER’ re‐ + sides under [4mfolder[34m[24m[]8;;#427\427]8;;\] [0mthe usual ‘+’ ([4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m) is also tried: for example, if [4mfolder[24m is + “mail” (therefore relative to HOME[34m[]8;;#627\627]8;;\][0m) then + [4m/home/usr1/mail/sent[24m will be tried as + ‘on-mailbox-open-/home/usr1/mail/sent’ first, followed by + ‘on-mailbox-open-+sent’ (and lastly ‘on-mailbox-open’). + + [4mon-main-loop-tick[24m]8;:id=503;#\]8;;\ + This hook will be called each time before the main event loop + will read an input line. Note variable and other changes it + performs are not scoped as via [1mlocal[34m[22m[]8;;#130\130]8;;\][0m! The main event loop + never ticks in (Send mode), [4mon-compose-enter[34m[24m[]8;;#496\496]8;;\] [0mcan be used + instead. + + [4mon-program-exit[24m]8;:id=504;#\]8;;\ + This hook will be called when the program exits, whether via + [1mexit[34m[22m[]8;;#195\195]8;;\] [0mor [1mquit[34m[22m[]8;;#252\252]8;;\][0m, or because the send mode is done. + [1mNote: [22mthis runs late and so terminal settings etc. are already + teared down. + + [4mon-resend-cleanup[24m]8;:id=505;#\]8;;\ + [v15 behaviour may differ] Identical to + [4mon-compose-cleanup[34m[24m[]8;;#495\495]8;;\][0m, but is only triggered by [1mresend[34m[22m[]8;;#264\264]8;;\][0m. + + [4mon-resend-enter[24m]8;:id=506;#\]8;;\ + [v15 behaviour may differ] Identical to [4mon-compose-enter[34m[24m[]8;;#496\496]8;;\][0m, + but is only triggered by [1mresend[34m[22m[]8;;#264\264]8;;\][0m; currently there is no + [1mdigmsg[34m[22m[]8;;#178\178]8;;\] [0msupport, for example. + + [4mpage[24m]8;:id=507;#\]8;;\ (Boolean) If set, each message feed through the command given + for [1mpipe[34m[22m[]8;;#248\248]8;;\] [0mis followed by a formfeed character ‘\f’. + + [4mpassword-USER@HOST[24m, [4mpassword-HOST[24m, [4mpassword[24m]8;:id=508;#\]8;;\ + Variable chain that sets a password, which is used in case none + has been given in the protocol and account-specific URL; as a + last resort S-nail will ask for a password on the user’s termi‐ + nal if the authentication method requires a password. Specify‐ + ing passwords in a startup file is generally a security risk; + the file should be readable by the invoking user only. + + [4mpiperaw[24m]8;:id=509;#\]8;;\ (Boolean) Send messages to the [1mpipe[34m[22m[]8;;#248\248]8;;\] [0mcommand without per‐ + forming MIME and character set conversions. + + [4mpipe-EXTENSION[24m]8;:id=510;#\]8;;\ + Identical to [4mpipe-TYPE/SUBTYPE[34m[24m[]8;;#511\511]8;;\] [0mexcept that ‘EXTENSION’ + (normalized to lowercase using character mappings of the ASCII + charset) denotes a file extension, for example ‘xhtml’. Han‐ + dlers registered using this method take precedence. + + [4mpipe-TYPE/SUBTYPE[24m]8;:id=511;#\]8;;\ + Whenever a ‘TYPE/SUBTYPE’ (case-insensitive, normalized to low‐ + ercase using character mappings of the ASCII charset) MIME mes‐ + sage part is displayed or quoted, its data is filtered through + the given value interpreted as a shell command. Unless noted + only [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\] [0mparts (see [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\][0m) are + covered, other parts are solely considered by [1mmimeview[34m[22m[]8;;#229\229]8;;\][0m. + + The value question mark ‘?’ forces plain text interpretation of + the part, for example ‘set pipe-application/xml=?’. + ([1mmimetype[34m[22m[]8;;#227\227]8;;\] [0mtype-markers achieve the same.) [Option]ally + MIME type handlers may be defined via [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\][0m. + It is indeed also a trigger character to indicate the following + flags: + + ? set pipe-X/Y=’?!++=? vim ${MAILX_FILENAME_TEMPORARY}’ + + ‘*’ The command’s output is reintegratable: + [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\][0m. This is implied when using a + plain ‘’. + ‘#’ Only use this handler for display, not for quoting a + message: [1mx-mailx-noquote[34m[22m[]8;;#664\664]8;;\][0m. + ‘&’ Run the command asynchronously, do not wait for the + handler to exit: [1mx-mailx-async[34m[22m[]8;;#663\663]8;;\][0m. The standard + output of the command will go to [4m/dev/null[34m[24m[]8;;#657\657]8;;\][0m. + ‘!’ The command must be run on an interactive terminal, + the terminal will temporarily be released for it to + run: [1mneedsterminal[34m[22m[]8;;#662\662]8;;\][0m. + ‘+’ Request creation of a zero-sized temporary file, the + absolute pathname of which will be made accessible + via the environment variable + MAILX_FILENAME_TEMPORARY[34m[]8;;#517\517]8;;\][0m: [1mx-mailx-tmpfile[34m[22m[]8;;#666\666]8;;\][0m. + If given twice the file will be unlinked automati‐ + cally: [1mx-mailx-tmpfile-unlink[34m[22m[]8;;#668\668]8;;\][0m; it is an error to + use automatic deletion in conjunction with + [1mx-mailx-async[34m[22m[]8;;#663\663]8;;\][0m. + ‘=’ by default part content is passed to the handler via + standard input; if set data is written into + MAILX_FILENAME_TEMPORARY[34m[]8;;#517\517]8;;\][0m + ([1mx-mailx-tmpfile-fill[34m[22m[]8;;#667\667]8;;\][0m) instead, the creation of + which is implied. Automatic deletion still requires + two plus signs ‘++’! + ‘t’ Plain text display type-marker (for type-markers: [4mThe[0m + [4mmime.types[24m [4mfiles[34m[24m[]8;;#37\37]8;;\][0m). Implies [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\][0m. + ‘h’ [Option] HTML type-marker: display via built-in HTML- + to-text filter. Implies [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\][0m. + ‘?’ To avoid ambiguities a second question mark can be + used to forcefully terminate interpretation of the + remaining characters as flags. (Any character not in + this list will have the same effect.) + + Some information about the MIME part to be displayed is embed‐ + ded into the environment of the shell command: + + MAILX_CONTENT]8;:id=512;#\]8;;\ The MIME content-type of the part, if + known, the empty string otherwise. + MAILX_CONTENT_EVIDENCE]8;:id=513;#\]8;;\ The detected MIME content-type if the + carry-around-bit (2) is set in + [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m, identical + to MAILX_CONTENT otherwise. + MAILX_EXTERNAL_BODY_URL]8;:id=514;#\]8;;\ MIME parts of type + ‘message/external-body + access-type=url’ will store the access + URL in this variable, it is empty oth‐ + erwise. URL targets should not be ac‐ + tivated automatically, without super‐ + vision. + MAILX_FILENAME]8;:id=515;#\]8;;\ The filename, if any is set, the empty + string otherwise. + MAILX_FILENAME_GENERATED]8;:id=516;#\]8;;\ + A random string. + MAILX_FILENAME_TEMPORARY]8;:id=517;#\]8;;\ + If temporary file creation was re‐ + quested it will contain the absolute + pathname of the temporary file. + + [4mpop3-auth-USER@HOST[24m, [4mpop3-auth-HOST[24m, [4mpop3-auth[24m]8;:id=518;#\]8;;\ + [Option] Variable chain that sets the POP3 authentication + method. Supported are the default ‘plain’, ‘oauthbearer’ (see + [4mFAQ[34m[24m[]8;;#43\43]8;;\] [0mentry [4mBut,[24m [4mhow[24m [4mabout[24m [4mXOAUTH2[24m [4m/[24m [4mOAUTHBEARER?[34m[24m[]8;;#46\46]8;;\][0m), as + well as ‘external’ and ‘externanon’ for TLS secured connections + which pass a client certificate via [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m. + There may be the [Option]al method ‘gssapi’. ‘externanon’ does + not need any user credentials, ‘external’ and ‘gssapi’ need a + [4muser[34m[24m[]8;;#614\614]8;;\][0m, the remains also require a [4mpassword[34m[24m[]8;;#508\508]8;;\][0m. Unless + [4mpop3-no-apop[34m[24m[]8;;#521\521]8;;\] [0mis set the ‘plain’ method will [Option]ally + be replaced with APOP if possible (see there). + + [4mpop3-bulk-load-USER@HOST[24m, [4mpop3-bulk-load-HOST[24m, [4mpop3-bulk-load[24m]8;:id=519;#\]8;;\ + (Boolean)[Option] When accessing a POP3 server S-nail loads the + headers of the messages, and only requests the message bodies + on user request. For the POP3 protocol this means that the + message headers will be downloaded twice. If this variable is + set then S-nail will download only complete messages from the + given POP3 server(s) instead. + + [4mpop3-keepalive-USER@HOST[24m, [4mpop3-keepalive-HOST[24m, [4mpop3-keepalive[24m]8;:id=520;#\]8;;\ + [Option] POP3 servers close the connection after a period of + inactivity; the standard requires this to be at least 10 min‐ + utes, but practical experience may vary. Setting this variable + to a numeric value greater than ‘0’ causes a ‘NOOP’ command to + be sent each value seconds if no other operation is performed. + + [4mpop3-no-apop-USER@HOST[24m, [4mpop3-no-apop-HOST[24m, [4mpop3-no-apop[24m]8;:id=521;#\]8;;\ + (Boolean)[Option] Unless this variable is set the MD5 based + ‘APOP’ authentication method will be used instead of a chosen + ‘plain’ [4mpop3-auth[34m[24m[]8;;#518\518]8;;\] [0mwhen connecting to a POP3 server that + advertises support. The advantage of ‘APOP’ is that only a + single packet is sent for the user/password tuple. (Originally + also that the password is not sent in clear text over the wire, + but for one MD5 does not any longer offer sufficient security, + and then today transport is almost ever TLS secured.) + + [4mpop3-use-starttls-USER@HOST[24m, [4mpop3-use-starttls-HOST[24m, [4mpop3-use-starttls[24m]8;:id=522;#\]8;;\ + (Boolean)[Option] Causes S-nail to issue a ‘STLS’ command to + make an unencrypted POP3 session TLS encrypted. This function‐ + ality is not supported by all servers. Directly using en‐ + crypted communication channels should be preferred. + + [4mposix[24m]8;:id=523;#\]8;;\ (Boolean) This flag enables POSIX mode, which changes behaviour + of S-nail where that deviates from standardized behaviour. It + is automatically squared with the environment variable + POSIXLY_CORRECT[34m[]8;;#642\642]8;;\][0m, changing the one will adjust the other. + The following behaviour is covered and enforced by this mecha‐ + nism: + + [1m• [22mIn non-interactive mode, any error encountered while load‐ + ing resource files during program startup will cause a pro‐ + gram exit, whereas in interactive mode such errors will + stop loading of the currently loaded (stack of) file(s, + i.e., recursively). These exits can be circumvented on a + per-command base by using [1mignerr[34m[22m[]8;;#129\129]8;;\][0m, one of the [4mCommand[0m + [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m, for each command which shall be allowed to + fail. + [1m• alternates[34m[22m[]8;;#149\149]8;;\] [0mwill replace the list of alternate ad‐ + dresses instead of appending to it. In addition alternates + will only be honoured for any sort of message [1mreply[34m[22m[]8;;#261\261]8;;\][0m, + and for aliases. + [1m• [22mThe variable inserting [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0m[1m˜A[34m[22m[]8;;#323\323]8;;\][0m, + [1m˜a[34m[22m[]8;;#324\324]8;;\][0m, [1m˜I[34m[22m[]8;;#333\333]8;;\] [0mand [1m˜i[34m[22m[]8;;#334\334]8;;\] [0mwill expand embedded character + sequences ‘\t’ horizontal tabulator and ‘\n’ line feed. + [v15 behaviour may differ] For compatibility reasons this + step will always be performed. + [1m• [22mReading in messages via [1m˜f[34m[22m[]8;;#330\330]8;;\] [0m([4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m) will + use the ‘type’ not the ‘forward’ [1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0mselection. + [1m• [22mUpon changing the active [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mno summary of + [1mheaders[34m[22m[]8;;#214\214]8;;\] [0mwill be displayed even if [4mheader[34m[24m[]8;;#438\438]8;;\] [0mis set. + [1m• [22mSetting [4mignoreeof[34m[24m[]8;;#452\452]8;;\] [0mimplies the behaviour described by + [4mdot[34m[24m[]8;;#414\414]8;;\][0m. + [1m• [22mThe variable [4mkeep[34m[24m[]8;;#455\455]8;;\] [0mis extended to cover any empty mail‐ + box, not only empty [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\][0mes: they + will be removed when they are left in empty state other‐ + wise. + [1m• [22mThe exit [4m?[34m[24m[]8;;#350\350]8;;\] [0m(and error [4m![34m[24m[]8;;#351\351]8;;\][0m) status of each command + replaces that of the former, the last becomes the exit sta‐ + tus of the program itself. In POSIX mode the program exit + status will instead have bit 2 (value 4) set unless all + sent messages were successfully sent out to the [4mmta[34m[24m[]8;;#482\482]8;;\][0m; + also see [4msendwait[34m[24m[]8;;#552\552]8;;\][0m. + + [4mprint-alternatives[24m]8;:id=524;#\]8;;\ + (Boolean) When a MIME message part of type + ‘multipart/alternative’ is displayed and it contains a subpart + of type ‘text/plain’, other parts are normally discarded. Set‐ + ting this variable causes all subparts to be displayed, just as + if the surrounding part was of type ‘multipart/mixed’. + + [4mprompt[24m]8;:id=525;#\]8;;\ The string used as a prompt in interactive mode. Whenever the + variable is evaluated the value is treated as if specified + within dollar-single-quotes (see [4mShell-style[24m [4margument[0m + [4mquoting[34m[24m[]8;;#24\24]8;;\][0m). This (post-assignment, i.e., second) expansion + can be used to embed status information, for example [4m?[34m[24m[]8;;#350\350]8;;\][0m, + [4m![34m[24m[]8;;#351\351]8;;\][0m, [4maccount[34m[24m[]8;;#366\366]8;;\] [0mor [4mmailbox-display[34m[24m[]8;;#464\464]8;;\][0m. + + In order to embed characters which should not be counted when + calculating the visual width of the resulting string, enclose + the characters of interest in a pair of reverse solidus escaped + brackets: ‘\[\E[0m\]’; a slot for coloured prompts is also + available with the [Option]al command [1mcolour[34m[22m[]8;;#164\164]8;;\][0m. Prompting + may be prevented by setting this to the null string (aka ‘set + noprompt’). + + [4mprompt2[24m]8;:id=526;#\]8;;\ This string is used for secondary prompts, but is otherwise + identical to [4mprompt[34m[24m[]8;;#525\525]8;;\][0m. The default is ‘.. ’. + + [4mquiet[24m]8;:id=527;#\]8;;\ (Boolean) Suppresses the printing of the version when first in‐ + voked. + + [4mquote[24m]8;:id=528;#\]8;;\ If set messages processed by variants of [1mfollowup[34m[22m[]8;;#207\207]8;;\] [0mand + [1mreply[34m[22m[]8;;#261\261]8;;\] [0mwill start with the original message, lines of which + prefixed by [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m, taking into account + [4mquote-chars[34m[24m[]8;;#531\531]8;;\] [0mand [4mquote-fold[34m[24m[]8;;#532\532]8;;\][0m. No headers will be + quoted when set without value or for ‘noheading’, for ‘headers’ + the ‘type’ [1mheaderpick[34m[22m[]8;;#212\212]8;;\] [0mselection will be included in the + quote, ‘allbodies’ embeds the (body) contents of all MIME + parts, and ‘allheaders’ also includes all headers. The quoted + message will be enclosed by the expansions of + [4mquote-inject-head[34m[24m[]8;;#533\533]8;;\] [0mand [4mquote-inject-tail[34m[24m[]8;;#534\534]8;;\][0m. Also see + [4mquote-add-cc[34m[24m[]8;;#529\529]8;;\][0m, [4mquote-as-attachment[34m[24m[]8;;#530\530]8;;\] [0mand [1m˜Q[34m[22m[]8;;#338\338]8;;\][0m, one of + the [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. + + [4mquote-add-cc[24m]8;:id=529;#\]8;;\ + (Boolean) Whether senders of messages quoted via [1m˜Q[34m[22m[]8;;#338\338]8;;\] [0mshall + be made members of the carbon copies ‘Cc:’ list. + + [4mquote-as-attachment[24m]8;:id=530;#\]8;;\ + (Boolean) Add the original message in its entirety as a + ‘message/rfc822’ MIME attachment when replying to a message, + announced as [4mcontent-description-quote-attachment[34m[24m[]8;;#405\405]8;;\][0m. This + works regardless of the setting of [4mquote[34m[24m[]8;;#528\528]8;;\][0m. + + [4mquote-chars[24m]8;:id=531;#\]8;;\ + Can be set to a string consisting of non-whitespace ASCII char‐ + acters which shall be treated as quotation leaders, the default + being ‘>|}:’. + + [4mquote-fold[24m]8;:id=532;#\]8;;\ + [Option] Can be set in addition to [4mindentprefix[34m[24m[]8;;#454\454]8;;\][0m, and cre‐ + ates a more fancy quotation in that leading quotation charac‐ + ters ([4mquote-chars[34m[24m[]8;;#531\531]8;;\][0m) are compressed and overlong lines are + folded. [4mquote-fold[24m can be set to either one, two or three + (space separated) numeric values, which are interpreted as the + maximum (goal) and the minimum line length, respectively, in a + spirit rather equal to the fmt(1)[34m[]8;:id=747;man:fmt(1)\747]8;;\] [0mprogram, but line- in‐ + stead of paragraph-based. The third value is used as the maxi‐ + mum line length instead of the first if no better break point + can be found; it is ignored unless it is larger than the mini‐ + mum and smaller than the maximum. If not set explicitly the + minimum will reflect the goal algorithmically. The goal cannot + be smaller than the length of [4mindentprefix[34m[24m[]8;;#454\454]8;;\] [0mplus some addi‐ + tional pad; necessary adjustments take place silently. + + [4mquote-inject-head[24m]8;:id=533;#\]8;;\, [4mquote-inject-tail[24m]8;:id=534;#\]8;;\ + The strings to put before and after the text of a [4mquote[34m[24m[]8;;#528\528]8;;\][0md + message, if non-empty, and respectively. The former defaults + to ‘%f wrote:\n\n’. Special format directives will be expanded + if possible, and if so configured the output will be folded ac‐ + cording to [4mquote-fold[34m[24m[]8;;#532\532]8;;\][0m. Format specifiers in the given + strings start with a percent sign ‘%’ and expand values of the + original message, unless noted otherwise. Note that names and + addresses are not subject to the setting of [4mshowto[34m[24m[]8;;#555\555]8;;\][0m. Valid + format specifiers are: + + ‘%%’ A plain percent sign. + ‘%a’ The address(es) of the sender(s). + ‘%d’ The date found in the ‘Date:’ header of the message + when [4mdatefield[34m[24m[]8;;#410\410]8;;\] [0mis set (the default), otherwise + the date when the message was received. Formatting + can be controlled by assigning a strftime(3)[34m[]8;:id=748;man:strftime(3)\748]8;;\][0m + format string to [4mdatefield[34m[24m[]8;;#410\410]8;;\] [0m(and + [4mdatefield-markout-older[34m[24m[]8;;#411\411]8;;\][0m). + ‘%f’ The full name(s) (name and address, as given) of the + sender(s). + ‘%i’ The ‘Message-ID:’. + ‘%n’ The real name(s) of the sender(s) if there is one and + [4mshowname[34m[24m[]8;;#554\554]8;;\] [0mallows usage, the address(es) other‐ + wise. + ‘%r’ The senders real name(s) if there is one, the ad‐ + dress(es) otherwise. + + [4mr-option-implicit[24m]8;:id=535;#\]8;;\ + (Boolean) Setting this option evaluates the contents of + [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or, if that contains multiple addresses, + [4msender[34m[24m[]8;;#551\551]8;;\][0m) and passes the results onto the used (file-based) + MTA as described for the [1m-r[34m[22m[]8;;#79\79]8;;\] [0moption (empty argument case). + + [4mrecipients-in-cc[24m]8;:id=536;#\]8;;\ + (Boolean) When doing a [1mreply[34m[22m[]8;;#261\261]8;;\][0m, the original ‘From:’ and + ‘To:’ as well as recipients which possibly came in via + ‘Reply-To:’ and ‘Mail-Followup-To:’ are by default merged into + the new ‘To:’. If this variable is set a sensitive algorithm + tries to place in ‘To:’ only the sender of the message being + replied to, others are placed in ‘Cc:’. + + [4mrecord[24m]8;:id=537;#\]8;;\ Unless this variable is defined, no copies of outgoing mail + will be saved. If defined it gives the pathname, subject to + the usual [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m, of a folder where all + new, replied-to or forwarded messages are saved: when saving to + this folder fails the message is not sent, but instead + [4msave[34m[24m[]8;;#546\546]8;;\][0md to DEAD[34m[]8;;#625\625]8;;\][0m. The standard defines that relative + (fully expanded) paths are to be interpreted relative to the + current directory ([1mcwd[34m[22m[]8;;#171\171]8;;\][0m), to force interpretation relative + to [4mfolder[34m[24m[]8;;#427\427]8;;\] [0m[4moutfolder[34m[24m[]8;;#493\493]8;;\] [0mneeds to be set in addition. + + [4mrecord-files[24m]8;:id=538;#\]8;;\ + (Boolean) If this variable is set the meaning of [4mrecord[34m[24m[]8;;#537\537]8;;\][0m + will be extended to cover messages which target only file and + pipe recipients (see [4mexpandaddr[34m[24m[]8;;#422\422]8;;\][0m). These address types + will not appear in recipient lists unless + [4madd-file-recipients[34m[24m[]8;;#367\367]8;;\] [0mis also set. + + [4mrecord-resent[24m]8;:id=539;#\]8;;\ + (Boolean) If this variable is set the meaning of [4mrecord[34m[24m[]8;;#537\537]8;;\][0m + will be extended to also cover the [1mresend[34m[22m[]8;;#264\264]8;;\] [0mand [1mResend[34m[22m[]8;;#263\263]8;;\][0m + commands. + + [4mreply-in-same-charset[24m]8;:id=540;#\]8;;\ + (Boolean) If this variable is set S-nail first tries to use the + same character set of the original message for replies. If + this fails, the mechanism described in [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\] [0mis + evaluated as usual. + + [4mreply-strings[24m]8;:id=541;#\]8;;\ + Can be set to a comma-separated list of (case-insensitive ac‐ + cording to ASCII rules) strings which shall be recognized in + addition to the built-in strings as ‘Subject:’ reply message + indicators – built-in are ‘Re:’, which is mandated by RFC 5322, + as well as the german ‘Aw:’, ‘Antw:’, and the ‘Wg:’ which often + has been seen in the wild; I.e., the separating colon has to be + specified explicitly. + + [4mreply-to[24m]8;:id=542;#\]8;;\ A list of addresses to put into the ‘Reply-To:’ field of the + message header. Members of this list are handled as if they + were in the [1malternates[34m[22m[]8;;#149\149]8;;\] [0mlist. + + [4mreply-to-honour[24m]8;:id=543;#\]8;;\ + Controls whether a ‘Reply-To:’ header is honoured when replying + to a message via [1mreply[34m[22m[]8;;#261\261]8;;\] [0mor [1mLreply[34m[22m[]8;;#222\222]8;;\][0m. This is a + [4mquadoption[34m[24m[]8;;#349\349]8;;\][0m; if set without a value it defaults to “yes”. + + [4mreply-to-swap-in[24m]8;:id=544;#\]8;;\ + Standards like DKIM and (in conjunction with) DMARC caused many + [4mMailing[24m [4mlists[34m[24m[]8;;#11\11]8;;\] [0mto use sender address rewriting in the style + of ‘Name via List <list@address>’, where the original sender + address often being placed in ‘Reply-To:’. If this is set and + a ‘Reply-To:’ exists, and consists of only one recipient (!), + then that is used in place of the pretended sender. This works + independently from [4mreply-to-honour[34m[24m[]8;;#543\543]8;;\][0m. The optional value, a + comma-separated list of strings, offers more fine-grained con‐ + trol on when swapping shall be used; for now supported is + [4mmlist[24m, here swapping occurs if the sender is a mailing-list as + defined by [1mmlist[34m[22m[]8;;#230\230]8;;\][0m. + + [4mrfc822-body-from_[24m]8;:id=545;#\]8;;\ + (Boolean) This variable can be used to force displaying a so- + called ‘From_’ line for messages that are embedded into an en‐ + velope mail via the ‘message/rfc822’ MIME mechanism, for more + visual convenience, also see [4mmbox-rfc4155[34m[24m[]8;;#470\470]8;;\][0m. + + [4msave[24m]8;:id=546;#\]8;;\ (Boolean) Enable saving of (partial) messages in DEAD[34m[]8;;#625\625]8;;\] [0mupon + interrupt or delivery error. + + [4mscreen[24m]8;:id=547;#\]8;;\ The number of lines that represents a “screenful” of lines, + used in [1mheaders[34m[22m[]8;;#214\214]8;;\] [0msummary display, [1mfrom[34m[22m[]8;;#211\211]8;;\] [0m[1msearch[34m[22m[]8;;#269\269]8;;\][0ming, + message [1mtop[34m[22m[]8;;#294\294]8;;\][0mline display and scrolling via [1mz[34m[22m[]8;;#312\312]8;;\][0m. If this + variable is not set a calculation based upon the detected ter‐ + minal window size and the baud rate is used: the faster the + terminal, the more will be shown. Overall screen dimensions + and pager usage is influenced by the environment variables + COLUMNS[34m[]8;;#624\624]8;;\] [0mand LINES[34m[]8;;#631\631]8;;\] [0mand the variable [4mcrt[34m[24m[]8;;#408\408]8;;\][0m. + + [4msearchheaders[24m]8;:id=548;#\]8;;\ + (Boolean) Expand message list specifiers in the form ‘/x:y’ to + all messages containing the substring “y” in the header field + ‘x’. The string search is case insensitive. + + [4msendcharsets[24m]8;:id=549;#\]8;;\ + [Option] A comma-separated list of character set names that can + be used in outgoing internet mail. The value of the variable + [4mcharset-8bit[34m[24m[]8;;#397\397]8;;\] [0mis automatically appended to this list of + character sets. If no character set conversion capabilities + are compiled into S-nail then the only supported charset is + [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. Also see [4msendcharsets-else-ttycharset[34m[24m[]8;;#550\550]8;;\][0m + and refer to the section [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\] [0mfor the complete + picture of character set conversion in S-nail. + + [4msendcharsets-else-ttycharset[24m]8;:id=550;#\]8;;\ + (Boolean)[Option] If this variable is set, but + [4msendcharsets[34m[24m[]8;;#549\549]8;;\] [0mis not, then S-nail acts as if + [4msendcharsets[34m[24m[]8;;#549\549]8;;\] [0mhad been set to the value of the variable + [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m. In effect this combination passes through the + message data in the character set of the current locale encod‐ + ing: therefore mail message text will be (assumed to be) in + ISO-8859-1 encoding when send from within a ISO-8859-1 locale, + and in UTF-8 encoding when send from within an UTF-8 locale. + + The 8-bit fallback [4mcharset-8bit[34m[24m[]8;;#397\397]8;;\] [0mnever comes into play as + [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mis implicitly assumed to be 8-bit and capable + to represent all files the user may specify (as is the case + when no character set conversion support is available in S-nail + and the only supported character set is [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m, see + [4mCharacter[24m [4msets[34m[24m[]8;;#12\12]8;;\][0m). This might be a problem for scripts which + use the suggested ‘LC_ALL=C’ setting, since in this case the + character set is US-ASCII by definition, so that it is better + to also override [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m, then; and/or do something + like the following in the resource file: + + # Avoid ASCII "propagates to 8-bit" when scripting + \if ! t && "$LC_ALL" != C && "$LC_CTYPE" != C + \set sendcharsets-else-ttycharset + \end + + [4msender[24m]8;:id=551;#\]8;;\ An address that is put into the ‘Sender:’ field of outgoing + messages, quoting the standard RFC 5322: the mailbox of the + agent responsible for the actual transmission of the message. + For example, if Mary sends a mail for Alice, then Alice should + be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐ + cording to the standard this variable [1mmust [22mbe set if [4mfrom[34m[24m[]8;;#436\436]8;;\][0m + contains multiple addresses. [v15 behaviour may differ] Expect + automatic management of the [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mand [4msender[34m[24m[]8;;#551\551]8;;\] [0mrelation‐ + ship (requiring an address order in the former). Dependent on + the context this address is handled as if it were in the list + of [1malternates[34m[22m[]8;;#149\149]8;;\][0m. Also see [1m-r[34m[22m[]8;;#79\79]8;;\][0m, [4mr-option-implicit[34m[24m[]8;;#535\535]8;;\][0m. + + [4msendwait[24m]8;:id=552;#\]8;;\ Sending messages to the chosen [4mmta[34m[24m[]8;;#482\482]8;;\] [0mor to command-pipe re‐ + cipients (see [4mOn[24m [4msending[24m [4mmail,[24m [4mand[24m [4mnon-interactive[24m [4mmode[34m[24m[]8;;#7\7]8;;\][0m) + will be performed asynchronously. This means that only startup + errors of the respective program will be recognizable, but no + delivery errors. Also, no guarantees can be made as to when + the respective program will actually run, as well as to when + they will have produced output. + + If this variable is set then child program exit is waited for, + and its exit status code is used to decide about success. Re‐ + marks: in conflict with the POSIX standard this variable is + built-in to be initially set. Another difference is that it + can have a value, which is interpreted as a comma-separated + list of case-insensitive strings naming specific subsystems for + which synchronousness shall be ensured (only). Possible values + are ‘mta’ for [4mmta[34m[24m[]8;;#482\482]8;;\] [0mdelivery, and ‘pcc’ for command-pipe re‐ + cipients. + + [4mshowlast[24m]8;:id=553;#\]8;;\ (Boolean) This setting causes S-nail to start at the last mes‐ + sage instead of the first one when opening a mail folder, as + well as with [1mfrom[34m[22m[]8;;#211\211]8;;\] [0mand [1mheaders[34m[22m[]8;;#214\214]8;;\][0m. + + [4mshowname[24m]8;:id=554;#\]8;;\ (Boolean) Causes S-nail to use the sender’s real name instead + of the plain address in the header field summary and in message + specifications. + + [4mshowto[24m]8;:id=555;#\]8;;\ (Boolean) Causes the recipient of the message to be shown in + the header summary if the message was sent by the user. + + [4mSign[24m]8;:id=556;#\]8;;\ The value backing [1m˜A[34m[22m[]8;;#323\323]8;;\][0m, one of the [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. + Also see [4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\][0m, [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\] [0mand + [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m. + + [4msign[24m]8;:id=557;#\]8;;\ The value backing [1m˜a[34m[22m[]8;;#324\324]8;;\][0m, one of the [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m. + Also see [4mmessage-inject-tail[34m[24m[]8;;#474\474]8;;\][0m, [4mon-compose-leave[34m[24m[]8;;#497\497]8;;\] [0mand + [4mon-compose-splice[34m[24m[]8;;#498\498]8;;\][0m. + + [4mskipemptybody[24m]8;:id=558;#\]8;;\ + (Boolean) If an outgoing message has an empty first or only + message part, do not send, but discard it, successfully (also + see the command line option [1m-E[34m[22m[]8;;#65\65]8;;\][0m). + + [4msmime-ca-dir[24m]8;:id=559;#\]8;;\, [4msmime-ca-file[24m]8;:id=560;#\]8;;\ + [Option] Specify the location of trusted CA certificates in PEM + (Privacy Enhanced Mail) for the purpose of verification of + S/MIME signed messages. [4mtls-ca-dir[34m[24m[]8;;#595\595]8;;\] [0mdocuments the neces‐ + sary preparation steps to use the former. The set of CA cer‐ + tificates which are built into the TLS library can be explic‐ + itly turned off by setting [4msmime-ca-no-defaults[34m[24m[]8;;#562\562]8;;\][0m, and fur‐ + ther fine-tuning is possible via [4msmime-ca-flags[34m[24m[]8;;#561\561]8;;\][0m. + + [4msmime-ca-flags[24m]8;:id=561;#\]8;;\ + [Option] Can be used to fine-tune behaviour of the X509 CA cer‐ + tificate storage, and the certificate verification that is + used. The actual values and their meanings are documented for + [4mtls-ca-flags[34m[24m[]8;;#597\597]8;;\][0m. + + [4msmime-ca-no-defaults[24m]8;:id=562;#\]8;;\ + (Boolean)[Option] Do not load the default CA locations that are + built into the used to TLS library to verify S/MIME signed mes‐ + sages. + + [4msmime-cipher-USER@HOST[24m, [4msmime-cipher[24m]8;:id=563;#\]8;;\ + [Option] Specifies the cipher to use when generating S/MIME en‐ + crypted messages (for the specified account). RFC 5751 man‐ + dates a default of ‘aes128’ (AES-128 CBC). Possible values are + (case-insensitive and) in decreasing cipher strength: ‘aes256’ + (AES-256 CBC), ‘aes192’ (AES-192 CBC), ‘aes128’ (AES-128 CBC), + ‘des3’ (DES EDE3 CBC, 168 bits; default if ‘aes128’ is not + available) and ‘des’ (DES CBC, 56 bits). + + The actually available cipher algorithms depend on the crypto‐ + graphic library that S-nail uses. [Option] Support for more + cipher algorithms may be available through dynamic loading via + EVP_get_cipherbyname(3)[34m[]8;:id=749;man:EVP_get_cipherbyname(3)\749]8;;\] [0m(OpenSSL) if S-nail has been com‐ + piled to support this. + + [4msmime-crl-dir[24m]8;:id=564;#\]8;;\ + [Option] Specifies a directory that contains files with CRLs in + PEM format to use when verifying S/MIME messages. + + [4msmime-crl-file[24m]8;:id=565;#\]8;;\ + [Option] Specifies a file that contains a CRL in PEM format to + use when verifying S/MIME messages. + + [4msmime-encrypt-USER@HOST[24m]8;:id=566;#\]8;;\ + [Option] If this variable is set, messages send to the given + recipient are encrypted before sending. The value of the vari‐ + able must be set to the name of a file that contains a certifi‐ + cate in PEM format. + + If a message is sent to multiple recipients, each of them for + whom a corresponding variable is set will receive an individu‐ + ally encrypted message; other recipients will continue to re‐ + ceive the message in plain text unless the + [4msmime-force-encryption[34m[24m[]8;;#567\567]8;;\] [0mvariable is set. It is recommended + to sign encrypted messages, i.e., to also set the + [4msmime-sign[34m[24m[]8;;#568\568]8;;\] [0mvariable. + [4mcontent-description-smime-message[34m[24m[]8;;#406\406]8;;\] [0mwill be inspected for + messages which become encrypted. + + [4msmime-force-encryption[24m]8;:id=567;#\]8;;\ + (Boolean)[Option] Causes S-nail to refuse sending unencrypted + messages. + + [4msmime-sign[24m]8;:id=568;#\]8;;\ + (Boolean)[Option] S/MIME sign outgoing messages with the user’s + ([4mfrom[34m[24m[]8;;#436\436]8;;\][0m) private key and include the users certificate as a + MIME attachment. Signing a message enables a recipient to ver‐ + ify that the sender used a valid certificate, that the email + addresses in the certificate match those in the message header + and that the message content has not been altered. It does not + change the message text, and people will be able to read the + message as usual. [4mcontent-description-smime-signature[34m[24m[]8;;#407\407]8;;\][0m + will be inspected. Also see [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\][0m, + [4msmime-sign-include-certs[34m[24m[]8;;#571\571]8;;\] [0mand [4msmime-sign-digest[34m[24m[]8;;#570\570]8;;\][0m. + + [4msmime-sign-cert-USER@HOST[24m, [4msmime-sign-cert[24m]8;:id=569;#\]8;;\ + [Option] Points to a file in PEM format. For the purpose of + signing and decryption this file needs to contain the user’s + private key followed by the certificate. + + For message signing ‘USER@HOST’ is always derived from the + value of [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or, if that contains multiple addresses, + [4msender[34m[24m[]8;;#551\551]8;;\][0m). For the purpose of encryption the recipients + public encryption key (certificate) is expected; the command + [1mcertsave[34m[22m[]8;;#158\158]8;;\] [0mcan be used to save certificates of signed mes‐ + sages (the section [4mSigned[24m [4mand[24m [4mencrypted[24m [4mmessages[24m [4mwith[0m + [4mS/MIME[34m[24m[]8;;#17\17]8;;\] [0mgives some details). This mode of operation is usu‐ + ally driven by the specialized form. + + When decrypting messages the account is derived from the recip‐ + ient fields (‘To:’ and ‘Cc:’) of the message, which are + searched for addresses for which such a variable is set. + S-nail always uses the first address that matches, so if the + same message is sent to more than one of the user addresses us‐ + ing different encryption keys, decryption might fail. + + Password-encrypted keys may be used for signing and decryption. + Automated password lookup is possible via the “pseudo-hosts” + ‘USER@HOST.smime-cert-key’ for the private key, and + ‘USER@HOST.smime-cert-cert’ for the certificate stored in the + same file. For example, the hypothetical address + ‘bob@exam.ple’ could be driven with a private key / certificate + pair path defined in [4msmime-sign-cert-bob@exam.ple[24m, and the + needed passwords would then be looked up as + ‘bob@exam.ple.smime-cert-key’ and + ‘bob@exam.ple.smime-cert-cert’. When decrypting the value of + [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mwill be tried as a fallback to provide the necessary + ‘USER@HOST’. To include intermediate certificates, use + [4msmime-sign-include-certs[34m[24m[]8;;#571\571]8;;\][0m. The possible password sources + are documented in [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m. + + [4msmime-sign-digest-USER@HOST[24m, [4msmime-sign-digest[24m]8;:id=570;#\]8;;\ + [Option] Specifies the message digest to use when signing + S/MIME messages. Remember that for this use case ‘USER@HOST’ + refers to the variable [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or, if that contains multiple + addresses, [4msender[34m[24m[]8;;#551\551]8;;\][0m). The available algorithms depend on + the used cryptographic library, but at least one usable built- + in algorithm is ensured as a default. If possible the standard + RFC 5751 will be violated by using ‘SHA512’ instead of the man‐ + dated ‘SHA1’ due to security concerns. This variable is ig‐ + nored for very old (released before 2010) cryptographic li‐ + braries which do not offer the necessary interface: it will be + logged if that happened. + + S-nail will try to add built-in support for the following mes‐ + sage digests, names are case-insensitive: ‘BLAKE2b512’, + ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’, + as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’, + ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’. + More digests may [Option]ally be available through dynamic + loading via the OpenSSL function EVP_get_digestbyname(3)[34m[]8;:id=750;man:EVP_get_digestbyname(3)\750]8;;\][0m. + + [4msmime-sign-include-certs-USER@HOST[24m, [4msmime-sign-include-certs[24m]8;:id=571;#\]8;;\ + [Option] If used, this is supposed to a consist of a comma-sep‐ + arated list of files, each of which containing a single cer‐ + tificate in PEM format to be included in the S/MIME message in + addition to the [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\] [0mcertificate. This can be + used to include intermediate certificates of the certificate + authority, in order to allow the recipient’s S/MIME implementa‐ + tion to perform a verification of the entire certificate chain, + starting from a local root certificate, over the intermediate + certificates, down to the [4msmime-sign-cert[34m[24m[]8;;#569\569]8;;\][0m. Even though + top level certificates may also be included in the chain, they + will not be used for the verification on the recipient’s side. + + For the purpose of the mechanisms involved here, ‘USER@HOST’ + refers to the content of the internal variable [4mfrom[34m[24m[]8;;#436\436]8;;\] [0m(or, + if that contains multiple addresses, [4msender[34m[24m[]8;;#551\551]8;;\][0m). The pseudo- + host ‘USER@HOST.smime-include-certs’ will be used for perform‐ + ing password lookups for these certificates, shall they have + been given one, therefore the lookup can be automated via the + mechanisms described in [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[0m + [4mlookup[34m[24m[]8;;#18\18]8;;\][0m. + + [4msmtp-auth-USER@HOST[24m, [4msmtp-auth-HOST[24m, [4msmtp-auth[24m]8;:id=572;#\]8;;\ + [Option][Obsolete] Use the authentication slots of + [4msmtp-config[34m[24m[]8;;#573\573]8;;\][0m. + + [4msmtp-config-USER@HOST[24m, [4msmtp-config-HOST[24m, [4msmtp-config[24m]8;:id=573;#\]8;;\ + [Option] When a SMTP based [4mmta[34m[24m[]8;;#482\482]8;;\] [0mis contacted a list of sup‐ + ported SMTP service extensions will (optionally) be announced + by the server. This comma-separated (case-insensitive) list + configures which extensions shall be used, and which of the + available ones shall not. Order matters, whitespace is ig‐ + nored, an optional plus sign ‘+’ prefix enables, a hyphen-minus + ‘-’ prefix disables usage of an extension, for example ‘-all, + ehlo,+starttls, gssapi’. + + [1mall [22mThis special word enables (default) or disables all + extensions. Disabling it also disables all the below + authentication mechanisms. + [1mehlo [22mService Extensions (RFC 1869) added the notion of ex‐ + tensions to the SMTP protocol; when disabled, all + other extensions are also disabled (for [1mauth [22monly the + master switch is toggled, not the individual mecha‐ + nisms), enabling any extension (re-)implies this. + [1m8bitmime [22m8-bit MIME Transport (RFC 6152) enables usage of the + ‘8bit’ [4mmime-encoding[34m[24m[]8;;#479\479]8;;\][0m. If disabled or not sup‐ + ported by the server, SMTP will not send a ‘8bit’ + message, and optionally [4msave[34m[24m[]8;;#546\546]8;;\] [0mthe text in + DEAD[34m[]8;;#625\625]8;;\][0m; as this happens late the message will also + have been [4mrecord[34m[24m[]8;;#537\537]8;;\][0med. + [1mpipelining[0m + Command Pipelining (RFC 2920) helps saving packet + roundtrips by allowing successive commands without + waiting for respective server responses. + [1mstarttls [22mSecure SMTP over TLS (Transport Layer Security, RFC + 3207) allows upgrading an unencrypted (SMTP not + SMTPS) connection to use private, authenticated com‐ + munication. To improve security and provide a safety + measure against man-in-the-middle attacks this is al‐ + ways performed — even if the server does not announce + it — unless explicitly turned off. Directly using + encrypted transport channels should be preferred, as + it saves network traffic. + [1mauth [22mAuthentication (RFC 4954) allows account credentials + to be passed. This word disables all authentication + mechanisms, but enables only those which can be man‐ + aged automatically without external help; for example + GSSAPI requires an externally granted ticket to ex‐ + ist, and is therefore excluded by the default auto‐ + matic selection, as is EXTERNAL etc.: these mecha‐ + nisms have to be enabled explicitly. The default se‐ + lection depends upon the (im- or explicit) presence + of TLS. + + If multiple [1mauth[22mentication mechanisms are available, an auto‐ + matic selection of the “best” method is performed, preferring + the non-automatic mechanisms. The used list can be fine-tuned, + any non-empty list implies [1mauth[22m. For example, + ‘smtp-config=-allmechs,gssapi,external,plain’ will favour ex‐ + ternal over gssapi, and use plain as a last resort only. Be‐ + ware, in the following example ‘plain’ would still be used as a + last ressort, sending credentials in clear (unless the trans‐ + port is of an encrypted type): ‘smtp-config=-all,,gssapi, + plain’. The following mechanisms are known: + + [1mallmechs [22mSpecial word which covers all authentication methods + (where “all” means all for disabling, and all sup‐ + ported ones for enabling). + [1mcram-md5 [22m[Option] Challenge-Response authentication mechanism + (CRAM; included in RFC 2195), needs [4muser[34m[24m[]8;;#614\614]8;;\] [0mand + [4mpassword[34m[24m[]8;;#508\508]8;;\][0m. + [1mexternal [22m[Option] Included in the simple authentication and + security layer (SASL; RFC 4422). Authentication hap‐ + pens through a TLS client certificate (see + [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m, [1mCertificate[22m) on the transport + layer, therefore not automatic. Needs a [4muser[34m[24m[]8;;#614\614]8;;\][0m. + [1mexternanon[0m + [Option] Likewise, but an empty user name is passed, + as it is expected that the server extracts the name + from the certificate. Not compliant with RFC 4422 / + RFC 4954, but has been seen in the wild. + [1mgssapi [22m[Option] The Kerberos V5 ("GSSAPI") mechanism (RFC + 4752). Needs an external ticket (to be granted by + kinit(1)[34m[]8;:id=751;man:kinit(1)\751]8;;\][0m), therefore not automatic. Needs a + [4muser[34m[24m[]8;;#614\614]8;;\][0m. + [1mlogin [22mThe LOGIN mechanism + ([4mdraft-murchison-sasl-login-00.txt[24m). It requires + three packet roundtrips, has been obsoleted by the + IETF, and should only be used as a last resort. + Needs [4muser[34m[24m[]8;;#614\614]8;;\] [0mand [4mpassword[34m[24m[]8;;#508\508]8;;\][0m. + [1moauthbearer[0m + A set of mechanisms for OAuth (RFC 7628). One packet + roundtrip. Needs [4muser[34m[24m[]8;;#614\614]8;;\] [0mand [4mpassword[34m[24m[]8;;#508\508]8;;\][0m. The + password is a temporary bearer token, not the real + password, and therefore this mechanism is not auto‐ + matic. Also see the [4mFAQ[34m[24m[]8;;#43\43]8;;\] [0mentry [4mBut,[24m [4mhow[24m [4mabout[0m + [4mXOAUTH2[24m [4m/[24m [4mOAUTHBEARER?[34m[24m[]8;;#46\46]8;;\][0m + [1mplain [22mThe PLAIN mechanism (RFC 4616). One packet + roundtrip, needs [4muser[34m[24m[]8;;#614\614]8;;\] [0mand [4mpassword[34m[24m[]8;;#508\508]8;;\][0m. + [1mxoauth2 [22mA popular slightly different variant of the later + standardized [1moauthbearer[22m. + + [4msmtp-from-USER@HOST[24m, [4msmtp-from-HOST[24m, [4msmtp-from[24m]8;:id=574;#\]8;;\ + [Option] Until this is set the necessary ‘USER@HOST’ informa‐ + tion to issue a ‘MAIL FROM:<>’ SMTP [4mmta[34m[24m[]8;;#482\482]8;;\] [0mcommand is derived + from the variable [4mfrom[34m[24m[]8;;#436\436]8;;\] [0mif set, or [4muser[34m[24m[]8;;#614\614]8;;\] [0mand + [4mhostname[34m[24m[]8;;#447\447]8;;\] [0motherwise. If the [Option]al IDNA support is + available (see [4midna-disable[34m[24m[]8;;#448\448]8;;\][0m) variable assignment is + aborted when a necessary conversion fails. + + [4msmtp-hostname-USER@HOST[24m, [4msmtp-hostname-HOST[24m, [4msmtp-hostname[24m]8;:id=575;#\]8;;\ + [Option][Obsolete] Use the more powerful successor + [4msmtp-from[34m[24m[]8;;#574\574]8;;\][0m. + + [4msmtp-use-starttls-USER@HOST[24m, [4msmtp-use-starttls-HOST[24m, [4msmtp-use-starttls[24m]8;:id=576;#\]8;;\ + (Boolean)[Option][Obsolete] Use [4msmtp-config[34m[24m[]8;;#573\573]8;;\][0m. (Forcing TLS + has become a default setting.) + + [4msocket-connect-timeout[24m]8;:id=577;#\]8;;\ + [Option] A positive number that defines the timeout to wait for + establishing a socket connection before forcing + [4mˆERR[34m[24m[]8;;#356\356]8;;\][0m-TIMEDOUT. + + [4msocks-proxy-USER@HOST[24m, [4msocks-proxy-HOST[24m, [4msocks-proxy[24m]8;:id=578;#\]8;;\ + [Option] If set to the URL of a SOCKS5 server then all network + activities are proxied through it, except for the single DNS + name lookup necessary to resolve the proxy URL (unnecessary + when given an already resolved IP address). It is automati‐ + cally squared with the environment variable SOCKS5_PROXY[34m[]8;;#644\644]8;;\][0m, + changing the one will adjust the other. This example creates a + local SOCKS5 proxy on port 10000 that forwards to the machine + ‘HOST’ (with identity ‘USER’), and from which actual network + traffic happens: + + $ ssh -D 10000 USER@HOST + $ s-nail -Ssocks-proxy=[socks5://]localhost:10000 + # or =localhost:10000; no local DNS: =127.0.0.1:10000 + + [4mspam-interface[24m]8;:id=579;#\]8;;\ + [Option] In order to use any of the spam-related commands (like + [1mspamrate[34m[22m[]8;;#289\289]8;;\][0m) the desired spam interface must be defined by + setting this variable. Refer to the manual section [4mHandling[0m + [4mspam[34m[24m[]8;;#20\20]8;;\] [0mfor the complete picture of spam handling in S-nail. + All or none of the following interfaces may be available: + + ‘spamc’ Interaction with spamc(1)[34m[]8;:id=752;man:spamc(1)\752]8;;\] [0mfrom the + spamassassin(1)[34m[]8;:id=753;man:spamassassin(1)\753]8;;\] [0m([4mSpamAssassin[24m: + [1mhttp://spamassassin.apache.org[22m) suite. Different to + the generic filter interface S-nail will automati‐ + cally add the correct arguments for a given command + and has the necessary knowledge to parse the pro‐ + gram’s output. A default value for + [4mspamc-command[34m[24m[]8;;#581\581]8;;\] [0mwill have been compiled into the + S-nail binary if spamc(1)[34m[]8;:id=754;man:spamc(1)\754]8;;\] [0mhas been found in + PATH[34m[]8;;#641\641]8;;\] [0mduring compilation. Shall it be necessary + to define a specific connection type (rather than us‐ + ing a configuration file for that), the variable + [4mspamc-arguments[34m[24m[]8;;#582\582]8;;\] [0mcan be used as in for example + ‘-d server.example.com -p 783’. It is also possible + to specify a per-user configuration via + [4mspamc-user[34m[24m[]8;;#583\583]8;;\][0m. Note that this interface does not + inspect the ‘is-spam’ flag of a message for the com‐ + mand [1mspamforget[34m[22m[]8;;#287\287]8;;\][0m. + + ‘filter’ generic spam filter support via freely configurable + hooks. This interface is meant for programs like + bogofilter(1)[34m[]8;:id=755;man:bogofilter(1)\755]8;;\] [0mand requires according behaviour + in respect to the hooks’ exit status for at least the + command [1mspamrate[34m[22m[]8;;#289\289]8;;\] [0m(‘0’ meaning a message is spam, + ‘1’ for non-spam, ‘2’ for unsure and any other return + value indicating a hard error); since the hooks can + include shell code snippets diverting behaviour can + be intercepted as necessary. The hooks are + [4mspamfilter-ham[34m[24m[]8;;#584\584]8;;\][0m, [4mspamfilter-noham[34m[24m[]8;;#585\585]8;;\][0m, + [4mspamfilter-nospam[34m[24m[]8;;#586\586]8;;\][0m, [4mspamfilter-rate[34m[24m[]8;;#587\587]8;;\] [0mand + [4mspamfilter-spam[34m[24m[]8;;#588\588]8;;\][0m; the manual section [4mHandling[0m + [4mspam[34m[24m[]8;;#20\20]8;;\] [0mcontains examples for some programs. The + process environment of the hooks will have the vari‐ + able MAILX_FILENAME_GENERATED[34m[]8;;#516\516]8;;\] [0mset. Note that + spam score support for [1mspamrate[34m[22m[]8;;#289\289]8;;\] [0mis not supported + unless [4mspamfilter-rate-scanscore[34m[24m[]8;;#589\589]8;;\] [0mvariable is + set. + + [4mspam-maxsize[24m]8;:id=580;#\]8;;\ + [Option] Messages that exceed this size will not be passed + through to the configured [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0m. If unset or 0, + the default of 420000 bytes is used. + + [4mspamc-command[24m]8;:id=581;#\]8;;\ + [Option] The path to the spamc(1)[34m[]8;:id=756;man:spamc(1)\756]8;;\] [0mprogram for the ‘spamc’ + [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0m. Note that the path is not expanded, but + used “as is”. A fallback path will have been compiled into the + S-nail binary if the executable had been found during compila‐ + tion. + + [4mspamc-arguments[24m]8;:id=582;#\]8;;\ + [Option] Even though S-nail deals with most arguments for the + ‘spamc’ [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0mautomatically, it may at least + sometimes be desirable to specify connection-related ones via + this variable, for example ‘-d server.example.com -p 783’. + + [4mspamc-user[24m]8;:id=583;#\]8;;\ + [Option] Specify a username for per-user configuration files + for the ‘spamc’ [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0m. If this is set to the + empty string then S-nail will use the name of the current + [4muser[34m[24m[]8;;#614\614]8;;\][0m. + + [4mspamfilter-ham[24m]8;:id=584;#\]8;;\, [4mspamfilter-noham[24m]8;:id=585;#\]8;;\, [4mspamfilter-nospam[24m]8;:id=586;#\]8;;\, [4mspamfilter-rate[24m]8;:id=587;#\]8;;\, + [4mspamfilter-spam[24m]8;:id=588;#\]8;;\ + [Option] Command and argument hooks for the ‘filter’ + [4mspam-interface[34m[24m[]8;;#579\579]8;;\][0m. The manual section [4mHandling[24m [4mspam[34m[24m[]8;;#20\20]8;;\] [0mcon‐ + tains examples for some programs. + + [4mspamfilter-rate-scanscore[24m]8;:id=589;#\]8;;\ + [Option] Spam scores are not supported for the ‘filter’ + [4mspam-interface[34m[24m[]8;;#579\579]8;;\] [0munless set. If the [Option]nal regular ex‐ + pression support is available then it will be interpreted as a + number, followed by semicolon ‘;’ and an extended regular ex‐ + pression. The first output line of the [4mspamfilter-rate[34m[24m[]8;;#587\587]8;;\][0m + hook is then evaluated accordingly: upon success the regex + group given by the number is interpreted as a floating point + scan score. For example ‘-S + spamfilter-rate-scanscore="1;ˆ(.+)$"’ simply interprets the en‐ + tire output line as one. + + [4mstealthmua[24m]8;:id=590;#\]8;;\ + If only set without an assigned value, then this setting in‐ + hibits the generation of the ‘Message-ID:’, ‘Content-ID:’ and + ‘User-Agent:’ header fields that include obvious references to + S-nail. There are two pitfalls associated with this: First, + the message id of outgoing messages is not known anymore. Sec‐ + ond, an expert may still use the remaining information in the + header to track down the originating mail user agent. If set + to the value ‘noagent’, then the mentioned ‘Message-ID:’ and + ‘Content-ID:’ suppression does not occur. + + [4msystem-mailrc[24m]8;:id=591;#\]8;;\ + (Read-only) The compiled-in path of [4ms-nail.rc[34m[24m[]8;;#659\659]8;;\][0m, the system- + wide of the [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m. + + [4mtermcap[24m]8;:id=592;#\]8;;\ ([Option]) This specifies a comma-separated list of Terminal + Information Library (libterminfo, -lterminfo) and/or Termcap + Access Library (libtermcap, -ltermcap) capabilities (see [4mOn[0m + [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m, escape commas with re‐ + verse solidus ‘\’) to be used to overwrite or define entries. + [1mNote: [22mthis variable will only be queried once at program + startup and can thus only be specified in resource files or on + the command line. It will always be inspected, regardless of + whether [4mfeatures[34m[24m[]8;;#425\425]8;;\] [0mdenotes termcap/terminfo library support + via ‘,+termcap,’. + + String capabilities form ‘cap=value’ pairs and are expected un‐ + less noted otherwise. Numerics have to be notated as + ‘cap#number’ where the number is expected in normal decimal no‐ + tation. Finally, booleans do not have any value but indicate a + true or false state simply by being defined or not; this indeed + means that S-nail does not support undefining an existing + boolean. String capability values will undergo some expansions + before use: for one notations like ‘ˆLETTER’ stand for + ‘control-LETTER’, and for clarification purposes ‘\E’ can be + used to specify ‘escape’ (the control notation ‘ˆ[’ could lead + to misreadings when a left bracket follows, which it does for + the standard CSI sequence); finally three letter octal se‐ + quences, as in ‘\061’, are supported. To specify that a termi‐ + nal supports 256-colours, and to define sequences that home the + cursor and produce an audible bell, one might write: + + ? set termcap=’Co#256,home=\E[H,bel=ˆG’ + + The following terminal capabilities are or may be meaningful + for the operation of the built-in line editor or S-nail in gen‐ + eral: + + [1mam auto_right_margin[22m: boolean which indicates if the + right margin needs special treatment; the [1mxenl [22mcapa‐ + bility is related, for more see COLUMNS[34m[]8;;#624\624]8;;\][0m. This + capability is only used when backed by library sup‐ + port. + [1mclear [22mor [1mcl[0m + [1mclear_screen[22m: clear the screen and home cursor. + (Will be simulated via [1mho [22mplus [1mcd[22m.) + [1mcolors [22mor [1mCo[0m + [1mmax_colors[22m: numeric capability specifying the maximum + number of colours. Note that S-nail does not actu‐ + ally care about the terminal beside that, but always + emits ANSI / ISO 6429 escape sequences; also see + [1mcolour[34m[22m[]8;;#164\164]8;;\][0m. + [1mcr carriage_return[22m: move to the first column in the cur‐ + rent row. The default built-in fallback is ‘\r’. + [1mcub1 [22mor [1mle[0m + [1mcursor_left[22m: move the cursor left one space (non-de‐ + structively). The default built-in fallback is ‘\b’. + [1mcuf1 [22mor [1mnd[0m + [1mcursor_right[22m: move the cursor right one space (non- + destructively). The default built-in fallback is + ‘\E[C’, which is used by most terminals. Less often + occur ‘\EC’ and ‘\EOC’. + [1med [22mor [1mcd clr_eos[22m: clear the screen. + [1mel [22mor [1mce clr_eol[22m: clear to the end of line. (Will be simu‐ + lated via [1mch [22mplus repetitions of space characters.) + [1mhome [22mor [1mho[0m + [1mcursor_home[22m: home cursor. + [1mhpa [22mor [1mch[0m + [1mcolumn_address[22m: move the cursor (to the given column + parameter) in the current row. (Will be simulated + via [1mcr [22mplus [1mnd[22m.) + [1mrmcup [22mor [1mte [22m/ [1msmcup [22mor [1mti[0m + [1mexit_ca_mode [22mand [1menter_ca_mode[22m, respectively: exit + and enter the alternative screen ca-mode, effectively + turning S-nail into a fullscreen application. This + must be enabled explicitly by setting + [4mtermcap-ca-mode[34m[24m[]8;;#593\593]8;;\][0m. + [1msmkx [22mor [1mks [22m/ [1mrmkx [22mor [1mke[0m + [1mkeypad_xmit [22mand [1mkeypad_local[22m, respectively: enable + and disable the keypad. This is always enabled if + available, because it seems even keyboards without + keypads generate other key codes for, e.g., cursor + keys in that case, and only if enabled we see the + codes that we are interested in. + [1mxenl [22mor [1mxn[0m + [1meat_newline_glitch[22m: boolean which indicates whether a + newline written in the last column of an + [1mauto_right_margin [22mindicating terminal is ignored. + With it the full terminal width is available even on + autowrap terminals. This will be inspected even + without ‘,+termcap,’ [4mfeatures[34m[24m[]8;;#425\425]8;;\][0m. + + Many more capabilities which describe key-sequences are docu‐ + mented for [1mbind[34m[22m[]8;;#153\153]8;;\][0m. + + [4mtermcap-ca-mode[24m]8;:id=593;#\]8;;\ + [Option] Allow usage of the [1mexit_ca_mode [22mand [1menter_ca_mode[0m + [4mtermcap[34m[24m[]8;;#592\592]8;;\][0mabilities in order to enter an alternative exclu‐ + sive screen, the so-called ca-mode; this usually requires spe‐ + cial configuration of the PAGER[34m[]8;;#640\640]8;;\][0m, also dependent on the + value of [4mcrt[34m[24m[]8;;#408\408]8;;\][0m. If set to a non-empty value the alternative + screen is cleared before it is left, as via + [1mmle-clear-screen[34m[22m[]8;;#121\121]8;;\][0m. [1mNote: [22mthis variable will only be + queried once at program startup and can thus only be specified + in resource files or on the command line. + + [4mtermcap-disable[24m]8;:id=594;#\]8;;\ + (Boolean)[Option] Disable any interaction with a terminal con‐ + trol library. If set only some generic fallback built-ins and + possibly the content of [4mtermcap[34m[24m[]8;;#592\592]8;;\] [0mdescribe the terminal. + [1mNote: [22mthis variable will only be queried once at program + startup and can thus only be specified in resource files or on + the command line. + + [4mtls-ca-dir-USER@HOST[24m, [4mtls-ca-dir-HOST[24m, [4mtls-ca-dir[24m]8;:id=595;#\]8;;\, [4mtls-ca-file-USER@HOST[24m, + [4mtls-ca-file-HOST[24m, [4mtls-ca-file[24m]8;:id=596;#\]8;;\ + [Option] Directory and file, respectively, for pools of trusted + CA certificates in PEM (Privacy Enhanced Mail) format, for the + purpose of verification of TLS server certificates. Concurrent + use is possible, the file is loaded once needed first, the di‐ + rectory lookup is performed anew as a last resort whenever nec‐ + essary. The CA certificate pool built into the TLS library can + be disabled via [4mtls-ca-no-defaults[34m[24m[]8;;#598\598]8;;\][0m, further fine-tuning is + possible via [4mtls-ca-flags[34m[24m[]8;;#597\597]8;;\][0m. The directory search requires + special filename conventions, see + SSL_CTX_load_verify_locations(3)[34m[]8;:id=757;man:SSL_CTX_load_verify_locations(3)\757]8;;\] [0mand verify(1)[34m[]8;:id=758;man:verify(1)\758]8;;\] [0m(or + c_rehash(1)[34m[]8;:id=759;man:c_rehash(1)\759]8;;\][0m). + + [4mtls-ca-flags-USER@HOST[24m, [4mtls-ca-flags-HOST[24m, [4mtls-ca-flags[24m]8;:id=597;#\]8;;\ + [Option] Can be used to fine-tune behaviour of the X509 CA cer‐ + tificate storage, and the certificate verification that is used + (also see [4mtls-verify[34m[24m[]8;;#608\608]8;;\][0m). The value is expected to consist + of a comma-separated list of configuration directives, with any + intervening whitespace being ignored. The directives directly + map to flags that can be passed to + X509_STORE_set_flags(3)[34m[]8;:id=760;man:X509_STORE_set_flags(3)\760]8;;\][0m, which are usually defined in a + file [4mopenssl/x509_vfy.h[24m, and the availability of which depends + on the used TLS library version: a directive without mapping is + ignored (error log subject to [4mdebug[34m[24m[]8;;#412\412]8;;\][0m). Directives cur‐ + rently understood (case-insensitively) include: + + [1mno-alt-chains[0m + If the initial chain is not trusted, do not attempt + to build an alternative chain. Setting this flag + will make OpenSSL certificate verification match that + of older OpenSSL versions, before automatic building + and checking of alternative chains has been imple‐ + mented; also see [1mtrusted-first[22m. + [1mno-check-time[0m + Do not check certificate/CRL validity against current + time. + [1mpartial-chain[0m + By default partial, incomplete chains which cannot be + verified up to the chain top, a self-signed root cer‐ + tificate, will not verify. With this flag set, a + chain succeeds to verify if at least one signing cer‐ + tificate of the chain is in any of the configured + trusted stores of CA certificates. The OpenSSL man‐ + ual page SSL_CTX_load_verify_locations(3)[34m[]8;:id=761;man:SSL_CTX_load_verify_locations(3)\761]8;;\] [0mgives + some advise how to manage your own trusted store of + CA certificates. + [1mstrict [22mDisable workarounds for broken certificates. + [1mtrusted-first[0m + Try building a chain using issuers in the trusted + store first to avoid problems with server-sent legacy + intermediate certificates. Newer versions of OpenSSL + support alternative chain checking and enable it by + default, resulting in the same behaviour; also see + [1mno-alt-chains[22m. + + [4mtls-ca-no-defaults-USER@HOST[24m, [4mtls-ca-no-defaults-HOST[24m, [4mtls-ca-no-defaults[24m]8;:id=598;#\]8;;\ + (Boolean)[Option] Do not load the default CA locations that are + built into the used to TLS library to verify TLS server cer‐ + tificates. + + [4mtls-config-file[24m]8;:id=599;#\]8;;\ + [Option] If this variable is set CONF_modules_load_file(3)[34m[]8;:id=762;man:CONF_modules_load_file(3)\762]8;;\][0m + (if announced via ‘,+modules-load-file,’ in [4mtls-features[34m[24m[]8;;#604\604]8;;\][0m) + is used to allow resource file based configuration of the TLS + library. This happens once the library is used first, which + may also be early during startup (logged with [4mverbose[34m[24m[]8;;#616\616]8;;\][0m)! + If a non-empty value is given then the given file, after per‐ + forming [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m, will be used instead of + the TLS libraries global default, and it is an error if the + file cannot be loaded. The application name will always be + passed as ‘s-nail’. Some TLS libraries support application- + specific configuration via resource files loaded like this, see + [4mtls-config-module[34m[24m[]8;;#600\600]8;;\][0m. + + [4mtls-config-module-USER@HOST[24m, [4mtls-config-module-HOST[24m, [4mtls-config-module[24m]8;:id=600;#\]8;;\ + [Option] If file based application-specific configuration via + [4mtls-config-file[34m[24m[]8;;#599\599]8;;\] [0mis available, announced as ‘,+ctx-config,’ + by [4mtls-features[34m[24m[]8;;#604\604]8;;\][0m, indicating availability of + SSL_CTX_config(3)[34m[]8;:id=763;man:SSL_CTX_config(3)\763]8;;\][0m, then, it becomes possible to use a cen‐ + tral TLS configuration file for all programs, including s-nail, + for example + + # Register a configuration section for s-nail + s-nail = mailx_master + # The top configuration section creates a relation + # in between dynamic SSL configuration and an actual + # program specific configuration section + [mailx_master] + ssl_conf = mailx_tls_config + # And that program specific configuration section now + # can map diverse tls-config-module names to sections, + # as in: tls-config-module=account_xy + [mailx_tls_config] + account_xy = mailx_account_xy + account_yz = mailx_account_yz + [mailx_account_xy] + MinProtocol = TLSv1.2 + Curves=P-521 + [mailx_account_yz] + CipherString = TLSv1.2:!aNULL:!eNULL: + MinProtocol = TLSv1.1 + Options = Bugs + + [4mtls-config-pairs-USER@HOST[24m, [4mtls-config-pairs-HOST[24m, [4mtls-config-pairs[24m]8;:id=601;#\]8;;\ + [Option] The value of this variable chain will be interpreted + as a comma-separated list of directive/value pairs. Directives + and values need to be separated by equals signs ‘=’, any white‐ + space surrounding pair members is removed. Keys are (usually) + case-insensitive. Different to when placing these pairs in a + [4mtls-config-module[34m[24m[]8;;#600\600]8;;\] [0msection of a [4mtls-config-file[34m[24m[]8;;#599\599]8;;\][0m, com‐ + mas ‘,’ need to be escaped with a reverse solidus ‘\’ when in‐ + cluded in pairs; also different: if the equals sign ‘=’ is pre‐ + ceded with an asterisk ‘*’ [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mwill be + performed on the value; it is an error if these fail. Unless + proper support is announced by [4mtls-features[34m[24m[]8;;#604\604]8;;\][0m + (‘,+conf-ctx,’) only the keys below are supported, otherwise + the pairs will be used directly as arguments to the function + SSL_CONF_cmd(3)[34m[]8;:id=764;man:SSL_CONF_cmd(3)\764]8;;\][0m. + + [1mCertificate [22mFilename of a TLS client certificate (chain) re‐ + quired by some servers. Fallback support via + SSL_CTX_use_certificate_chain_file(3)[34m[]8;:id=765;man:SSL_CTX_use_certificate_chain_file(3)\765]8;;\][0m. + [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mare performed. + [1mPrivateKey [22mwill be set to the same value if not + initialized explicitly. Some services support + so-called ‘external’ authentication if a TLS + client certificate was successfully presented + during connection establishment (“connecting is + authenticating”). + [1mCipherString [22mA list of ciphers for TLS connections, see + ciphers(1)[34m[]8;:id=766;man:ciphers(1)\766]8;;\][0m. By default no list of ciphers + is set, resulting in a [1mProtocol[22m-specific list of + ciphers (the protocol standards define lists of + acceptable ciphers; possibly cramped by the used + TLS library). Fallback support via + SSL_CTX_set_cipher_list(3)[34m[]8;:id=767;man:SSL_CTX_set_cipher_list(3)\767]8;;\][0m. + [1mCiphersuites [22mA list of ciphers used for TLSv1.3 connections, + see ciphers(1)[34m[]8;:id=768;man:ciphers(1)\768]8;;\][0m. These will be joined onto + the list of ciphers from [1mCipherString[22m. Available + if [4mtls-features[34m[24m[]8;;#604\604]8;;\] [0mannounces + ‘,+ctx-set-ciphersuites,’, as necessary via + SSL_CTX_set_ciphersuites(3)[34m[]8;:id=769;man:SSL_CTX_set_ciphersuites(3)\769]8;;\][0m. + [1mCurves [22mA list of supported elliptic curves, if applica‐ + ble. By default no curves are set. Fallback + support via SSL_CTX_set1_curves_list(3)[34m[]8;:id=770;man:SSL_CTX_set1_curves_list(3)\770]8;;\][0m, if + available. + [1mMaxProtocol[22m, [1mMinProtocol[0m + The maximum and minimum supported TLS versions, + respectively. Available if [4mtls-features[34m[24m[]8;;#604\604]8;;\] [0man‐ + nounces ‘,+ctx-set-maxmin-proto,’, as necessary + via SSL_CTX_set_max_proto_version(3)[34m[]8;:id=771;man:SSL_CTX_set_max_proto_version(3)\771]8;;\] [0mand + SSL_CTX_set_min_proto_version(3)[34m[]8;:id=772;man:SSL_CTX_set_min_proto_version(3)\772]8;;\][0m; these + fallbacks use an internal parser which under‐ + stands the strings ‘SSLv3’, ‘TLSv1’, ‘TLSv1.1’, + ‘TLSv1.2’, ‘TLSv1.3’, and the special value + ‘None’, which disables the given limit. + [1mOptions [22mVarious flags to set. Fallback via + SSL_CTX_set_options(3)[34m[]8;:id=773;man:SSL_CTX_set_options(3)\773]8;;\][0m, in which case any + other value but (exactly) ‘Bugs’ results in an + error. + [1mPrivateKey [22mFilename of the private key in PEM format of a + TLS client certificate. If unset, the value of + [1mCertificate [22mis used. [4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mare performed. Fallback via + SSL_CTX_use_PrivateKey_file(3)[34m[]8;:id=774;man:SSL_CTX_use_PrivateKey_file(3)\774]8;;\][0m. + [1mProtocol [22mThe used TLS protocol. If [4mtls-features[34m[24m[]8;;#604\604]8;;\] [0man‐ + nounces ‘,+conf-ctx,’ or ‘ctx-set-maxmin-proto’ + then using [1mMaxProtocol [22mand [1mMinProtocol [22mis prefer‐ + able. Fallback is SSL_CTX_set_options(3)[34m[]8;:id=775;man:SSL_CTX_set_options(3)\775]8;;\][0m, + driven via an internal parser which understands + the strings ‘SSLv3’, ‘TLSv1’, ‘TLSv1.1’, + ‘TLSv1.2’, ‘TLSv1.3’, and the special value + ‘ALL’. Multiple protocols may be given as a + comma-separated list, any whitespace is ignored, + an optional plus sign ‘+’ prefix enables, a hy‐ + phen-minus ‘-’ prefix disables a protocol, so + that ‘-ALL, TLSv1.2’ enables only the TLSv1.2 + protocol. + + [4mtls-crl-dir[24m]8;:id=602;#\]8;;\, [4mtls-crl-file[24m]8;:id=603;#\]8;;\ + [Option] Specify a directory / a file, respectively, that con‐ + tains a CRL in PEM format to use when verifying TLS server cer‐ + tificates. + + [4mtls-features[24m]8;:id=604;#\]8;;\ + [Option](Read-only) This expands to a comma-separated list of + the TLS library identity and optional features. To ease sub‐ + string matching the string starts and ends with a comma. Cur‐ + rently supported identities are ‘libressl’ (LibreSSL) , + ‘libssl-0x30000’ (OpenSSL v3.0.0 series), ‘libssl-0x10100’ + (OpenSSL v1.1.x series) and ‘libssl-0x10000’ (elder OpenSSL se‐ + ries, other clones). Optional features are preceded with a + plus sign ‘+’ when available, and with a hyphen-minus ‘-’ oth‐ + erwise. + + Currently known features are ‘conf-ctx’ + ([4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m), ‘ctx-config’ ([4mtls-config-module[34m[24m[]8;;#600\600]8;;\][0m), + ‘ctx-set-ciphersuites’ ([1mCiphersuites [22mslot of + [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m), ‘ctx-set-maxmin-proto’ + ([4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m), ‘modules-load-file’ + ([4mtls-config-file[34m[24m[]8;;#599\599]8;;\][0m), and ‘tls-rand-file’ + ([4mtls-rand-file[34m[24m[]8;;#607\607]8;;\][0m). + + [4mtls-fingerprint-USER@HOST[24m, [4mtls-fingerprint-HOST[24m, [4mtls-fingerprint[24m]8;:id=605;#\]8;;\ + [Option] It is possible to replace the verification of the con‐ + nection peer certificate against the entire local pool of CAs + (for more see [4mEncrypted[24m [4mnetwork[24m [4mcommunication[34m[24m[]8;;#19\19]8;;\][0m) with the + comparison against a precalculated certificate message digest, + the so-called fingerprint, to be specified as the used + [4mtls-fingerprint-digest[34m[24m[]8;;#606\606]8;;\][0m. This fingerprint can for example + be calculated with ‘[1mtls[34m[22m[]8;;#292\292]8;;\] [0mfingerprint HOST’. + + [4mtls-fingerprint-digest-USER@HOST[24m, [4mtls-fingerprint-digest-HOST[24m, + [4mtls-fingerprint-digest[24m]8;:id=606;#\]8;;\ + [Option] The message digest to be used when creating TLS cer‐ + tificate fingerprints, the defaults, if available, in test or‐ + der, being ‘BLAKE2s256’, ‘SHA256’. For the complete list of + digest algorithms refer to [4msmime-sign-digest[34m[24m[]8;;#570\570]8;;\][0m. + + [4mtls-rand-file[24m]8;:id=607;#\]8;;\ + [Option] If [4mtls-features[34m[24m[]8;;#604\604]8;;\] [0mannounces ‘,+tls-rand-file,’ then + this will be queried to find a file with random entropy data + which can be used to seed the P(seudo)R(andom)N(umber)G(enera‐ + tor), see RAND_load_file(3)[34m[]8;:id=776;man:RAND_load_file(3)\776]8;;\][0m. The default filename + (RAND_file_name(3)[34m[]8;:id=777;man:RAND_file_name(3)\777]8;;\][0m, normally [4m˜/.rnd[34m[24m[]8;;#658\658]8;;\][0m) will be used if + this variable is not set or empty, or if the [4mFilename[0m + [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0mfail. Shall seeding the PRNG have been + successful, RAND_write_file(3)[34m[]8;:id=778;man:RAND_write_file(3)\778]8;;\] [0mwill be called to update + the entropy. Remarks: libraries which do not announce this + feature seed the PRNG by other means. + + [4mtls-verify-USER@HOST[24m, [4mtls-verify-HOST[24m, [4mtls-verify[24m]8;:id=608;#\]8;;\ + [Option] Variable chain that sets the action to be performed if + an error occurs during TLS server certificate validation + against the specified or default trust stores [4mtls-ca-dir[34m[24m[]8;;#595\595]8;;\][0m, + [4mtls-ca-file[34m[24m[]8;;#596\596]8;;\][0m, or the TLS library built-in defaults (unless + usage disallowed via [4mtls-ca-no-defaults[34m[24m[]8;;#598\598]8;;\][0m), and as fine- + tuned via [4mtls-ca-flags[34m[24m[]8;;#597\597]8;;\][0m. Valid (case-insensitive) values + are ‘strict’ (fail and close connection immediately), ‘ask’ + (ask whether to continue on standard input), ‘warn’ (show a + warning and continue), ‘ignore’ (do not perform validation). + The default is ‘ask’. + + [4mtoplines[24m]8;:id=609;#\]8;;\ If defined, gives the number of lines of a message to be dis‐ + played with the command [1mtop[34m[22m[]8;;#294\294]8;;\][0m; if unset, the first five + lines are printed, if set to 0 the variable [4mscreen[34m[24m[]8;;#547\547]8;;\] [0mis in‐ + spected. If the value is negative then its absolute value will + be used for unsigned right shifting (see [1mvexpr[34m[22m[]8;;#306\306]8;;\][0m) the + [4mscreen[34m[24m[]8;;#547\547]8;;\] [0mheight. + + [4mtopsqueeze[24m]8;:id=610;#\]8;;\ + (Boolean) If set then the [1mtop[34m[22m[]8;;#294\294]8;;\] [0mcommand series will strip + adjacent empty lines and quotations. + + [4mttycharset[24m]8;:id=611;#\]8;;\ + The character set of the terminal S-nail operates on, and the + one and only supported character set that S-nail can use if no + character set conversion capabilities have been compiled into + it, in which case it defaults to ISO-8859-1. Otherwise it de‐ + faults to UTF-8. Sufficient locale support provided the de‐ + fault will be preferably deduced from the locale environment if + that is set (for example LC_CTYPE[34m[]8;;#629\629]8;;\][0m, see there for more); + runtime locale changes will be reflected by [4mttycharset[24m except + during the program startup phase and if [1m-S[34m[22m[]8;;#80\80]8;;\] [0mhad been used to + freeze the given value. Refer to the section [4mCharacter[0m + [4msets[34m[24m[]8;;#12\12]8;;\] [0mfor the complete picture about character sets. + + [4mtypescript-mode[24m]8;:id=612;#\]8;;\ + (Boolean) A special multiplex variable that disables all vari‐ + ables and settings which result in behaviour that interferes + with running S-nail in script(1)[34m[]8;:id=779;man:script(1)\779]8;;\][0m; it sets + [4mcolour-disable[34m[24m[]8;;#400\400]8;;\][0m, [4mline-editor-disable[34m[24m[]8;;#460\460]8;;\] [0mand (before + startup completed only) [4mtermcap-disable[34m[24m[]8;;#594\594]8;;\][0m. Unsetting it + does not restore the former state of the covered settings. + + [4mumask[24m]8;:id=613;#\]8;;\ For a safe-by-default policy the process file mode creation + mask umask(2)[34m[]8;:id=780;man:umask(2)\780]8;;\] [0mwill be set to ‘0077’ on program startup af‐ + ter the resource files have been loaded, and unless this vari‐ + able is set. By assigning this an empty value the active set‐ + ting will not be changed, otherwise the given value will be + made the new file mode creation mask. Child processes inherit + the file mode creation mask of their parent. + + [4muser-HOST[24m, [4muser[24m]8;:id=614;#\]8;;\ + Variable chain that sets a global fallback user name, used in + case none has been given in the protocol and account-specific + URL. This variable defaults to the name of the user who runs + S-nail. + + [4mv15-compat[24m]8;:id=615;#\]8;;\ + Enable upward compatibility with S-nail version 15.0 in respect + to which configuration options are available and how they are + handled. If set to a non-empty value (the default) the command + modifier [1mwysh[34m[22m[]8;;#134\134]8;;\] [0mis implied and thus enforces [4mShell-style[0m + [4margument[24m [4mquoting[34m[24m[]8;;#24\24]8;;\] [0mover [4mOld-style[24m [4margument[24m [4mquoting[34m[24m[]8;;#23\23]8;;\] [0mfor + all commands which support both. + + [4mverbose[24m]8;:id=616;#\]8;;\ Verbose mode enables logging of informational context messages. + Historically a (Boolean) variable, this can either be set mul‐ + tiple times (what the command line option [1m-v[34m[22m[]8;;#86\86]8;;\] [0muses), or be + assigned a numeric value in order to increase verbosity. As‐ + signing the value 0 disables verbosity and thus (almost) equals + [1munset[34m[22m[]8;;#272\272]8;;\][0m. The maximum number is 3. Also see [4mdebug[34m[24m[]8;;#412\412]8;;\][0m. + + [4mversion[24m]8;:id=617;#\]8;;\, [4mversion-date[24m]8;:id=618;#\]8;;\, [4mversion-hexnum[24m]8;:id=619;#\]8;;\, [4mversion-major[24m]8;:id=620;#\]8;;\, [4mversion-minor[24m]8;:id=621;#\]8;;\, + [4mversion-update[24m]8;:id=622;#\]8;;\ + (Read-only) S-nail version information: the first variable is a + string with the complete version identification, the second the + release date in ISO 8601 notation without time. The third is a + 32-bit hexadecimal number with the upper 8 bits storing the ma‐ + jor, followed by the minor and update version numbers which oc‐ + cupy 12 bits each. The latter three variables contain only + decimal digits: the major, minor and update version numbers. + The output of the command [1mversion[34m[22m[]8;;#305\305]8;;\] [0mwill include this infor‐ + mation. + + [4mwritebackedited[24m]8;:id=623;#\]8;;\ + If this variable is set messages modified using the [1medit[34m[22m[]8;;#189\189]8;;\][0m + or [1mvisual[34m[22m[]8;;#308\308]8;;\] [0mcommands are written back to the current folder + when it is quit; it is only honoured for writable folders in + MBOX format, though. Note that the editor will be pointed to + the raw message content in that case, i.e., neither MIME decod‐ + ing nor decryption will have been performed, and proper + [4mmbox-rfc4155[34m[24m[]8;;#470\470]8;;\] [0m‘From_’ quoting of newly added or edited con‐ + tent is also left as an exercise to the user. + +[1mENVIRONMENT[22m]8;:id=34;#\]8;;\ + The term “environment variable” should be considered an indication that + these variables are either standardized as vivid parts of process envi‐ + ronments, or are commonly found in there. There is a strict separation + in between [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\] [0mand the process environment that is in‐ + herited from the SHELL[34m[]8;;#643\643]8;;\] [0mupon program startup (and passed along to + subprocesses). The separation can be resolved, meaning variables can + transparently be used like [4mINTERNAL[24m [4mVARIABLES[34m[24m[]8;;#31\31]8;;\][0m: when [1mset[34m[22m[]8;;#271\271]8;;\] [0mor + [1munset[34m[22m[]8;;#272\272]8;;\] [0mthe process environment is updated automatically, for example; + this includes change scope coverage via [1mlocal[34m[22m[]8;;#130\130]8;;\][0m. (Removal requires + sufficient system support: available in BSD since 1987, standardized + since Y2K.) The list of resolved built-in variables follows, the command + [1menviron[34m[22m[]8;;#193\193]8;;\] [0mcan be used to resolve other variables. [1mvarshow[34m[22m[]8;;#303\303]8;;\][0m, with‐ + out arguments and in [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mmode, lists the resolve state. + + COLUMNS]8;:id=624;#\]8;;\ The user’s preferred width in column positions for the terminal + screen. Queried and used once on program startup in interac‐ + tive or batch ([1m-#[34m[22m[]8;;#90\90]8;;\][0m) mode on a (pseudo-) terminal. Actively + managed (‘SIGWINCH’) for child processes and the [4mMLE[34m[24m[]8;;#93\93]8;;\] [0m([4mOn[0m + [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m) in interactive mode + thereafter. Non-interactive mode always uses, and the fallback + default is a compile-time constant, by default 80 columns. If + in batch mode (on (pseudo-) terminal) COLUMNS and LINES[34m[]8;;#631\631]8;;\][0m + are both set but not both are usable (empty, not a number, or + 0) at program startup, then the real terminal screen size will + be (tried to be) determined once. (Normally the SHELL[34m[]8;;#643\643]8;;\][0m + manages these variables, and unsets them for pipe specifica‐ + tions etc.) + + DEAD]8;:id=625;#\]8;;\ The name of the (mailbox) [1mfolder[34m[22m[]8;;#203\203]8;;\] [0mto use for saving aborted + messages if [4msave[34m[24m[]8;;#546\546]8;;\] [0mis set; this defaults to [4m˜/dead.letter[24m. + If the variable [4mdebug[34m[24m[]8;;#412\412]8;;\] [0mis set no output will be generated, + otherwise the contents of the file will be replaced. Except + shell globs [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0m(also see [1mfolder[34m[22m[]8;;#203\203]8;;\][0m) + will be performed. + + EDITOR]8;:id=626;#\]8;;\ Pathname of the text editor to use for the [1medit[34m[22m[]8;;#189\189]8;;\] [0mcommand + and [1m˜e[34m[22m[]8;;#328\328]8;;\] [0m(see [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m); VISUAL[34m[]8;;#650\650]8;;\] [0mis used for + a more display oriented editor. + + HOME]8;:id=627;#\]8;;\ The user’s home directory. This variable is only used when it + resides in the process environment. The calling user’s home + directory will be used instead if this directory does not ex‐ + ist, is not accessible or cannot be read; it will always be + used for the root user. (No test for being writable is per‐ + formed to allow usage by non-privileged users within read-only + jails, but dependent on settings this directory is a default + write target for, for example, DEAD[34m[]8;;#625\625]8;;\][0m, MBOX[34m[]8;;#638\638]8;;\] [0mand more.) + + LC_ALL]8;:id=628;#\]8;;\, LC_CTYPE]8;:id=629;#\]8;;\, LANG]8;:id=630;#\]8;;\ + [Option] The (names in lookup order of the) locale(7)[34m[]8;:id=781;man:locale(7)\781]8;;\] [0m(and + / or see setlocale(3)[34m[]8;:id=782;man:setlocale(3)\782]8;;\][0m) which indicates the used [4mCharacter[0m + [4msets[34m[24m[]8;;#12\12]8;;\][0m. Runtime changes trigger automatic updates of the en‐ + tire locale system, which includes updating [4mttycharset[34m[24m[]8;;#611\611]8;;\][0m + (except during startup if the variable has been frozen via + [1m-S[34m[22m[]8;;#80\80]8;;\][0m). + + LINES]8;:id=631;#\]8;;\ The user’s preferred number of lines for the terminal screen. + The behaviour is as described for COLUMNS[34m[]8;;#624\624]8;;\][0m, yet the com‐ + pile-time constant used in non-interactive mode and as a fall‐ + back defaults to 24 (lines). + + LISTER]8;:id=632;#\]8;;\ Pathname of the directory lister to use in the [1mfolders[34m[22m[]8;;#205\205]8;;\][0m + command when operating on local mailboxes. Default is + ls(1)[34m[]8;:id=783;man:ls(1)\783]8;;\] [0m(path search through SHELL[34m[]8;;#643\643]8;;\][0m). + + LOGNAME]8;:id=633;#\]8;;\ Upon startup S-nail will actively ensure that this variable + refers to the name of the user who runs S-nail, in order to be + able to pass a verified name to any newly created child + process. + + MAIL]8;:id=634;#\]8;;\ Is used as the user’s [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0munless + [4minbox[34m[24m[]8;;#453\453]8;;\] [0mis set. If the environmental fallback is also not + set, a built-in compile-time default is used. This is assumed + to be an absolute pathname. + + MAILCAPS]8;:id=635;#\]8;;\ [Option] Override the default path search of [4mThe[24m [4mMailcap[0m + [4mfiles[34m[24m[]8;;#38\38]8;;\][0m: any existing file therein will be loaded in se‐ + quence, appending any content to the list of MIME type handler + directives. The RFC 1524 standard imposed default value is as‐ + signed otherwise: ‘˜/.mailcap:/etc/mailcap:/usr/etc/mailcap: + /usr/local/etc/mailcap’. (The default value is a compile-time + [Option].) + + MAILRC]8;:id=636;#\]8;;\ Is used as a startup file instead of [4m˜/.mailrc[34m[24m[]8;;#660\660]8;;\] [0mif set. In + order to avoid side-effects from configuration files scripts + should either set this variable to [4m/dev/null[34m[24m[]8;;#657\657]8;;\] [0mor the [1m-:[34m[22m[]8;;#56\56]8;;\][0m + command line option should be used. + + MAILX_NO_SYSTEM_RC]8;:id=637;#\]8;;\ + If this variable is set then reading of [4ms-nail.rc[34m[24m[]8;;#659\659]8;;\] [0m(aka + [4msystem-mailrc[34m[24m[]8;;#591\591]8;;\][0m) at startup is inhibited, i.e., the same ef‐ + fect is achieved as if S-nail had been started up with the op‐ + tion [1m-:[34m[22m[]8;;#56\56]8;;\] [0m(and according argument) or [1m-n[34m[22m[]8;;#76\76]8;;\][0m. This variable + is only used when it resides in the process environment. + + MBOX]8;:id=638;#\]8;;\ The name of the user’s [4msecondary[24m [4mmailbox[34m[24m[]8;;#137\137]8;;\] [0mfile. A logical + subset of the special [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\] [0m(also see + [1mfolder[34m[22m[]8;;#203\203]8;;\][0m) are supported. The default is [4m˜/mbox[34m[24m[]8;;#653\653]8;;\][0m. Tra‐ + ditionally this MBOX is used as the file to save messages from + the [4mprimary[24m [4msystem[24m [4mmailbox[34m[24m[]8;;#136\136]8;;\] [0mthat have been read. Also see + [4mMessage[24m [4mstates[34m[24m[]8;;#13\13]8;;\][0m. + + NETRC]8;:id=639;#\]8;;\ [Option] This variable overrides the default location of the + user’s [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0mfile. + + PAGER]8;:id=640;#\]8;;\ Pathname of the paging program backing [1mmore[34m[22m[]8;;#237\237]8;;\] [0mand [4mcrt[34m[24m[]8;;#408\408]8;;\][0m + induced pager usage. The default paginator is more(1)[34m[]8;:id=784;man:more(1)\784]8;;\][0m + (path search through SHELL[34m[]8;;#643\643]8;;\][0m). + + The content of this variable is inspected: if it contains + “less” then a non-existing environment variable LESS is tem‐ + porarily set to the portable ‘RIFE’ (the latter two exces‐ + sively), whereas for “lv” LV will temporarily be set to ‘-c’. + Also see [4mColoured[24m [4mdisplay[34m[24m[]8;;#16\16]8;;\] [0mand [4mcolour-disable[34m[24m[]8;;#400\400]8;;\][0m. + + PATH]8;:id=641;#\]8;;\ A colon-separated list of directories that is searched by the + shell when looking for commands, for example + ‘/bin:/usr/bin:/usr/local/bin’. + + POSIXLY_CORRECT]8;:id=642;#\]8;;\ + This environment entry is automatically squared with + [4mposix[34m[24m[]8;;#523\523]8;;\][0m. + + SHELL]8;:id=643;#\]8;;\ The POSIX compatible sh(1)[34m[]8;:id=785;man:sh(1)\785]8;;\] [0mto use for the commands [1m![34m[22m[]8;;#138\138]8;;\][0m, + [1mpipe[34m[22m[]8;;#248\248]8;;\][0m, and [1mshell[34m[22m[]8;;#275\275]8;;\][0m, the [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\] [0m[1m˜![34m[22m[]8;;#314\314]8;;\] [0mand + [1m˜|[34m[22m[]8;;#321\321]8;;\][0m, and when starting subprocesses. A compile-time de‐ + fault shell is used if this variable is not defined. ‘$SHELL + -c -- ’echo du’’ is required to print ‘du’ (POSIX issue #1440). + + SOCKS5_PROXY]8;:id=644;#\]8;;\ + This environment entry is automatically squared with + [4msocks-proxy[34m[24m[]8;;#578\578]8;;\][0m. + + SOURCE_DATE_EPOCH]8;:id=645;#\]8;;\ + Specifies a time in seconds since the Unix epoch (1970-01-01) + to be used in place of the current time. This variable is + looked up upon program startup, and its existence will switch + S-nail to a reproducible mode ([1mhttps://reproducible-builds.org[22m) + which uses deterministic random numbers, a special fixated + pseudo LOGNAME[34m[]8;;#633\633]8;;\] [0mand more. This operation mode is used for + development and by software packagers. [v15 behaviour may dif‐ + fer] Currently an invalid setting is only ignored, rather than + causing a program abortion. + + $ SOURCE_DATE_EPOCH=‘date +%s‘ s-nail + + TERM]8;:id=646;#\]8;;\ [Option] The terminal type for which output is to be prepared. + For extended colour and font control refer to [4mColoured[0m + [4mdisplay[34m[24m[]8;;#16\16]8;;\][0m, and for terminal management in general to [4mOn[0m + [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m. + + TMPDIR]8;:id=647;#\]8;;\ Except for the root user this variable defines the directory + for temporary files to be used instead of [4m/tmp[24m (or the given + compile-time constant) if set, existent, accessible as well as + read- and writable. This variable is only used when it resides + in the process environment, but S-nail will ensure at startup + that this environment variable is updated to contain a usable + temporary directory. + + TZ]8;:id=648;#\]8;;\ Defines the timezone(3)[34m[]8;:id=786;man:timezone(3)\786]8;;\] [0mfor local standard time and + date(1)[34m[]8;:id=787;man:date(1)\787]8;;\][0m. (System-dependent, often there is also a + [4m/etc/localtime[24m.) + + USER]8;:id=649;#\]8;;\ Identical to LOGNAME[34m[]8;;#633\633]8;;\] [0m(see there), but this variable is not + standardized, should therefore not be used, and is only cor‐ + rected if already set. + + VISUAL]8;:id=650;#\]8;;\ Pathname of the text editor to use for the [1mvisual[34m[22m[]8;;#308\308]8;;\] [0mcommand + and [1m˜v[34m[22m[]8;;#346\346]8;;\] [0m(see [4mCOMMAND[24m [4mESCAPES[34m[24m[]8;;#30\30]8;;\][0m); EDITOR[34m[]8;;#626\626]8;;\] [0mis used for + a less display oriented editor. + +[1mFILES[22m]8;:id=35;#\]8;;\ + ˜/.mailcap]8;:id=651;#\]8;;\, /etc/mailcap]8;:id=652;#\]8;;\ + [Option] Personal and system-wide MIME type handler definition + files, see [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\][0m. (The shown names are part of + the RFC 1524 standard search path MAILCAPS[34m[]8;;#635\635]8;;\][0m.) + + ˜/.mailrc[34m[]8;;#660\660]8;;\][0m, s-nail.rc[34m[]8;;#659\659]8;;\][0m + User-specific and system-wide files giving initial commands, + the [4mResource[24m [4mfiles[34m[24m[]8;;#36\36]8;;\][0m. (The used filenames come from [4mMAILRC[0m + and [4msystem-mailrc[34m[24m[]8;;#591\591]8;;\][0m, respectively.) + + ˜/mbox]8;:id=653;#\]8;;\ The default value for MBOX[34m[]8;;#638\638]8;;\][0m. + + ˜/.mime.types]8;:id=654;#\]8;;\, /etc/mime.types]8;:id=655;#\]8;;\ + Personal and system-wide MIME types, see [4mThe[24m [4mmime.types[0m + [4mfiles[34m[24m[]8;;#37\37]8;;\][0m. + + ˜/.netrc]8;:id=656;#\]8;;\ [Option] The default location of the user’s [4m.netrc[24m file – the + section [4mThe[24m [4m.netrc[24m [4mfile[34m[24m[]8;;#39\39]8;;\] [0mdocuments the file format. The + used path can be set via NETRC[34m[]8;;#639\639]8;;\][0m. + + /dev/null]8;:id=657;#\]8;;\ + The data sink null(4)[34m[]8;:id=788;man:null(4)\788]8;;\][0m. + + ˜/.rnd]8;:id=658;#\]8;;\ [Option] Possible location for persistent random entropy seed + storage, see [4mtls-rand-file[34m[24m[]8;;#607\607]8;;\][0m. + + [1mResource files[22m]8;:id=36;#\]8;;\ + Upon startup several resource files are read, in order: + + s-nail.rc]8;:id=659;#\]8;;\ + System-wide resource file ([4msystem-mailrc[34m[24m[]8;;#591\591]8;;\][0m). Reading of + this file can be suppressed, either by using the [1m-:[34m[22m[]8;;#56\56]8;;\] [0m(and + according argument) or [1m-n[34m[22m[]8;;#76\76]8;;\] [0mcommand line options, or by set‐ + ting the [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0mvariable MAILX_NO_SYSTEM_RC[34m[]8;;#637\637]8;;\][0m. A(n + unmodified) version of this is also compiled-in, accessible via + [1m-:[34m[22m[]8;;#56\56]8;;\] [0m‘x’. + + ˜/.mailrc]8;:id=660;#\]8;;\ + File giving initial commands. A different file can be chosen + by setting the [4mENVIRONMENT[34m[24m[]8;;#34\34]8;;\] [0mvariable MAILRC[34m[]8;;#636\636]8;;\][0m. Reading + of this file can be suppressed with the [1m-:[34m[22m[]8;;#56\56]8;;\] [0mcommand line op‐ + tion. + + [4mmailx-extra-rc[34m[24m[]8;;#467\467]8;;\][0m + Defines a startup file to be read after all other resource + files. It can be used to specify settings that are not under‐ + stood by other mailx(1)[34m[]8;:id=789;man:mailx(1)\789]8;;\] [0mimplementations, for example. + + The content of these files is interpreted as for [4mCOMMANDS[34m[24m[]8;;#21\21]8;;\][0m, with the + exception that [1mhistory[34m[22m[]8;;#216\216]8;;\] [0mis never tracked. Errors while loading these + files are subject to the settings of [4merrexit[34m[24m[]8;;#419\419]8;;\] [0mand [4mposix[34m[24m[]8;;#523\523]8;;\][0m. More + files with syntactically equal content can be [1msource[34m[22m[]8;;#284\284]8;;\][0med. The follow‐ + ing, saved in a file, would be an examplary content: + + # This line is a comment command. And y\ + es, it is really continued here. + set debug \ + verbose=2 + set editheaders + + [1mThe mime.types files[22m]8;:id=37;#\]8;;\ + As stated in [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\] [0mMIME (Multipurpose Inter‐ + net Mail Extensions) media types needs to be registered in order to be + able to classify message and attachment content. One source for them are + [4mmime.types[24m files, the loading of which can be controlled by setting the + variable [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\][0m. Another is the command + [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m, which also offers access to the MIME type cache. + [4mmime.types[24m files have the following syntax: + + type/subtype extension [extension ...] + # For example: text/html html htm + + where ‘type/subtype’ denotes the MIME media type, as standardized in RFC + 2046: ‘type’ is used to declare the general type of data, while the + ‘subtype’ specifies a specific format for that type of data. One or mul‐ + tiple filename ‘extension’s, separated by whitespace, and specified with‐ + out leading dot ‘.’, can be bound to the media type format. Comments may + be introduced anywhere on a line with a number sign ‘#’, causing the re‐ + maining line to be discarded. + + An extended (non-portable) syntax that prepends an optional ‘type-marker’ + to the above is offered by the command [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m, and is supported + also in especially crafted files which can be loaded via the alternative + value syntax of [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\][0m: + + [?type-marker ]type/subtype extension [extension ...] + + The following type-markers are supported; they are mutual exclusive un‐ + less documented otherwise: + + [4mt[24m Treat this media type as plain text; the [4mt[24m is actually op‐ + tional. + [4mh[24m Treat message parts with this content as HTML tagsoup. If the + [Option]al HTML-tagsoup-to-text converter is not available + treat the content as plain text instead. + [4mH[24m Likewise [4mh[24m, but instead of falling back to plain text require + an explicit MIME content handler. + [4mq[24m If no handler can be found a text message is displayed which + says so. This can be annoying, for example signatures serve a + contextual purpose, their content is of no use by itself. This + marker will avoid displaying the text message. + [4m*[24m The given MIME media type shall only be matched when looking + for handlers, but not when classifying content to create mes‐ + sages. [4mt[24m is no longer optional when this is used. IANA MIME + registry standards do not know about “extension chains”: + ‘tar.gz’ is thus a gzip(1)[34m[]8;:id=790;man:gzip(1)\790]8;;\] [0mcompressed file. Because MIME + media type handlers, like those defined in [4mThe[24m [4mMailcap[0m + [4mfiles[34m[24m[]8;;#38\38]8;;\][0m, match media types, non-standardized fictional types + like ‘x-tar-gz’ are used in the wild as MIME environments be‐ + come configured. The sane solution of recursively unpacking + until no more MIME media type unpacking is possible is not + available. This flag may be used alongside other type-markers, + and is especially useful in conjunction with + [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m. + + When classifying all registered MIME types are searched, and the longest + matching extension will be used. A filename of only an ‘extension’ will + match, for example [4mREADME[24m is matched by ‘mimetype ? text/unix-readme NEWS + README’, empty filenames are not matched, so for example [4m.x.tar[24m does not + match ‘application/x-fun x.tar’ but rather ‘application/x-tar tar’. + + Further reading: for sending messages: [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m, + [4mmime-allow-text-controls[34m[24m[]8;;#476\476]8;;\][0m, [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\][0m. For reading + etc. messages: [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m, [4mThe[24m [4mMailcap[24m [4mfiles[34m[24m[]8;;#38\38]8;;\][0m, + [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m, [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m, [4mmimetypes-load-control[34m[24m[]8;;#481\481]8;;\][0m, + [4mpipe-TYPE/SUBTYPE[34m[24m[]8;;#511\511]8;;\][0m, [4mpipe-EXTENSION[34m[24m[]8;;#510\510]8;;\][0m. + + [1mThe Mailcap files[22m]8;:id=38;#\]8;;\ + [Option] RFC 1524 defines a “User Agent Configuration Mechanism” to be + used to inform mail user agent programs about the locally installed fa‐ + cilities for handling various data formats, i.e., about commands and how + they can be used to display, edit et cetera MIME part contents, as well + as a default path search that includes multiple possible locations of re‐ + source files, and the MAILCAPS[34m[]8;;#635\635]8;;\] [0menvironment variable to overwrite + that. Handlers found from doing the path search will be cached, the com‐ + mand [1mmailcap[34m[22m[]8;;#225\225]8;;\] [0moperates on that cache, and the variable + [4mmailcap-disable[34m[24m[]8;;#466\466]8;;\] [0mwill suppress automatic loading, and usage of any + mailcap handlers. [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\] [0mgives a general + overview of how MIME types are handled. + + “Mailcap” files consist of a set of newline separated entries. Comment + lines start with a number sign ‘#’ (in the first column!) and are ig‐ + nored. Empty lines are ignored. All other lines are interpreted as + mailcap entries. An entry definition may be split over multiple lines by + placing the reverse solidus character ‘\’ last in all but the final line. + The standard does not specify how leading whitespace of successive lines + is to be treated, therefore they are retained. + + “Mailcap” entries consist of a number of semicolon ‘;’ separated fields. + The first two fields are mandatory and must occur in the specified order, + the remaining fields are optional and may appear in any order. Leading + and trailing whitespace of field content is ignored (removed). The re‐ + verse solidus ‘\’ character can be used to escape any following character + including semicolon and itself in the content of the second field, and in + value parts of any optional key/value field. + + The first field defines the MIME ‘TYPE/SUBTYPE’ the entry is about to + handle (case-insensitively). If the subtype is specified as an asterisk + ‘*’ the entry is meant to match all subtypes of the named type, e.g., + ‘audio/*’ would match any audio type. The second field is the [1mview [22mshell + command used to display MIME parts of the given type. + + Data consuming shell commands will be fed message (MIME part) data on + standard input unless one or more instances of the (unquoted) string ‘%s’ + are used: these formats will be replaced with a temporary file(name) that + has been prefilled with the parts data. Data producing shell commands + are expected to generata data on their standard output unless that format + is used. In all cases any given ‘%s’ format is replaced with a properly + shell quoted filename. When a command requests a temporary file via ‘%s’ + then that will be removed again, as if the [1mx-mailx-tmpfile[34m[22m[]8;;#666\666]8;;\] [0mand + [1mx-mailx-tmpfile-fill[34m[22m[]8;;#667\667]8;;\] [0mflags had been set; unless the command requests + [1mx-mailx-async[34m[22m[]8;;#663\663]8;;\] [0mthe [1mx-mailx-tmpfile-unlink[34m[22m[]8;;#668\668]8;;\] [0mflag is also implied; + see below for more. + + Optional fields define single-word flags (case-insensitive), or key / + value pairs consisting of a case-insensitive keyword, an equals sign ‘=’, + and a shell command; whitespace surrounding the equals sign is removed. + Optional fields include the following: + + [1mcompose [22mA program that can be used to compose a new body or body part + in the given format. (Currently unused.) + + [1mcomposetyped[0m + Similar to the [1mcompose [22mfield, but is to be used when the com‐ + posing program needs to specify the ‘Content-type:’ header + field to be applied to the composed data. (Currently unused.) + + [1mcopiousoutput[22m]8;:id=661;#\]8;;\ + A flag field which indicates that the output of the [1mview [22mcom‐ + mand is integrable into S-nails normal visual display. It is + mutually exclusive with [1mneedsterminal[34m[22m[]8;;#662\662]8;;\][0m. + + [1mdescription[0m + A textual description that describes this type of data. The + text may optionally be enclosed within double quotation marks + ‘"’. + + [1medit [22mA program that can be used to edit a body or body part in the + given format. (Currently unused.) + + [1mnametemplate[0m + This field specifies a filename format for the ‘%s’ format used + in the shell command fields, in which ‘%s’ will be replaced by + a random string. (The filename is also stored in and passed to + subprocesses via MAILX_FILENAME_TEMPORARY[34m[]8;;#517\517]8;;\][0m.) The standard + says this is “only expected to be relevant in environments + where filename extensions are meaningful”, and so this field is + ignored unless the ‘%s’ is a prefix, optionally followed by + (ASCII) alphabetic and numeric characters, the underscore and + the period. For example, to specify that a JPG file is to be + passed to an image viewer with a name ending in ‘.jpg’, + ‘nametemplate=%s.jpg’ can be used. + + [1mneedsterminal[22m]8;:id=662;#\]8;;\ + This flag field indicates that the given shell command must be + run on an interactive terminal. S-nail will temporarily re‐ + lease the terminal to the given command in interactive mode, in + non-interactive mode this entry will be entirely ignored; this + flag implies [1mx-mailx-noquote[34m[22m[]8;;#664\664]8;;\][0m. + + [1mprint [22mA program that can be used to print a message or body part in + the given format. (Currently unused.) + + [1mtest [22mSpecifies a program to be run to test some condition, for exam‐ + ple, the machine architecture, or the window system in use, to + determine whether or not this mailcap entry applies. If the + test fails, a subsequent mailcap entry should be sought; also + see [1mx-mailx-test-once[34m[22m[]8;;#665\665]8;;\][0m. Standard I/O of the test program + is redirected from and to [4m/dev/null[34m[24m[]8;;#657\657]8;;\][0m, and the format ‘%s’ + is not supported (the data does not yet exist). + + [1mtextualnewlines[0m + A flag field which indicates that this type of data is line- + oriented and that, if encoded in ‘base64’, all newlines should + be converted to canonical form (CRLF) before encoding, and will + be in that form after decoding. (Currently unused.) + + [1mx11-bitmap[0m + Names a file, in X11 bitmap (xbm) format, which points to an + appropriate icon to be used to visually denote the presence of + this kind of data. This field is not used by S-nail. + + [1mx-mailx-async[22m]8;:id=663;#\]8;;\ + Extension flag field that denotes that the given [1mview [22mcommand + shall be executed asynchronously, without blocking S-nail. + Cannot be used in conjunction with [1mneedsterminal[34m[22m[]8;;#662\662]8;;\][0m; the + standard output of the command will go to [4m/dev/null[34m[24m[]8;;#657\657]8;;\][0m. + + [1mx-mailx-noquote[22m]8;:id=664;#\]8;;\ + An extension flag field that indicates that even a + [1mcopiousoutput[34m[22m[]8;;#661\661]8;;\] [0m[1mview [22mcommand shall not be used when + [4mquote[34m[24m[]8;;#528\528]8;;\][0ming messages, as it would by default. + + [1mx-mailx-test-once[22m]8;:id=665;#\]8;;\ + Extension flag which denotes whether the given [1mtest [22mcommand + shall be evaluated once only with its exit status being cached. + This is handy if some global unchanging condition is to be + queried, like “running under the X Window System”. + + [1mx-mailx-tmpfile[22m]8;:id=666;#\]8;;\ + Extension flag field that requests creation of a zero-sized + temporary file, the name of which is to be placed in the envi‐ + ronment variable MAILX_FILENAME_TEMPORARY[34m[]8;;#517\517]8;;\][0m. It is an error + to use this flag with commands that include a ‘%s’ format (be‐ + cause that is implemented by means of this temporary file). + + [1mx-mailx-tmpfile-fill[22m]8;:id=667;#\]8;;\ + Normally the MIME part content is passed to the handler via + standard input; if this flag is set then the data will instead + be written into the implied [1mx-mailx-tmpfile[34m[22m[]8;;#666\666]8;;\][0m. In order to + cause deletion of the temporary file you will have to set + [1mx-mailx-tmpfile-unlink[34m[22m[]8;;#668\668]8;;\] [0mexplicitly! It is an error to use + this flag with commands that include a ‘%s’ format. + + [1mx-mailx-tmpfile-unlink[22m]8;:id=668;#\]8;;\ + Extension flag field that requests that the temporary file + shall be deleted automatically when the command loop is entered + again at latest. It is an error to use this flag with commands + that include a ‘%s’ format, or in conjunction with + [1mx-mailx-async[34m[22m[]8;;#663\663]8;;\][0m. [1mx-mailx-tmpfile[34m[22m[]8;;#666\666]8;;\] [0mis implied. + + [1mx-mailx-last-resort[22m]8;:id=669;#\]8;;\ + An extension flag that indicates that this handler shall only + be used as a last resort, when no other source (see [4mHTML[24m [4mmail[0m + [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m) provides a MIME handler. + + [1mx-mailx-ignore[22m]8;:id=670;#\]8;;\ + An extension that enforces that this handler is not used at + all. + + The standard includes the possibility to define any number of additional + fields, prefixed by ‘x-’. Flag fields apply to the entire “Mailcap” en‐ + try — in some unusual cases, this may not be desirable, but differentia‐ + tion can be accomplished via separate entries, taking advantage of the + fact that subsequent entries are searched if an earlier one does not pro‐ + vide enough information. For example, if a [1mview [22mcommand needs to specify + the [1mneedsterminal[34m[22m[]8;;#662\662]8;;\] [0mflag, but the [1mcompose [22mcommand shall not, the fol‐ + lowing will help out the latter: + + application/postscript; ps-to-terminal %s; needsterminal + application/postscript; ps-to-terminal %s; compose=idraw %s + + In value parts of command fields any occurrence of the format string ‘%t’ + will be replaced by the ‘TYPE/SUBTYPE’ specification. Any named parame‐ + ter from a messages’ ‘Content-type:’ field may be embedded into the com‐ + mand line using the format ‘%{’ followed by the parameter name and a + closing brace ‘}’ character. The entire parameter should appear as a + single command line argument, regardless of embedded spaces, shell quot‐ + ing will be performed by the RFC 1524 processor, thus: + + # Message + Content-type: multipart/mixed; boundary=42 + + # Mailcap file + multipart/*; /usr/local/bin/showmulti \ + %t %{boundary} ; composetyped = /usr/local/bin/makemulti + + # Executed shell command + /usr/local/bin/showmulti multipart/mixed 42 + + Note that S-nail does not support handlers for multipart MIME parts as + shown in this example (as of today). It does not support the additional + formats ‘%n’ and ‘%F’. An example file, also showing how to properly + deal with the expansion of ‘%s’, which includes any quotes that are nec‐ + essary to make it a valid shell argument by itself and thus will cause + undesired behaviour when placed in additional user-provided quotes: + + # Comment line + text/richtext; richtext %s; copiousoutput + + text/x-perl; perl -cWT %s; nametemplate = %s.pl + + # Exit EX_TEMPFAIL=75 on signal + application/pdf; \ + infile=%s\; \ + trap "rm -f ${infile}" EXIT\; \ + trap "exit 75" INT QUIT TERM\; \ + mupdf "${infile}"; \ + test = [ -n "${DISPLAY}" ]; \ + nametemplate = %s.pdf; x-mailx-async + application/pdf; pdftotext -layout - -; copiousoutput + + application/*; echo "This is \\"%t\\" but \ + is 50 \% Greek to me" \; < %s head -c 512 | cat -vet; \ + copiousoutput; x-mailx-noquote; x-mailx-last-resort + + Further reading: [4mHTML[24m [4mmail[24m [4mand[24m [4mMIME[24m [4mattachments[34m[24m[]8;;#10\10]8;;\][0m, [4mThe[24m [4mmime.types[0m + [4mfiles[34m[24m[]8;;#37\37]8;;\][0m, [1mmimetype[34m[22m[]8;;#227\227]8;;\][0m, MAILCAPS[34m[]8;;#635\635]8;;\][0m, [4mmime-counter-evidence[34m[24m[]8;;#478\478]8;;\][0m, + [4mpipe-TYPE/SUBTYPE[34m[24m[]8;;#511\511]8;;\][0m, [4mpipe-EXTENSION[34m[24m[]8;;#510\510]8;;\][0m. + + [1mThe .netrc file[22m]8;:id=39;#\]8;;\ + User credentials for machine accounts (see [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[0m + [4mlookup[34m[24m[]8;;#18\18]8;;\][0m) can be placed in the [4m.netrc[24m file, which will be loaded and + cached when requested by [4mnetrc-lookup[34m[24m[]8;;#489\489]8;;\][0m. The default location + [4m˜/.netrc[34m[24m[]8;;#656\656]8;;\] [0mmay be overridden by the NETRC[34m[]8;;#639\639]8;;\] [0menvironment variable. + As long as syntax constraints are honoured the file source may be re‐ + placed with the output of the shell command set in [4mnetrc-pipe[34m[24m[]8;;#490\490]8;;\][0m, to + load an encrypted file, for example. The cache can be managed with the + command [1mnetrc[34m[22m[]8;;#239\239]8;;\][0m. + + The file consists of space, tabulator or newline separated tokens. This + parser implements a superset of the original BSD syntax, but users should + nonetheless be aware of portability glitches, shall their [4m.netrc[24m be us‐ + able across multiple programs and platforms: + + [1m• [22mBSD only supports double quotation marks, for example ‘password "pass + with spaces"’. + [1m• [22mBSD (only?) supports escaping of single characters via a reverse + solidus (a space could be escaped via ‘\ ’), in- as well as outside + of a quoted string. This method is assumed to be present, and will + actively be used to quote double quotation marks ‘"’ and reverse + solidus ‘\’ characters inside the [1mlogin [22mand [1mpassword [22mtokens, for ex‐ + ample for display purposes. + [1m• [22mBSD does not require a final quotation mark of the last user input + token. + [1m• [22mThe original BSD (Berknet) parser also supported a format which al‐ + lowed tokens to be separated with commas – whereas at least Hewlett- + Packard still seems to support this syntax, this parser does not! + [1m• [22mAs a non-portable extension some widely-used programs support shell- + style comments: if an input line starts, after any amount of white‐ + space, with a number sign ‘#’, then the rest of the line is ignored. + [1m• [22mWhereas other programs may require that the [4m.netrc[24m file is accessible + by only the user if it contains a [1mpassword [22mtoken for any other [1mlogin[0m + than “anonymous”, this parser will always require these strict per‐ + missions. + + Of the following list of supported tokens this parser uses (and caches) + [1mmachine[22m, [1mlogin [22mand [1mpassword[22m. An existing [1mdefault [22mentry will not be used. + + [1mmachine [4m[22mname[0m + The hostname of the entries’ machine, lowercase-normalized be‐ + fore use. Any further file content, until either end-of-file + or the occurrence of another [1mmachine [22mor a [1mdefault [22mfirst-class + token is bound (only related) to the machine [4mname[24m. + + As an extension that should not be the cause of any worries + this parser supports a single wildcard prefix for [4mname[24m: + + machine *.example.com login USER password PASS + machine pop3.example.com login USER password PASS + machine smtp.example.com login USER password PASS + + which would match ‘xy.example.com’ as well as + ‘pop3.example.com’, but neither ‘example.com’ nor + ‘local.smtp.example.com’. In the example neither + ‘pop3.example.com’ nor ‘smtp.example.com’ will be matched by + the wildcard, since the exact matches take precedence (it is + however faster to specify it the other way around). + + [1mdefault [22mThis is the same as [1mmachine [22mexcept that it is a fallback entry + that is used shall none of the specified machines match; only + one default token may be specified, and it must be the last + first-class token. + + [1mlogin [4m[22mname[0m + The user name on the remote machine. + + [1mpassword [4m[22mstring[0m + The user’s password on the remote machine. + + [1maccount [4m[22mstring[0m + Supply an additional account password. This is merely for FTP + purposes. + + [1mmacdef [4m[22mname[0m + Define a macro. A macro is defined with the specified [4mname[24m; it + is formed from all lines beginning with the next line and con‐ + tinuing until a blank line is (consecutive newline characters + are) encountered. (Note that [1mmacdef [22mentries cannot be utilized + by multiple machines, too, but must be defined following the + [1mmachine [22mthey are intended to be used with.) If a macro named + [4minit[24m exists, it is automatically run as the last step of the + login process. This is merely for FTP purposes. + +[1mEXAMPLES[22m]8;:id=40;#\]8;;\ + [1mS/MIME step by step[22m]8;:id=41;#\]8;;\ + [Option] The first thing that is needed for [4mSigned[24m [4mand[24m [4mencrypted[24m [4mmessages[0m + [4mwith[24m [4mS/MIME[34m[24m[]8;;#17\17]8;;\] [0mis a personal certificate, and a private key. The cer‐ + tificate contains public information, in particular a name and email ad‐ + dress(es), and the public key that can be used by others to encrypt mes‐ + sages for the certificate holder (the owner of the private key), and to + [1mverify[34m[22m[]8;;#304\304]8;;\] [0msigned messages generated with that certificate(’s private + key). Whereas the certificate is included in each signed message, the + private key must be kept secret. It is used to decrypt messages that + were previously encrypted with the public key, and to sign messages. + + For personal use it is recommended to get a S/MIME certificate from one + of the major CAs on the Internet. Many CAs offer such certificates for + free. Usually offered is a combined certificate and private key in + PKCS#12 format which S-nail does not accept directly. To convert it to + PEM format, the following shell command can be used; Read on for how to + use these PEM files. + + $ openssl pkcs12 -in cert.p12 -out certpem.pem -clcerts -nodes + $ # Alternatively + $ openssl pkcs12 -in cert.p12 -out cert.pem -clcerts -nokeys + $ openssl pkcs12 -in cert.p12 -out key.pem -nocerts -nodes + + There is also [1mhttps://www.CAcert.org [22mwhich issues client and server cer‐ + tificates to members of their community for free; their root certificate + ([1mhttps://www.cacert.org/certs/root.crt[22m) is often not in the default set + of trusted CA root certificates, though, which means their root certifi‐ + cate has to be downloaded separately, and needs to be part of the S/MIME + certificate validation chain by including it in [4msmime-ca-dir[34m[24m[]8;;#559\559]8;;\] [0mor as a + vivid member of the [4msmime-ca-file[34m[24m[]8;;#560\560]8;;\][0m. But let us take a step-by-step + tour on how to setup S/MIME with a certificate from CAcert.org despite + this situation! + + First of all you will have to become a member of the CAcert.org commu‐ + nity, simply by registrating yourself via the web interface. Once you + are, create and verify all email addresses you want to be able to create + signed and encrypted messages for/with using the corresponding entries of + the web interface. Now ready to create S/MIME certificates, so let us + create a new “client certificate”, ensure to include all email addresses + that should be covered by the certificate in the following web form, and + also to use your name as the “common name”. + + Create a private key and a certificate request on your local computer + (see the manual pages of the used commands for more in-depth knowledge on + what the used arguments etc. do): + + $ openssl req -nodes -newkey rsa:4096 -keyout key.pem -out creq.pem + + Afterwards copy-and-paste the content of “creq.pem” into the certificate- + request (CSR) field of the web form on the CAcert.org website (you may + need to unfold some “advanced options” to see the corresponding text + field). This last step will ensure that your private key (which never + left your box) and the certificate belong together (through the public + key that will find its way into the certificate via the certificate-re‐ + quest). You are now ready and can create your CAcert certified certifi‐ + cate. Download and store or copy-and-paste it as “pub.crt”. + + Yay. In order to use your new S/MIME setup a combined private key/public + key (certificate) file has to be created: + + $ cat key.pem pub.crt > ME@HERE.com.paired + + This is the file S-nail will work with. If you have created your private + key with a passphrase then S-nail will ask you for it whenever a message + is signed or decrypted, unless this operation has been automated as de‐ + scribed in [4mSigned[24m [4mand[24m [4mencrypted[24m [4mmessages[24m [4mwith[24m [4mS/MIME[34m[24m[]8;;#17\17]8;;\][0m. Set the fol‐ + lowing variables to henceforth use S/MIME (setting [4msmime-ca-file[34m[24m[]8;;#560\560]8;;\] [0mis + of interest for verification only): + + ? set smime-ca-file=ALL-TRUSTED-ROOT-CERTS-HERE \ + smime-sign-cert=ME@HERE.com.paired \ + smime-sign-digest=SHA512 \ + smime-sign from=myname@my.host + + [1mUsing CRLs with S/MIME or TLS[22m]8;:id=42;#\]8;;\ + [Option] Certification authorities (CAs) issue certificate revocation + lists (CRLs) on a regular basis. These lists contain the serial numbers + of certificates that have been declared invalid after they have been is‐ + sued. Such usually happens because the private key for the certificate + has been compromised, because the owner of the certificate has left the + organization that is mentioned in the certificate, etc. To seriously use + S/MIME or TLS verification, an up-to-date CRL is required for each + trusted CA. There is otherwise no method to distinguish between valid + and invalidated certificates. S-nail currently offers no mechanism to + fetch CRLs, nor to access them on the Internet, so they have to be re‐ + trieved by some external mechanism. + + S-nail accepts CRLs in PEM format only; CRLs in DER format must be con‐ + verted, like, e.g.: + + $ openssl crl -inform DER -in crl.der -out crl.pem + + To tell S-nail about the CRLs, a directory that contains all CRL files + (and no other files) must be created. The [4msmime-crl-dir[34m[24m[]8;;#564\564]8;;\] [0mor + [4mtls-crl-dir[34m[24m[]8;;#602\602]8;;\] [0mvariables, respectively, must then be set to point to + that directory. After that, S-nail requires a CRL to be present for each + CA that is used to verify a certificate. + +[1mFAQ[22m]8;:id=43;#\]8;;\ + In general it is a good idea to turn on [4mdebug[34m[24m[]8;;#412\412]8;;\] [0m([1m-d[34m[22m[]8;;#64\64]8;;\][0m) and / or + [4mverbose[34m[24m[]8;;#616\616]8;;\] [0m([1m-v[34m[22m[]8;;#86\86]8;;\][0m, twice) if something does not work well. Very often + a diagnostic message can be produced that leads to the problems’ solu‐ + tion. + + [1mS-nail shortly hangs on startup[22m]8;:id=44;#\]8;;\ + This can have two reasons, one is the necessity to wait for a file lock + and cannot be helped, the other being that S-nail calls the function + uname(2)[34m[]8;:id=791;man:uname(2)\791]8;;\] [0min order to query the nodename of the box (sometimes the + real one is needed instead of the one represented by the internal vari‐ + able [4mhostname[34m[24m[]8;;#447\447]8;;\][0m). One may have varying success by ensuring that the + real hostname and ‘localhost’ have entries in [4m/etc/hosts[24m, or, more gener‐ + ally, that the name service is properly setup – and does hostname(1)[34m[]8;:id=792;man:hostname(1)\792]8;;\][0m + return the expected value? Does this local hostname have a domain suf‐ + fix? RFC 6762 standardized the link-local top-level domain ‘.local’, try + again after adding an (additional) entry with this extension. + + [1mI cannot login to Google mail (via OAuth)[22m]8;:id=45;#\]8;;\ + Since 2014 some free service providers classify programs as “less secure” + unless they use a special authentication method (OAuth 2.0) which was not + standardized for non-HTTP protocol authentication token query until Au‐ + gust 2015 (RFC 7628). + + Different to Kerberos / GSSAPI, which is developed since the mid of the + 1980s, where a user can easily create a local authentication ticket for + her- and himself with the locally installed kinit(1)[34m[]8;:id=793;man:kinit(1)\793]8;;\] [0mprogram, that + protocol has no such local part but instead requires a world-wide-web + query to create or fetch a token; since there is no local cache this + query would have to be performed whenever S-nail is invoked (in interac‐ + tive sessions situation may differ). + + S-nail does not directly support OAuth. It, however, supports XOAUTH2 / + OAUTHBEARER, see [4mBut,[24m [4mhow[24m [4mabout[24m [4mXOAUTH2[24m [4m/[24m [4mOAUTHBEARER?[34m[24m[]8;;#46\46]8;;\] [0mIf that is not + used it is necessary to declare S-nail a “less secure app” (on the + providers account web page) in order to read and send mail. However, it + also seems possible to take the following steps instead: + + 1. give the provider the number of a mobile phone, + 2. enable “2-Step Verification”, + 3. create an application specific password (16 characters), and + 4. use that special password instead of the real Google account pass‐ + word in S-nail (for more on that see the section [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[0m + [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m). + + [1mBut, how about XOAUTH2 / OAUTHBEARER?[22m]8;:id=46;#\]8;;\ + Following up [4mI[24m [4mcannot[24m [4mlogin[24m [4mto[24m [4mGoogle[24m [4mmail[24m [4m(via[24m [4mOAuth)[34m[24m[]8;;#45\45]8;;\] [0mone OAuth- + based authentication method is available: the OAuth 2.0 bearer token us‐ + age as standardized in RFC 6750 (according SASL mechanism in RFC 7628), + also known as XOAUTH2 and OAUTHBEARER, allows fetching a temporary access + token via the web that can locally be used as a [4mpassword[34m[24m[]8;;#508\508]8;;\][0m. The pro‐ + tocol is simple and extendable, token updates or even password changes + via a simple TLS secured server login would be possible in theory, but + today a web browser and an external support tool are prerequisites for + using this authentication method. The token times out and must be re‐ + freshed periodically via web. + + Some hurdles must be taken before being able to use this method. Using + GMail as an example, an application (that is a name) must be registered, + for which credentials, a “client ID” and a “client secret”, need to be + created and saved locally (in a secure way). These initial configuration + steps can be performed at + [1mhttps://console.developers.google.com/apis/credentials[22m. Thereafter a re‐ + fresh token can be requested; a python program to do this for GMail ac‐ + counts is [1mhttps://github.com/google/gmail-oauth2-tools/raw/master/python/[0m + [1moauth2.py[22m: + + $ python oauth2.py --user=EMAIL \ + --client-id=THE-ID --client-secret=THE-SECRET \ + --generate_oauth2_token + To authorize token, visit this url and follow the directions: + https://accounts.google.com/o/oauth2/auth?client_id=... + Enter verification code: ... + Refresh Token: ... + Access Token: ... + Access Token Expiration Seconds: 3600 + $ # Of which the last three are actual token responses. + $ # Thereafter access tokens can regularly be refreshed + $ # via the created refresh token (read on) + + The generated refresh token must also be saved locally (securely). The + procedure as a whole can be read at [1mhttps://github.com/google/gmail-[0m + [1moauth2-tools/wiki/OAuth2DotPyRunThrough[22m. Since periodic timers are not + yet supported, keeping an access token up-to-date (from within S-nail) + can only be performed via the hook [4mon-main-loop-tick[34m[24m[]8;;#503\503]8;;\][0m, or (for send‐ + ing only) [4mon-compose-enter[34m[24m[]8;;#496\496]8;;\] [0m(for more on authentication see the sec‐ + tion [4mOn[24m [4mURL[24m [4msyntax[24m [4mand[24m [4mcredential[24m [4mlookup[34m[24m[]8;;#18\18]8;;\][0m): + + set on-main-loop-tick=o-m-l-t on-compose-enter=o-c-e + define o-m-l-t { + xcall update_access_token + } + define o-c-e { + xcall update_access_token + } + + set access_token_=0 + define update_access_token { + local set i epoch_sec epoch_nsec + vput vexpr i epoch + eval set $i # set epoch_sec/_nsec of vexpr epoch + vput vexpr i + $access_token_ 2100 + if $epoch_sec -ge $i + vput ! password python oauth2.py --user=EMAIL \ + --client-id=THE-ID --client-secret=THE-SECRET \ + --refresh-token=THE-REFRESH-TOKEN |\ + sed ’1b PASS;d; :PASS s/ˆ.\{1,\}:\(.\{1,\}\)$/\1/’ + vput csop password trim "$password" + if -n "$verbose" + echo password is <$password> + endif + set access_token_=$epoch_sec + endif + } + + [1mNot "defunctional", but the editor key does not work[22m]8;:id=47;#\]8;;\ + Maybe a sequence is shadowed; setting [4mdebug[34m[24m[]8;;#412\412]8;;\] [0mor maximum [4mverbose[34m[24m[]8;;#616\616]8;;\][0m + causes a [1mbind[34m[22m[]8;;#153\153]8;;\] [0mtree dump after (re-)build (upon startup or after mod‐ + ifying bindings). + + Or the terminal library (see [4mOn[24m [4mterminal[24m [4mcontrol[24m [4mand[24m [4mline[24m [4meditor[34m[24m[]8;;#15\15]8;;\][0m, + [1mbind[34m[22m[]8;;#153\153]8;;\][0m, [4mtermcap[34m[24m[]8;;#592\592]8;;\][0m) reports different codes than TERM[34m[]8;;#646\646]8;;\] [0mgener‐ + ates, causing dysfunctional bindings because of mismatches. (One common + source of this is that the — possibly even non-existing — keypad is not + turned on, and the resulting layout reports codes for the normal keyboard + keys.) The expected code sequences are shown by [1mbind[34m[22m[]8;;#153\153]8;;\] [0min + [4mverbose[34m[24m[]8;;#616\616]8;;\] [0mmode, the [4mMLE[34m[24m[]8;;#93\93]8;;\] [0mloggs the generated ones if [4mdebug[34m[24m[]8;;#412\412]8;;\] [0mis + set in conjunction with maximum [4mverbose[34m[24m[]8;;#616\616]8;;\][0m. After detecting the cor‐ + rect codes these can be placed in [4mtermcap[34m[24m[]8;;#592\592]8;;\][0m. Here a hypothetic HOME + key example (with redundancy removed): + + ? set verbose; bind* + # 1B 5B=[ 31=1 3B=; 32=2 48=H + bind base :khome mle-go-home + ? set verbose=3 debug + # ..pressing HOME key + ? s-nail: \x1B/? + s-nail: \x5B/[ + s-nail: \x48/H + #[..] + ? set noverbose nodebug termcap=’khome=\E[H’; bind* + # 1B 5B=[ 48=H + bind base :khome mle-go-home + + [1mCan S-nail git-send-email?[22m]8;:id=48;#\]8;;\ + Yes. Put (at least parts of) the following in your [4m˜/.gitconfig[24m: + + [sendemail] + smtpserver = /usr/bin/s-nail + smtpserveroption = -t + #smtpserveroption = -Sexpandaddr + smtpserveroption = -Athe-account-you-need + ## + suppresscc = all + suppressfrom = false + assume8bitEncoding = UTF-8 + #to = /tmp/OUT + confirm = always + chainreplyto = true + multiedit = false + thread = true + quiet = true + annotate = true + + Newer git(1)[34m[]8;:id=794;man:git(1)\794]8;;\] [0mversions (v2.33.0) added the option [1msendmailCmd[22m. + Patches can also be send directly, for example: + + $ git format-patch -M --stdout HEADˆ | + s-nail -A the-account-you-need -t RECIPIENT + + [1mHowto handle stale dotlock files[22m]8;:id=49;#\]8;;\ + [1mfolder[34m[22m[]8;;#203\203]8;;\] [0msometimes fails to open MBOX mail databases because creation + of [4mdotlock[24m [4mfiles[34m[24m[]8;;#204\204]8;;\] [0mis impossible due to existing but unowned lock + files. S-nail does not offer an option to deal with those files, because + it is considered a site policy what counts as unowned, and what not. The + site policy is usually defined by administrator(s), and expressed in the + configuration of a locally installed MTA (for example Postfix + ‘stale_lock_time=500s’). Therefore the suggestion: + + $ </dev/null s-nail -s ’MTA: be no frog, handle lock’ $LOGNAME + + By sending a mail to yourself the local MTA can use its normal queue + mechanism to try the delivery multiple times, finally decide a lock file + has become stale, and remove it. + +[1mIMAP CLIENT[22m]8;:id=50;#\]8;;\ + [Option]ally there is IMAP client support available. This part of the + program is obsolete and will vanish in v15 with the large MIME and I/O + layer rewrite, because it uses old-style blocking I/O and makes excessive + use of signal based long code jumps. Support can hopefully be readded + later based on a new-style I/O, with SysV signal handling. In fact the + IMAP support had already been removed from the codebase, but was rein‐ + stantiated on user demand: in effect the IMAP code is at the level of + S-nail v14.8.16 (with [1mimapcodec[34m[22m[]8;;#675\675]8;;\] [0mbeing the sole exception), and + should be treated with some care. + + IMAP uses the ‘imap://’ and ‘imaps://’ protocol prefixes, and an IMAP- + based [4mfolder[34m[24m[]8;;#427\427]8;;\] [0mmay be used. IMAP URLs (paths) undergo inspections and + possible transformations before use (and the command [1mimapcodec[34m[22m[]8;;#675\675]8;;\] [0mcan + be used to manually apply them to any given argument). Hierarchy delim‐ + iters are normalized, a step which is configurable via the + [4mimap-delim[34m[24m[]8;;#679\679]8;;\] [0mvariable chain, but defaults to the first seen delimiter + otherwise. S-nail supports internationalised IMAP names, and en- and de‐ + codes the names from and to the [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mas necessary and possi‐ + ble. If a mailbox name is expanded (see [4mFilename[24m [4mtransformations[34m[24m[]8;;#28\28]8;;\][0m) to + an IMAP mailbox, all names that begin with ‘+’ then refer to IMAP mail‐ + boxes below the [4mfolder[34m[24m[]8;;#427\427]8;;\] [0mtarget box, while folder names prefixed by + ‘@’ refer to folders below the hierarchy base, so the following will list + all folders below the current one when in an IMAP mailbox: ‘folders @’. + + Note: some IMAP servers do not accept the creation of mailboxes in the + hierarchy base, but require that they are created as subfolders of ‘IN‐ + BOX’ – with such servers a folder name of the form + + imaps://me@imap.myisp.example/INBOX. + + should be used (the last character is the server’s hierarchy delimiter). + The following IMAP-specific commands exist: + + [1mcache[22m]8;:id=671;#\]8;;\ Only applicable to cached IMAP mailboxes; takes a message list + and reads the specified messages into the IMAP cache. + + [1mconnect[22m]8;:id=672;#\]8;;\ If operating in disconnected mode on an IMAP mailbox, switch to + online mode and connect to the mail server while retaining the + mailbox status. See the description of the [4mdisconnected[34m[24m[]8;;#676\676]8;;\][0m + variable for more information. + + [1mdisconnect[22m]8;:id=673;#\]8;;\ + If operating in online mode on an IMAP mailbox, switch to dis‐ + connected mode while retaining the mailbox status. See the de‐ + scription of the [4mdisconnected[34m[24m[]8;;#676\676]8;;\] [0mvariable for more. A list + of messages may optionally be given as argument; the respective + messages are then read into the cache before the connection is + closed, thus ‘disco *’ makes the entire mailbox available for + disconnected use. + + [1mimap[22m]8;:id=674;#\]8;;\ Sends command strings directly to the current IMAP server. + S-nail operates always in IMAP ‘selected state’ on the current + mailbox; commands that change this will produce undesirable re‐ + sults and should be avoided. Useful IMAP commands are: + + create Takes the name of an IMAP mailbox as an + argument and creates it. + + getquotaroot (RFC 2087) Takes the name of an IMAP mail‐ + box as an argument and prints the quotas + that apply to the mailbox. Not all IMAP + servers support this command. + + namespace (RFC 2342) Takes no arguments and prints + the Personal Namespaces, the Other User’s + Namespaces and the Shared Namespaces. + Each namespace type is printed in paren‐ + theses; if there are multiple namespaces + of the same type, inner parentheses sepa‐ + rate them. For each namespace a prefix + and a hierarchy separator is listed. Not + all IMAP servers support this command. + + [1mimapcodec[22m]8;:id=675;#\]8;;\ + Perform IMAP path transformations. Supports [1mvput[34m[22m[]8;;#132\132]8;;\] [0m(see + [4mCommand[24m [4mmodifiers[34m[24m[]8;;#22\22]8;;\][0m), and manages the error number [4m![34m[24m[]8;;#351\351]8;;\][0m. + The first argument specifies the operation: [4me[ncode][24m normalizes + hierarchy delimiters (see [4mimap-delim[34m[24m[]8;;#679\679]8;;\][0m) and converts the + strings from the locale [4mttycharset[34m[24m[]8;;#611\611]8;;\] [0mto the international‐ + ized variant used by IMAP, [4md[ecode][24m performs the reverse opera‐ + tion. Encoding will honour the (global) value of + [4mimap-delim[34m[24m[]8;;#679\679]8;;\][0m. + + The following IMAP-specific internal variables exist: + + [4mdisconnected[24m]8;:id=676;#\]8;;\ + (Boolean) When an IMAP mailbox is selected and this variable is + set, no connection to the server is initiated. Instead, data + is obtained from the local cache (see [4mimap-cache[34m[24m[]8;;#678\678]8;;\][0m). Mail‐ + boxes that are not present in the cache and messages that have + not yet entirely been fetched from the server are not avail‐ + able; to fetch all messages in a mailbox at once, the command + ‘copy * /dev/null’ can be used while still in connected mode. + Changes that are made to IMAP mailboxes in disconnected mode + are queued and committed later when a connection to that server + is made. This procedure is not completely reliable since it + cannot be guaranteed that the IMAP unique identifiers (UIDs) on + the server still match the ones in the cache at that time. + Data is saved to DEAD[34m[]8;;#625\625]8;;\] [0mwhen this problem occurs. + + [4mdisconnected-USER@HOST[0m + The specified account is handled as described for the + [4mdisconnected[34m[24m[]8;;#676\676]8;;\] [0mvariable above, but other accounts are not + affected. + + [4mimap-auth-USER@HOST[24m, [4mimap-auth[24m]8;:id=677;#\]8;;\ + Sets the IMAP authentication method. Supported are the default + ‘login’ (called ‘plain’ by some servers), ‘oauthbearer’ (see + [4mFAQ[34m[24m[]8;;#43\43]8;;\] [0mentry [4mBut,[24m [4mhow[24m [4mabout[24m [4mXOAUTH2[24m [4m/[24m [4mOAUTHBEARER?[34m[24m[]8;;#46\46]8;;\][0m), + ‘external’ and ‘externanon’ (for TLS secured connections which + pass a client certificate via [4mtls-config-pairs[34m[24m[]8;;#601\601]8;;\][0m), as well + as the [Option]al ‘cram-md5’ and ‘gssapi’. All methods need a + [4muser[34m[24m[]8;;#614\614]8;;\] [0mand a [4mpassword[34m[24m[]8;;#508\508]8;;\] [0mexcept ‘gssapi’ and ‘external’, + which only need the former. ‘externanon’ only uses data from + the client certificate. + + [4mimap-cache[24m]8;:id=678;#\]8;;\ + Enables caching of IMAP mailboxes. The value of this variable + must point to a directory that is either existent or can be + created by S-nail. All contents of the cache can be deleted by + S-nail at any time; it is not safe to make assumptions about + them. + + [4mimap-delim-USER@HOST[24m, [4mimap-delim-HOST[24m, [4mimap-delim[24m]8;:id=679;#\]8;;\ + The hierarchy separator used by the IMAP server. Whenever an + IMAP path is specified it will undergo normalization. One of + the normalization steps is the squeezing and adjustment of hi‐ + erarchy separators. If this variable is set, any occurrence of + any character of the given value that exists in the path will + be replaced by the first member of the value; an empty value + will cause the default to be used, it is ‘/.’. If not set, we + will reuse the first hierarchy separator character that is dis‐ + covered in a user-given mailbox name. + + [4mimap-keepalive-USER@HOST[24m, [4mimap-keepalive-HOST[24m, [4mimap-keepalive[24m]8;:id=680;#\]8;;\ + IMAP servers may close the connection after a period of inac‐ + tivity; the standard requires this to be at least 30 minutes, + but practical experience may vary. Setting this variable to a + numeric ‘value’ greater than 0 causes a ‘NOOP’ command to be + sent each ‘value’ seconds if no other operation is performed. + + [4mimap-list-depth[24m]8;:id=681;#\]8;;\ + When retrieving the list of folders on an IMAP server, the + [1mfolders[34m[22m[]8;;#205\205]8;;\] [0mcommand stops after it has reached a certain depth + to avoid possible infinite loops. The value of this variable + sets the maximum depth allowed. The default is 2. If the + folder separator on the current IMAP server is a slash ‘/’, + this variable has no effect and the [1mfolders[34m[22m[]8;;#205\205]8;;\] [0mcommand does + not descend to subfolders. + + [4mimap-use-starttls-USER@HOST[24m, [4mimap-use-starttls-HOST[24m, [4mimap-use-starttls[24m]8;:id=682;#\]8;;\ + Causes S-nail to issue a ‘STARTTLS’ command to make an unen‐ + crypted IMAP session TLS encrypted. This functionality is not + supported by all servers, and is not used if the session is al‐ + ready encrypted by the IMAPS method. Directly using encrypted + communication channels should be preferred. + +[1mSEE ALSO[22m]8;:id=51;#\]8;;\ + bogofilter(1)[34m[]8;:id=795;man:bogofilter(1)\795]8;;\][0m, gpg(1)[34m[]8;:id=796;man:gpg(1)\796]8;;\][0m, more(1)[34m[]8;:id=797;man:more(1)\797]8;;\][0m, newaliases(1)[34m[]8;:id=798;man:newaliases(1)\798]8;;\][0m, + openssl(1)[34m[]8;:id=799;man:openssl(1)\799]8;;\][0m, sendmail(1)[34m[]8;:id=800;man:sendmail(1)\800]8;;\][0m, sh(1)[34m[]8;:id=801;man:sh(1)\801]8;;\][0m, spamassassin(1)[34m[]8;:id=802;man:spamassassin(1)\802]8;;\][0m, + iconv(3)[34m[]8;:id=803;man:iconv(3)\803]8;;\][0m, setlocale(3)[34m[]8;:id=804;man:setlocale(3)\804]8;;\][0m, aliases(5)[34m[]8;:id=805;man:aliases(5)\805]8;;\][0m, termcap(5)[34m[]8;:id=806;man:termcap(5)\806]8;;\][0m, + terminfo(5)[34m[]8;:id=807;man:terminfo(5)\807]8;;\][0m, locale(7)[34m[]8;:id=808;man:locale(7)\808]8;;\][0m, mailaddr(7)[34m[]8;:id=809;man:mailaddr(7)\809]8;;\][0m, re_format(7)[34m[]8;:id=810;man:re_format(7)\810]8;;\][0m + (or regex(7)[34m[]8;:id=811;man:regex(7)\811]8;;\][0m), mailwrapper(8)[34m[]8;:id=812;man:mailwrapper(8)\812]8;;\][0m, sendmail(8)[34m[]8;:id=813;man:sendmail(8)\813]8;;\][0m + +[1mHISTORY[22m]8;:id=52;#\]8;;\ + M. Douglas McIlroy writes in his article “A Research UNIX Reader: + Annotated Excerpts from the Programmer’s Manual, 1971-1986” that a + mail(1)[34m[]8;:id=814;man:mail(1)\814]8;;\] [0mcommand already appeared in First Edition UNIX in 1971: + + Electronic mail was there from the start. Never satisfied with its + exact behavior, everybody touched it at one time or another: to as‐ + sure the safety of simultaneous access, to improve privacy, to sur‐ + vive crashes, to exploit uucp, to screen out foreign freeloaders, + or whatever. Not until v7 did the interface change (Thompson). + Later, as mail became global in its reach, Dave Presotto took + charge and brought order to communications with a grab-bag of ex‐ + ternal networks (v8). + + BSD Mail, in large parts compatible with UNIX mail, was written in 1978 + by Kurt Shoens and developed as part of the BSD UNIX distribution until + 1995. This manual page is derived from “The Mail Reference Manual” that + Kurt Shoens wrote for Mail 1.3, included in 3BSD in 1980. The common + UNIX and BSD denominator became standardized as mailx(1)[34m[]8;:id=815;man:mailx(1)\815]8;;\] [0min the + X/Open Portability Guide Issue 2 (January 1987). After the rise of Open + Source BSD variants Mail saw continuous development in the individual + code forks, noticeably by Christos Zoulas in NetBSD. Based upon this + Nail, later Heirloom Mailx, was developed by Gunnar Ritter in the years + 2000 until 2008. Since 2012 S-nail is maintained by Steffen Nurpmeso. + + Electronic mail exchange in general is a concept even older. The earli‐ + est well documented electronic mail system was part of the Compatible + Time Sharing System (CTSS) at MIT, its MAIL command had been proposed in + a staff planning memo at the end of 1964 and was implemented in mid-1965 + when Tom Van Vleck and Noel Morris wrote the necessary code. Similar + communication programs were built for other timesharing systems. One of + the most ambitious and influential was Murray Turoff’s EMISARI. Created + in 1971 for the United States Office of Emergency Preparedness, EMISARI + combined private electronic messages with a chat system, public postings, + voting, and a user directory. + + During the 1960s it was common to connect a large number of terminals to + a single, central computer. Connecting two computers together was rela‐ + tively unusual. This began to change with the development of the + ARPANET, the ancestor of today’s Internet. In 1971 Ray Tomlinson adapted + the SNDMSG program, originally developed for the University of California + at Berkeley timesharing system, to give it the ability to transmit a mes‐ + sage across the network into the mailbox of a user on a different com‐ + puter. For the first time it was necessary to specify the recipient’s + computer as well as an account name. Tomlinson decided that the under‐ + used commercial at ‘@’ would work to separate the two. + + Sending a message across the network was originally treated as a special + instance of transmitting a file, and so a MAIL command was included in + RFC 385 on file transfer in 1972. Because it was not always clear when + or where a message had come from, RFC 561 in 1973 aimed to formalize + electronic mail headers, including “from”, “date”, and “subject”. In + 1975 RFC 680 described fields to help with the transmission of messages + to multiple users, including “to”, “cc”, and “bcc”. In 1977 these fea‐ + tures and others went from best practices to a binding standard in RFC + 733. Queen Elizabeth II of England became the first head of state to + send electronic mail on March 26 1976 while ceremonially opening a build‐ + ing in the British Royal Signals and Radar Establishment (RSRE) in + Malvern. + +[1mAUTHORS[22m]8;:id=53;#\]8;;\ + Kurt Shoens, Edward Wang, Keith Bostic, Christos Zoulas, Gunnar Ritter. + S-nail is developed by Steffen Nurpmeso <s-mailx@lists.sdaoden.eu>. + +[1mCAVEATS[22m]8;:id=54;#\]8;;\ + [v15 behaviour may differ] Interrupting an operation via SIGINT aka + ‘control-C’ from anywhere else but a command prompt is very problematic + and likely to leave the program in an undefined state: many library func‐ + tions cannot deal with the [1msiglongjmp[22m([4m3[24m) that this software (still) per‐ + forms; even though efforts have been taken to address this, no sooner but + in v15 it will have been worked out: interruptions have not been disabled + in order to allow forceful breakage of hanging network connections, for + example (all this is unrelated to [4mignore[34m[24m[]8;;#451\451]8;;\][0m). + + The SMTP and POP3 protocol support of S-nail is very basic. Also, if it + fails to contact its upstream SMTP server, it will not make further at‐ + tempts to transfer the message at a later time (setting [4msave[34m[24m[]8;;#546\546]8;;\] [0mand + [4msendwait[34m[24m[]8;;#552\552]8;;\] [0mmay be useful). If this is a concern, it might be better + to set up a local SMTP server that is capable of message queuing. + +[1mBUGS[22m]8;:id=55;#\]8;;\ + When a network-based mailbox is open, directly changing to another net‐ + work-based mailbox of a different protocol (i.e., from POP3 to IMAP or + vice versa) will cause a “deadlock”. + + After deleting some message of a POP3 mailbox the header summary falsely + claims that there are no messages to display, one needs to perform a + scroll or dot movement to restore proper state. + + Please report bugs to the [4mcontact-mail[34m[24m[]8;;#402\402]8;;\] [0maddress, for example from + within s-nail: ‘? [1meval[34m[22m[]8;;#127\127]8;;\] [0m[1mmail[34m[22m[]8;;#224\224]8;;\] [0m$contact-mail’. Including the + [4mverbose[34m[24m[]8;;#616\616]8;;\] [0moutput of the command [1mversion[34m[22m[]8;;#305\305]8;;\] [0mmay be helpful: + + ? set escape=! verbose; vput version xy; unset verbose;\ + eval mail $contact-mail + Bug subject + !I xy + !. + + Information on the web at ‘$ s-nail -X ’echo $[4mcontact-web[34m[24m[]8;;#403\403]8;;\][0m; x’’. + +BSD March 26, 2022 BSD +R +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@02mta-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@02mta-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@02mta-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04osc8@00#________________________________________________________________________________________________________ ++6a +=____________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@02mta-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@02mta-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@02mta-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ @02On@00 @02terminal@00 @02control@00 @02and@00 @02line@00 @02editor@00$22[15]$FF__________________________________________________________:#___________________________________________________________________________________________________________ ++6a +=@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@02mta-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@02mta-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@02mta-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ @02On@00 @02terminal@00 @02control@00 @02and@00 @02line@00 @02editor@00$22[15]$FF__________________________________________________________ @02Coloured@00 @02display@00$22[16]$FF_____________________________________________________________________________:#___________________________________________________________________________________________________________ ++6a += @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@02mta-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@02mta-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@02mta-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ @02On@00 @02terminal@00 @02control@00 @02and@00 @02line@00 @02editor@00$22[15]$FF__________________________________________________________ @02Coloured@00 @02display@00$22[16]$FF_____________________________________________________________________________ @02Signed@00 @02and@00 @02encrypted@00 @02messages@00 @02with@00 @02S/MIME@00$22[17]$FF____________________________________________________:#___________________________________________________________________________________________________________ ++6a +=____________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@02mta-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@02mta-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@02mta-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ @02On@00 @02terminal@00 @02control@00 @02and@00 @02line@00 @02editor@00$22[15]$FF__________________________________________________________ @02Coloured@00 @02display@00$22[16]$FF_____________________________________________________________________________ @02Signed@00 @02and@00 @02encrypted@00 @02messages@00 @02with@00 @02S/MIME@00$22[17]$FF____________________________________________________ @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF__________________________________________________________:#___________________________________________________________________________________________________________ ++64 += @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ @02On@00 @02terminal@00 @02control@00 @02and@00 @02line@00 @02editor@00$22[15]$FF__________________________________________________________ @02Coloured@00 @02display@00$22[16]$FF_____________________________________________________________________________ @02Signed@00 @02and@00 @02encrypted@00 @02messages@00 @02with@00 @02S/MIME@00$22[17]$FF____________________________________________________ @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF__________________________________________________________ @02Encrypted@00 @02network@00 @02communication@00$22[19]$FF______________________________________________________________ @02Handling@00 @02spam@00$22[20]$FF________________________________________________________________________________ @02COMMANDS@00$22[21]$FF___________________________________________________________________________________________ @02Command@00 @02modifiers@00$22[22]$FF____________________________________________________________________________ @02Old-style@00 @02argument@00 @02quoting@00$22[23]$FF___________________________________________________________________ @02Shell-style@00 @02argument@00 @02quoting@00$22[24]$FF_________________________________________________________________ @02Shell-style@00 @02expansions@00$22[25]$FF_______________________________________________________________________ @02Message@00 @02list@00 @02arguments@00$22[26]$FF_______________________________________________________________________ @02Raw@00 @02data@00 @02arguments@00 @02for@00 @02codec@00 @02commands@00$22[27]$FF________________________________________________________ @02Filename@00 @02transformations@00$22[28]$FF_____________________________________________________________________ @02Commands@00$22[29]$FF_____________________________________________________________________________________ @02COMMAND@00 @02ESCAPES@00$22[30]$FF____________________________________________________________________________________ @02INTERNAL@00 @02VARIABLES@00$22[31]$FF_________________________________________________________________________________ @02Initial@00 @02settings@00$22[32]$FF_____________________________________________________________________________ @02Built-in@00 @02variables@00$22[33]$FF___________________________________________________________________________ @02ENVIRONMENT@00$22[34]$FF________________________________________________________________________________________ @02FILES@00$22[35]$FF______________________________________________________________________________________________ @02Resource@00 @02files@00$22[36]$FF_______________________________________________________________________________ @02The@00 @02mime.types@00 @02files@00$22[37]$FF_________________________________________________________________________:#___________________________________________________________________________________________________________ ++64 += @02Handling@00 @02spam@00$22[20]$FF________________________________________________________________________________ @02COMMANDS@00$22[21]$FF___________________________________________________________________________________________ @02Command@00 @02modifiers@00$22[22]$FF____________________________________________________________________________ @02Old-style@00 @02argument@00 @02quoting@00$22[23]$FF___________________________________________________________________ @02Shell-style@00 @02argument@00 @02quoting@00$22[24]$FF_________________________________________________________________ @02Shell-style@00 @02expansions@00$22[25]$FF_______________________________________________________________________ @02Message@00 @02list@00 @02arguments@00$22[26]$FF_______________________________________________________________________ @02Raw@00 @02data@00 @02arguments@00 @02for@00 @02codec@00 @02commands@00$22[27]$FF________________________________________________________ @02Filename@00 @02transformations@00$22[28]$FF_____________________________________________________________________ @02Commands@00$22[29]$FF_____________________________________________________________________________________ @02COMMAND@00 @02ESCAPES@00$22[30]$FF____________________________________________________________________________________ @02INTERNAL@00 @02VARIABLES@00$22[31]$FF_________________________________________________________________________________ @02Initial@00 @02settings@00$22[32]$FF_____________________________________________________________________________ @02Built-in@00 @02variables@00$22[33]$FF___________________________________________________________________________ @02ENVIRONMENT@00$22[34]$FF________________________________________________________________________________________ @02FILES@00$22[35]$FF______________________________________________________________________________________________ @02Resource@00 @02files@00$22[36]$FF_______________________________________________________________________________ @02The@00 @02mime.types@00 @02files@00$22[37]$FF_________________________________________________________________________ @02The@00 @02Mailcap@00 @02files@00$22[38]$FF____________________________________________________________________________ @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++64 += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________:#___________________________________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02The@00 @02.netrc@00 @02file@00$22[@0439@00]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#39 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[@0439@00]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[@0440@00]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#40 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[@0440@00]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[@0441@00]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#41 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[@0441@00]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[@0442@00]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#42 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[@0442@00]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++10 += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[@0441@00]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#41 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[@0441@00]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++10 += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[@0440@00]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#40 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[@0440@00]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++10 += @02The@00 @02.netrc@00 @02file@00$22[@0439@00]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________@04Link: \#39 (press RETURN)@00#___________________________________________________________________________________ ++f += @02The@00 @02.netrc@00 @02file@00$22[@0439@00]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________ Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ ^O#_________________________________________________________________________________________________________ ++10 += @02The@00 @02Mailcap@00 @02files@00$22[@0438@00]$FF____________________________________________________________________________ @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________@04Link: \#38 (press RETURN)@00#___________________________________________________________________________________ ++20 += @02The@00 @02Mailcap@00 @02files@00$22[@0438@00]$FF____________________________________________________________________________ @02The@00 @02.netrc@00 @02file@00$22[39]$FF______________________________________________________________________________ @02EXAMPLES@00$22[40]$FF___________________________________________________________________________________________ @02S/MIME@00 @02step@00 @02by@00 @02step@00$22[41]$FF__________________________________________________________________________ @02Using@00 @02CRLs@00 @02with@00 @02S/MIME@00 @02or@00 @02TLS@00$22[42]$FF________________________________________________________________ @02FAQ@00$22[43]$FF________________________________________________________________________________________________ @02S-nail@00 @02shortly@00 @02hangs@00 @02on@00 @02startup@00$22[44]$FF______________________________________________________________ @02I@00 @02cannot@00 @02login@00 @02to@00 @02Google@00 @02mail@00 @02(via@00 @02OAuth)@00$22[45]$FF____________________________________________________ @02But,@00 @02how@00 @02about@00 @02XOAUTH2@00 @02/@00 @02OAUTHBEARER?@00$22[46]$FF________________________________________________________ @02Not@00 @02"defunctional",@00 @02but@00 @02the@00 @02editor@00 @02key@00 @02does@00 @02not@00 @02work@00$22[47]$FF_________________________________________ @02Can@00 @02S-nail@00 @02git-send-email?@00$22[48]$FF___________________________________________________________________ @02Howto@00 @02handle@00 @02stale@00 @02dotlock@00 @02files@00$22[49]$FF_____________________________________________________________ @02IMAP@00 @02CLIENT@00$22[50]$FF________________________________________________________________________________________ @02SEE@00 @02ALSO@00$22[51]$FF___________________________________________________________________________________________ @02HISTORY@00$22[52]$FF____________________________________________________________________________________________ @02AUTHORS@00$22[53]$FF____________________________________________________________________________________________ @02CAVEATS@00$22[54]$FF____________________________________________________________________________________________ @02BUGS@00$22[55]$FF___________________________________________________________________________________________________________________________________________________________________________________________________________@01DESCRIPTION@00_________________________________________________________________________________________________ @01Warning\! @02v15-compat@00$22[615] $FF(with value) is default since v14.10.0,______________________________ and the manual expects this context; Most old (other context) docu‐______________________________ mentation has been removed. S-nail (S-nail) will see major changes______________________________ until v15.0 (circa 2023). Some backward incompatibilities cannot______________________________ be avoided, for example @02COMMANDS@00$22[21] $FFwill change to @02Shell-style@00______________________________ @02argument@00 @02quoting@00$22[24]$FF.________________________________________________________________________________________________________________________________________________________________________________________ S-nail provides a simple and friendly environment for sending and receiv‐______________________________ ing mail. It is intended to provide the functionality of the POSIX____________________________________ mailx(1)$22[683] $FFcommand, is MIME capable, and optionally offers extensions_______________________________ for line editing, S/MIME, SMTP and POP3, among others. Through many___________________________________ @02COMMANDS@00$22[21] $FFand @02INTERNAL@00 @02VARIABLES@00$22[31] $FFusers are given tools for email________________________________ appraisal and management, as well as increasingly powerful, reliable___________________________________ scripting capabilities.____________________________________________________________________________________________________________________________________________________________________________________________ @01Options@00__________________________________________________________________________________________________ @01-:@00 @02spec@00, @01--resource-files@00=..___________________________________________________________________________:#___________________________________________________________________________________________________________ ++20 += Controls loading (as via @01source@00$22[284]$FF) of @02Resource@00 @02files@00$22[36]$FF._________________________________ @02spec@00 consists of case-insensitive letters: ‘s’ for the system-_______________________________ wide @02s-nail.rc@00$22[659]$FF, ‘u’ for the personal file MAILRC$22[636]$FF___________________________________ (@02˜/.mailrc@00$22[660]$FF), and ‘x’ for a compiled-in copy of the (up‐_________________________________ stream) system-wide file. The letters ‘-’ and ‘/’ disable us‐_______________________________ age of resource files. Order matters, default is ‘su’. This________________________________ option overrides @01-n@00$22[76]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-A@00 @02name@00, @01--account@00=..__________________________________________________________________________________ Activate user @01account@00$22[144] @02$FFname@00 after program startup is com‐________________________________ plete (resource files loaded, only @01-X@00$22[87] $FFcommands to follow),_______________________________ and switch to its @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(@02inbox@00$22[453]$FF).__________________________________ Upon failure the program e@01xit@00$22[311]$FFs if used non-interactively,_______________________________ or if any of @02errexit@00$22[419] $FFor @02posix@00$22[523] $FFare set._________________________________________________________________________________________________________________________________________________________ @01-a@00 @02file@00[@02=@00[\!]input-charset[@02\#@00[\!]output-charset]], @01--attach@00=..____________________________________________ (Send mode) Attach @02file@00, subject to tilde expansion (see_____________________________________ @02Filename@00 @02transformations@00$22[28] $FFand @01folder@00$22[203]$FF). In @02Compose@00___________________________________ @02mode@00$22[8] $FFthe @02COMMAND@00 @02ESCAPES@00$22[30] @01$FF˜\@@00$22[320] $FFand especially the___________________________________ scriptable @01˜ˆ@00$22[322] $FFprovide alternatives for attaching files._____________________________________________________________________________________________________________________________________________ If @02file@00 is not accessible but contains an equal-sign ‘=’ a___________________________________ character set specification is split off. If only an input one______________________________ is given it is fixated and no conversion is applied; an empty,_______________________________ or the special string hyphen-minus ‘-’ means @02ttycharset@00$22[611]$FF.________________________________ If an output one is given the conversion is performed on-the-________________________________ fly, not considering file type nor content; however, empty___________________________________ string or hyphen-minus ‘-’ enforce the default @02Character@00_____________________________________ @02sets@00$22[12] $FFconversion (‘-a file’, ‘-a file=\#’, and ‘-a file=-\#-’_______________________________ are identical), later applied after MIME-classifying @02file@00 (@02HTML@00______________________________ @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00 @02files@00$22[37]$FF).____________________________________ Without ‘,+iconv,’ in @02features@00$22[425] $FFonly this mode is avail‐_________________________________ able. The character set names may be prefixed with exclamation______________________________ mark ‘\!’ to enforce base64 @02mime-encoding@00$22[479] $FFof the attach‐_________________________________ ment.____________________________________________________________________________________________________________________________________________________________________________________________________ @01-b@00 @02addr@00, @01--bcc@00=..______________________________________________________________________________________:#___________________________________________________________________________________________________________ ++20 += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.________________________________________________________________:#___________________________________________________________________________________________________________ ++6a += invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6a += See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6a +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________:#___________________________________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++e +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[@04409@00]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#409 (press RETURN)@00#__________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[@04409@00]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++e +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[@048@00] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#8 (press RETURN)@00#____________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[@048@00] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++e +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[@04322@00] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#322 (press RETURN)@00#__________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[@04322@00] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++e +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[@0430@00]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#30 (press RETURN)@00#___________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[@0430@00]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++e +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[@04178@00] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#178 (press RETURN)@00#__________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[@04178@00] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++e +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[@0460@00]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#60 (press RETURN)@00#___________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[@0460@00]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[@04178@00] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#178 (press RETURN)@00#__________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[@04178@00] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[@0430@00]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#30 (press RETURN)@00#___________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[@0430@00]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[@04322@00] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#322 (press RETURN)@00#__________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[@04322@00] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[@048@00] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#8 (press RETURN)@00#____________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[@048@00] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[@04409@00]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________@04Link: \#409 (press RETURN)@00#__________________________________________________________________________________ ++f +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[@04409@00]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ ^O#_________________________________________________________________________________________________________ ++10 += See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[@047@00]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________@04Link: \#7 (press RETURN)@00#____________________________________________________________________________________ ++f += See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[@047@00]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++10 += mark ‘\!’ to enforce base64 @02mime-encoding@00$22[@04479@00] $FFof the attach‐_________________________________ ment.____________________________________________________________________________________________________________________________________________________________________________________________________ @01-b@00 @02addr@00, @01--bcc@00=..______________________________________________________________________________________ (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._____________________________________@04Link: \#479 (press RETURN)@00#__________________________________________________________________________________ ++f += mark ‘\!’ to enforce base64 @02mime-encoding@00$22[@04479@00] $FFof the attach‐_________________________________ ment.____________________________________________________________________________________________________________________________________________________________________________________________________ @01-b@00 @02addr@00, @01--bcc@00=..______________________________________________________________________________________ (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._____________________________________ ^O#_________________________________________________________________________________________________________ ++10 += Without ‘,+iconv,’ in @02features@00$22[@04425@00] $FFonly this mode is avail‐_________________________________ able. The character set names may be prefixed with exclamation______________________________ mark ‘\!’ to enforce base64 @02mime-encoding@00$22[479] $FFof the attach‐_________________________________ ment.____________________________________________________________________________________________________________________________________________________________________________________________________ @01-b@00 @02addr@00, @01--bcc@00=..______________________________________________________________________________________ (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________@04Link: \#425 (press RETURN)@00#__________________________________________________________________________________ ++20 += Without ‘,+iconv,’ in @02features@00$22[@04425@00] $FFonly this mode is avail‐_________________________________ able. The character set names may be prefixed with exclamation______________________________ mark ‘\!’ to enforce base64 @02mime-encoding@00$22[479] $FFof the attach‐_________________________________ ment.____________________________________________________________________________________________________________________________________________________________________________________________________ @01-b@00 @02addr@00, @01--bcc@00=..______________________________________________________________________________________ (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________:#___________________________________________________________________________________________________________ ++20 += wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________:#___________________________________________________________________________________________________________ ++f += wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ ^O#_________________________________________________________________________________________________________ ++e += wise. Control message selection by @02Specifying@00 @02messages@00$22[@0414@00] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________@04Link: \#14 (press RETURN)@00#___________________________________________________________________________________ ++f += wise. Control message selection by @02Specifying@00 @02messages@00$22[@0414@00] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ ^O#_________________________________________________________________________________________________________ ++e += wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________@04Link: \#72 (press RETURN)@00#___________________________________________________________________________________ ++6b += given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________:#___________________________________________________________________________________________________________ ++6b += If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________:#___________________________________________________________________________________________________________ ++6b += @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________:#___________________________________________________________________________________________________________ ++6b +=____________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.________________________________________:#___________________________________________________________________________________________________________ ++6b += @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b +=____________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions._______________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________:#___________________________________________________________________________________________________________ ++6b += Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b +=____________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._____________________________________________________________:#___________________________________________________________________________________________________________ ++6b += [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________:#___________________________________________________________________________________________________________ ++6b += @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________:#___________________________________________________________________________________________________________ ++6b +=____________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________:#___________________________________________________________________________________________________________ ++6b += ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________:#___________________________________________________________________________________________________________ ++6b += (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________:#___________________________________________________________________________________________________________ ++6b += @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b +=____________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.____________________________________________________:#___________________________________________________________________________________________________________ ++6b += @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________:#___________________________________________________________________________________________________________ ++6b += custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________:#___________________________________________________________________________________________________________ ++6b += multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________:#___________________________________________________________________________________________________________ ++6b += Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________:#___________________________________________________________________________________________________________ ++6b += Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________:#___________________________________________________________________________________________________________ ++6b += Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________:#___________________________________________________________________________________________________________ ++6b += @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________:#___________________________________________________________________________________________________________ ++6b +=____________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________ Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________:#___________________________________________________________________________________________________________ ++6b += See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________ @01-f@00, @01--file@00_____________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.____________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.________________________________________________________________:#___________________________________________________________________________________________________________ ++6b += @01-b@00 @02addr@00, @01--bcc@00=..______________________________________________________________________________________ (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________:#___________________________________________________________________________________________________________ ++6a += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.________________________________________________________________:#___________________________________________________________________________________________________________ ++f += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[@0472@00]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[@04537@00]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.________________________________________________________________@04Link: \#537 (press RETURN)@00#__________________________________________________________________________________ ++f += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[@04537@00]$FF,______________________________ but honouring @02outfolder@00$22[493]$FF.________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[@04493@00]$FF.________________________________________________________________@04Link: \#493 (press RETURN)@00#__________________________________________________________________________________ ++f += (Send mode) Send a blind carbon copy of the message to @02addr@00,_________________________________ invisible for other recipients. May be used multiple times._________________________________ See also @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF.___________________________________________________________________________________________________________________________________________________ @01-C@00 @02"name:@00 @02content"@00, @01--custom-header@00=.._________________________________________________________________ Create a custom header @02name@00 that lasts for the entire session._______________________________ Content follows after a colon ‘:’, for example ‘-C "Blah:____________________________________ Neminem laede; imo omnes, quantum potes, juva"’. May be used________________________________ multiple times; @02name@00 may not be a standard header. Adjustable_______________________________ custom headers can be created via @02customhdr@00$22[409]$FF; in @02Compose@00_________________________________ @02mode@00$22[8] @01$FF˜ˆ@00$22[322] $FF(@02COMMAND@00 @02ESCAPES@00$22[30]$FF) and @01digmsg@00$22[178] $FFare the________________________________ most powerful options.___________________________________________________________________________________________________________________________________________________________________________________ @01-c@00 @02addr@00, @01--cc@00=.._______________________________________________________________________________________ (Send mode) Like @01-b@00$22[60]$FF, but adds carbon copies (visible recip‐______________________________ ients).__________________________________________________________________________________________________________________________________________________________________________________________________ @01-D@00, @01--disconnected@00_____________________________________________________________________________________ [Option] Startup with @02disconnected@00$22[676] @01$FFset@00$22[271]$FF.________________________________________________________________________________________________________________________________________________________ @01-d@00, @01--debug@00____________________________________________________________________________________________ Enter a debug-only sandbox mode by setting @02debug@00$22[412]$FF, as via________________________________ ‘@01-S@00$22[80] @02$FFdebug@00’ or ‘@01set@00$22[271] @02$FFdebug@00’. Also see @01-v@00$22[86]$FF.____________________________________________________________________________________________________________________________________________________ @01-E@00, @01--discard-empty-messages@00___________________________________________________________________________ (Send mode) @01set@00$22[271] @02$FFskipemptybody@00$22[558] $FFand discard messages_________________________________ with an empty message part body, successfully.___________________________________________________________________________________________________________________________________________________________ @01-e@00, @01--check-and-exit@00___________________________________________________________________________________ If messages are present (in the system @02inbox@00$22[453] $FFor the one_________________________________ given by @01-f@00$22[68]$FF) exit with status zero 0, with non-zero other‐_______________________________ wise. Control message selection by @02Specifying@00 @02messages@00$22[14] $FFvia______________________________ @01-L@00$22[72]$FF. Quickrun: does not open an interactive session._________________________________________________________________________________________________________________________________________________ @01-F@00 (Send mode) Save the message in a file named after the local_________________________________ part of the first recipient’s address, overwriting @02record@00$22[537]$FF,______________________________ but honouring @02outfolder@00$22[@04493@00]$FF.________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += Open the user’s @02secondary@00 @02mailbox@00$22[@04137@00] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________@04Link: \#137 (press RETURN)@00#__________________________________________________________________________________ ++f += Open the user’s @02secondary@00 @02mailbox@00$22[@04137@00] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ ^O#_________________________________________________________________________________________________________ ++e += Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[@04638@00]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________@04Link: \#638 (press RETURN)@00#__________________________________________________________________________________ ++f += Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[@04638@00]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ ^O#_________________________________________________________________________________________________________ ++e += Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[@04136@00] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________@04Link: \#136 (press RETURN)@00#__________________________________________________________________________________ ++f += Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[@04136@00] $FF(note______________________________ @02hold@00$22[446]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ ^O#_________________________________________________________________________________________________________ ++e += Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[@04446@00]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________@04Link: \#446 (press RETURN)@00#__________________________________________________________________________________ ++f += Open the user’s @02secondary@00 @02mailbox@00$22[137] $FFMBOX$22[638]$FF, or a given_________________________________ argument @02file@00, instead of the @02primary@00 @02system@00 @02mailbox@00$22[136] $FF(note______________________________ @02hold@00$22[@04446@00]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ ^O#_________________________________________________________________________________________________________ ++f += @02hold@00 (Boolean) This setting controls whether messages are held in_________________________________ the system @02inbox@00$22[453]$FF, and it is set by default._________________________________________________________________________________________________________________________________________________________ @02hostname@00 Used instead of the value obtained from uname(3)$22[737] $FFand____________________________________ getaddrinfo(3)$22[738] $FFas the hostname when expanding local ad‐_________________________________ dresses, for example in ‘From:’ (also see @02On@00 @02sending@00 @02mail,@00 @02and@00_______________________________ @02non-interactive@00 @02mode@00$22[7]$FF, for expansion of addresses that have a______________________________ valid user-, but no domain name in angle brackets). If either_______________________________ of @02from@00$22[436] $FFor this variable is set the message and MIME part_______________________________ related unique ID fields ‘Message-ID:’ and ‘Content-ID:’ will________________________________ be created (except when disallowed by @02message-id-disable@00$22[472]$FF________________________________ or @02stealthmua@00$22[590]$FF). If the [Option]al IDNA support is avail‐_______________________________ able (see @02idna-disable@00$22[448]$FF) variable assignment is aborted__________________________________ when a necessary conversion fails._______________________________________________________________________________________________________________________________________________________________________ Setting it to the empty string will cause the normal hostname________________________________ to be used, but nonetheless enables creation of said ID fields.______________________________ One should produce some test messages with the desired combina‐______________________________ tion of @02hostname@00, and/or @02from@00$22[436]$FF, @02sender@00$22[551]$FF, @02smtp-from@00$22[574]$FF______________________________ etc. first.______________________________________________________________________________________________________________________________________________________________________________________________ @02idna-disable@00___________________________________________________________________________________________ (Boolean)[Option] Can be used to turn off the automatic conver‐______________________________ sion of domain names according to the rules of IDNA (interna‐________________________________ tionalized domain names for applications). Since the IDNA code______________________________ assumes that domain names are specified with the_____________________________________________ @02ttycharset@00$22[611] $FFcharacter set, an UTF-8 locale charset is re‐________________________________ quired to represent all possible international domain names__________________________________ (before conversion, that is).____________________________________________________________________________________________________________________________________________________________________________ @02ifs@00 The input field separator that is used ([v15 behaviour may dif‐______________________________ fer] by some functions) to determine where to split input data.__________________________________________________________________________________________________________________________________________ 1. Unsetting is treated as assigning the default value,_______________________________ ‘ \\t\\n’.___________________________________________________________________________ 2. If set to the empty value, no field splitting will be______________________________ performed._________________________________________________________________________:#___________________________________________________________________________________________________________ ++f += @02hold@00 (Boolean) This setting controls whether messages are held in_________________________________ the system @02inbox@00$22[453]$FF, and it is set by default._________________________________________________________________________________________________________________________________________________________ @02hostname@00 Used instead of the value obtained from uname(3)$22[737] $FFand____________________________________ getaddrinfo(3)$22[738] $FFas the hostname when expanding local ad‐_________________________________ dresses, for example in ‘From:’ (also see @02On@00 @02sending@00 @02mail,@00 @02and@00_______________________________ @02non-interactive@00 @02mode@00$22[7]$FF, for expansion of addresses that have a______________________________ valid user-, but no domain name in angle brackets). If either_______________________________ of @02from@00$22[436] $FFor this variable is set the message and MIME part_______________________________ related unique ID fields ‘Message-ID:’ and ‘Content-ID:’ will________________________________ be created (except when disallowed by @02message-id-disable@00$22[472]$FF________________________________ or @02stealthmua@00$22[590]$FF). If the [Option]al IDNA support is avail‐_______________________________ able (see @02idna-disable@00$22[448]$FF) variable assignment is aborted__________________________________ when a necessary conversion fails._______________________________________________________________________________________________________________________________________________________________________ Setting it to the empty string will cause the normal hostname________________________________ to be used, but nonetheless enables creation of said ID fields.______________________________ One should produce some test messages with the desired combina‐______________________________ tion of @02hostname@00, and/or @02from@00$22[436]$FF, @02sender@00$22[551]$FF, @02smtp-from@00$22[574]$FF______________________________ etc. first.______________________________________________________________________________________________________________________________________________________________________________________________ @02idna-disable@00___________________________________________________________________________________________ (Boolean)[Option] Can be used to turn off the automatic conver‐______________________________ sion of domain names according to the rules of IDNA (interna‐________________________________ tionalized domain names for applications). Since the IDNA code______________________________ assumes that domain names are specified with the_____________________________________________ @02ttycharset@00$22[611] $FFcharacter set, an UTF-8 locale charset is re‐________________________________ quired to represent all possible international domain names__________________________________ (before conversion, that is).____________________________________________________________________________________________________________________________________________________________________________ @02ifs@00 The input field separator that is used ([v15 behaviour may dif‐______________________________ fer] by some functions) to determine where to split input data.__________________________________________________________________________________________________________________________________________ 1. Unsetting is treated as assigning the default value,_______________________________ ‘ \\t\\n’.___________________________________________________________________________ 2. If set to the empty value, no field splitting will be______________________________ performed._________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++c += @02hold@00$22[@04446@00]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ @02message-inject-head@00$22[473] $FFand @02message-inject-tail@00$22[474]$FF. Also_________________________________ see @01-m@00$22[74]$FF, @01-q@00$22[77]$FF, @01-t@00$22[83]$FF.__________________________________________________________________:#___________________________________________________________________________________________________________ ++f += @02hold@00$22[@04446@00]$FF, @02keepsave@00$22[457]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ @02message-inject-head@00$22[473] $FFand @02message-inject-tail@00$22[474]$FF. Also_________________________________ see @01-m@00$22[74]$FF, @01-q@00$22[77]$FF, @01-t@00$22[83]$FF.__________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02hold@00$22[446]$FF, @02keepsave@00$22[@04457@00]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ @02message-inject-head@00$22[473] $FFand @02message-inject-tail@00$22[474]$FF. Also_________________________________ see @01-m@00$22[74]$FF, @01-q@00$22[77]$FF, @01-t@00$22[83]$FF.__________________________________________________________________@04Link: \#457 (press RETURN)@00#__________________________________________________________________________________ ++f += @02hold@00$22[446]$FF, @02keepsave@00$22[@04457@00]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ @02message-inject-head@00$22[473] $FFand @02message-inject-tail@00$22[474]$FF. Also_________________________________ see @01-m@00$22[74]$FF, @01-q@00$22[77]$FF, @01-t@00$22[83]$FF.__________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++f += @02keepsave@00 (Boolean) When a message is saved it is usually discarded from_______________________________ the originating folder when S-nail is quit. This setting____________________________________ causes all saved message to be retained._________________________________________________________________________________________________________________________________________________________________ @02line-editor-config@00_____________________________________________________________________________________ [Option] Some aspects of the @02MLE@00$22[93] $FFare dynamically ad‐_____________________________________ justable. Interpreted as a comma-separated list of case-insen‐______________________________ sitive keywords. ‘quote-rndtrip’ denotes the default setting________________________________ of @01mle-quote-rndtrip@00$22[108]$FF. ‘srch-case’ defines whether______________________________________ @01mle-hist-srch-bwd@00$22[109] $FFand @01mle-hist-srch-fwd@00$22[110] $FFmatch case-________________________________ insensitively, ‘srch-any’ whether they match any substring or________________________________ only at the beginning of lines, and [Option]ally ‘srch-regex’________________________________ will instead search through history based on a regular expres‐_______________________________ sion. The cursor is placed at the end of the expanded history_______________________________ search entry, with ‘srch-pos0’ only if it fits on the line:__________________________________ like this the command name is always visible.____________________________________________________________________________________________________________________________________________________________ @02line-editor-cpl-word-breaks@00____________________________________________________________________________ [Option] List of bytes which are used by the @01mle-complete@00$22[102]$FF_______________________________ tabulator completion to decide where word boundaries exist, by_______________________________ default ‘"’\@=;|:’ [v15 behaviour may differ] This mechanism is_______________________________ yet restricted.__________________________________________________________________________________________________________________________________________________________________________________________ @02line-editor-disable@00____________________________________________________________________________________ (Boolean) Turn off any line editing capabilities (from S-nails_______________________________ POW, see @02On@00 @02terminal@00 @02control@00 @02and@00 @02line@00 @02editor@00$22[15] $FFfor more).______________________________________________________________________________________________________________________________________________ @02line-editor-no-defaults@00________________________________________________________________________________ (Boolean)[Option] Do not establish any default key binding.______________________________________________________________________________________________________________________________________________ @02log-prefix@00_____________________________________________________________________________________________ Error log message prefix string (‘s-nail: ’).____________________________________________________________________________________________________________________________________________________________ @02mailbox-basename@00_______________________________________________________________________________________ (Read-only) The “last component” of the name of the current__________________________________ mailbox (@01folder@00$22[203]$FF).___________________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++20 += @02mailbox-display@00________________________________________________________________________________________ (Read-only) The name of the current mailbox (@01folder@00$22[203]$FF), pos‐______________________________ sibly abbreviated for display purposes.__________________________________________________________________________________________________________________________________________________________________ @02mailbox-resolved@00_______________________________________________________________________________________ (Read-only) The fully resolved path of the current mailbox.______________________________________________________________________________________________________________________________________________ @02mailcap-disable@00________________________________________________________________________________________ (Boolean)[Option] Turn off consideration of MIME type handlers_______________________________ from, and implicit loading of @02The@00 @02Mailcap@00 @02files@00$22[38]$FF._____________________________________________________________________________________________________________________________________________________ @02mailx-extra-rc@00_________________________________________________________________________________________ An additional startup file that is loaded as the last of the_________________________________ @02Resource@00 @02files@00$22[36]$FF. Use this file for commands that are not_________________________________ understood by other POSIX mailx(1)$22[739] $FFimplementations, i.e.,_______________________________ mostly anything which is not covered by @02Initial@00 @02settings@00$22[32]$FF.____________________________________________________________________________________________________________________________________________ @02markanswered@00___________________________________________________________________________________________ (Boolean) When a message is replied to and this variable is__________________________________ set, it is marked as having been @01answered@00$22[151]$FF. See the sec‐________________________________ tion @02Message@00 @02states@00$22[13]$FF._________________________________________________________________________________________________________________________________________________________________________________ @02mbox-fcc-and-pcc@00_______________________________________________________________________________________ (Boolean) By default all file and pipe message recipients (see_______________________________ @02expandaddr@00$22[422]$FF) will be fed valid MBOX database entry message_______________________________ data (see @01folder@00$22[203]$FF, @02mbox-rfc4155@00$22[470]$FF), and existing file_________________________________ targets will become extended in compliance to RFC 4155. If__________________________________ this variable is unset then a plain standalone RFC 5322 message______________________________ will be written, and existing file targets will be overwritten.__________________________________________________________________________________________________________________________________________ @02mbox-rfc4155@00___________________________________________________________________________________________ (Boolean) When opening MBOX mailbox databases, and in order to_______________________________ achieve compatibility with old software, the very tolerant___________________________________ POSIX standard rules for detecting message boundaries (so-___________________________________ called ‘From_’ lines) are used instead of the stricter rules_________________________________ from the standard RFC 4155. This behaviour can be switched by_______________________________ setting this variable._______________________________________________________________________:#___________________________________________________________________________________________________________ ++20 +=____________________________________________________________________________________________________________ This may temporarily be handy when S-nail complains about in‐________________________________ valid ‘From_’ lines when opening a MBOX: in this case setting________________________________ this variable and re-opening the mailbox in question may cor‐________________________________ rect the result. If so, copying the entire mailbox to some__________________________________ other file, as in ‘copy * SOME-FILE’, will perform proper, all-______________________________ compatible ‘From_’ quoting for all detected messages, resulting______________________________ in a valid MBOX mailbox. ([v15 behaviour may differ] The bet‐_______________________________ ter and non-destructive approach is to re-encode invalid mes‐________________________________ sages, as if it would be created anew, instead of mangling the_______________________________ ‘From_’ lines; this requires the structural code changes of the______________________________ v15 rewrite.) Finally the variable can be unset again:__________________________________________________________________________________________________________________________________________________ ? define mboxfix {_____________________________________________________________________ local set mbox-rfc4155; File "\${1}"; copy * "\${2}"___________________________________ }______________________________________________________________________________________ ? call mboxfix /tmp/bad.mbox /tmp/good.mbox________________________________________________________________________________________________________________________________________________________ @02memdebug@00 (Boolean) Internal development variable. Auto-enabled if____________________________________ @02debug@00$22[412] $FFis set, but can individually be disabled._____________________________________________________________________________________________________________________________________________________ @02message-id-disable@00_____________________________________________________________________________________ (Boolean) By setting this variable the generation of_________________________________________ ‘Message-ID:’ and ‘Content-ID:’ message and MIME part headers________________________________ can be completely suppressed, effectively leaving this task up_______________________________ to the @02mta@00$22[482]$FF. Note that according to RFC 5321 a SMTP server______________________________ is not required to add this field by itself, so it should be_________________________________ ensured that it accepts messages without ‘Message-ID’.___________________________________________________________________________________________________________________________________________________ @02message-inject-head@00____________________________________________________________________________________ A string to put at the beginning of each new message, followed_______________________________ by a newline. [Obsolete] The escape sequences tabulator ‘\\t’________________________________ and newline ‘\\n’ are understood: expand when @01set@00$22[271]$FFing in‐_________________________________ stead (@02v15-compat@00$22[615]$FF, @01wysh@00$22[134]$FF).______________________________________________________________________________________________________________________________________________________________________ @02message-inject-tail@00____________________________________________________________________________________ A string to put at the end of each new message, followed by a________________________________:#___________________________________________________________________________________________________________ ++20 += newline. [Obsolete] The escape sequences tabulator ‘\\t’ and_________________________________ newline ‘\\n’ are understood: expand when @01set@00$22[271]$FFing instead_________________________________ (@02v15-compat@00$22[615]$FF, @01wysh@00$22[134]$FF). Also see @02on-compose-leave@00$22[497]$FF.___________________________________________________________________________________________________________________________________________ ? set sign=\$’\\n Tony’ Sign=\$’\\n Tony\\n I am fixing things\!’________________________ ? set message-inject-tail=\${Sign}__________________________________________________________________________________________________________________________________________________________________ @02metoo@00 (Boolean) Usually, when an @01alias@00$22[147] $FFexpansion contains the_________________________________ sender, the sender is removed from the expansion. Setting this______________________________ option suppresses these removals. Note that a set @02metoo@00$22[475]$FF________________________________ also causes a ‘-m’ option to be passed through to the @02mta@00$22[482]$FF;______________________________ though most of the modern MTAs no longer document this flag, no______________________________ MTA is known which does not support it (for historical compati‐______________________________ bility)._________________________________________________________________________________________________________________________________________________________________________________________________ @02mime-allow-text-controls@00_______________________________________________________________________________ (Boolean) When sending messages, each part of the message is_________________________________ MIME-inspected in order to classify the ‘Content-Type:’ and__________________________________ ‘Content-Transfer-Encoding:’ (see @02mime-encoding@00$22[479]$FF) that is________________________________ required to send this part over mail transport, i.e., a compu‐_______________________________ tation rather similar to what the file(1)$22[740] $FFcommand produces______________________________ when used with the ‘--mime’ option.______________________________________________________________________________________________________________________________________________________________________ This classification however treats text files which are encoded______________________________ in UTF-16 (seen for HTML files) and similar character sets as________________________________ binary octet-streams, forcefully changing any ‘text/plain’ or________________________________ ‘text/html’ specification to ‘application/octet-stream’: If__________________________________ that actually happens a yet unset charset MIME parameter is set______________________________ to ‘binary’, effectively making it impossible for the receiving______________________________ MUA to automatically interpret the contents of the part._________________________________________________________________________________________________________________________________________________ If this variable is set, and the data was unambiguously identi‐______________________________ fied as text data at first glance (by a ‘.txt’ or ‘.html’ file_______________________________ extension), then the original ‘Content-Type:’ will not be over‐______________________________ written._________________________________________________________________________________________________________________________________________________________________________________________________ @02mime-alternative-favour-rich@00___________________________________________________________________________:#___________________________________________________________________________________________________________ ++f += newline. [Obsolete] The escape sequences tabulator ‘\\t’ and_________________________________ newline ‘\\n’ are understood: expand when @01set@00$22[271]$FFing instead_________________________________ (@02v15-compat@00$22[615]$FF, @01wysh@00$22[134]$FF). Also see @02on-compose-leave@00$22[497]$FF.___________________________________________________________________________________________________________________________________________ ? set sign=\$’\\n Tony’ Sign=\$’\\n Tony\\n I am fixing things\!’________________________ ? set message-inject-tail=\${Sign}__________________________________________________________________________________________________________________________________________________________________ @02metoo@00 (Boolean) Usually, when an @01alias@00$22[147] $FFexpansion contains the_________________________________ sender, the sender is removed from the expansion. Setting this______________________________ option suppresses these removals. Note that a set @02metoo@00$22[475]$FF________________________________ also causes a ‘-m’ option to be passed through to the @02mta@00$22[482]$FF;______________________________ though most of the modern MTAs no longer document this flag, no______________________________ MTA is known which does not support it (for historical compati‐______________________________ bility)._________________________________________________________________________________________________________________________________________________________________________________________________ @02mime-allow-text-controls@00_______________________________________________________________________________ (Boolean) When sending messages, each part of the message is_________________________________ MIME-inspected in order to classify the ‘Content-Type:’ and__________________________________ ‘Content-Transfer-Encoding:’ (see @02mime-encoding@00$22[479]$FF) that is________________________________ required to send this part over mail transport, i.e., a compu‐_______________________________ tation rather similar to what the file(1)$22[740] $FFcommand produces______________________________ when used with the ‘--mime’ option.______________________________________________________________________________________________________________________________________________________________________ This classification however treats text files which are encoded______________________________ in UTF-16 (seen for HTML files) and similar character sets as________________________________ binary octet-streams, forcefully changing any ‘text/plain’ or________________________________ ‘text/html’ specification to ‘application/octet-stream’: If__________________________________ that actually happens a yet unset charset MIME parameter is set______________________________ to ‘binary’, effectively making it impossible for the receiving______________________________ MUA to automatically interpret the contents of the part._________________________________________________________________________________________________________________________________________________ If this variable is set, and the data was unambiguously identi‐______________________________ fied as text data at first glance (by a ‘.txt’ or ‘.html’ file_______________________________ extension), then the original ‘Content-Type:’ will not be over‐______________________________ written._________________________________________________________________________________________________________________________________________________________________________________________________ @02mime-alternative-favour-rich@00___________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++c += @02hold@00$22[446]$FF, @02keepsave@00$22[@04457@00]$FF). @02file@00 is not an option argument, but______________________________ taken from the command line after command line option process‐_______________________________ ing. It is inspected for protocol specifications and undergoes______________________________ @02Filename@00 @02transformations@00$22[28]$FF, as if given to @01folder@00$22[203]$FF. As a______________________________ special case that requires read-only mode (@01-R@00$22[78]$FF) hyphen-minus______________________________ ‘-’ denotes standard input (in MBOX or EML format) that can__________________________________ also be a pipe instead of a regular file.________________________________________________________________________________________________________________________________________________________________ @01-H@00, @01--header-summary@00___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof the given @01folder@00$22[203] $FF(de‐______________________________ pendent on @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via______________________________ @01-f@00$22[68]$FF), then exit. @02showlast@00$22[553] $FFis ignored. Control message______________________________ selection by @02Specifying@00 @02messages@00$22[14] $FFvia @01-L@00$22[72]$FF. Quickrun:__________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-h@00, @01--help@00_____________________________________________________________________________________________ Show a brief usage summary; use @01--long-help @00to list long op‐_________________________________ tions.___________________________________________________________________________________________________________________________________________________________________________________________________ @01-i@00 @01set@00$22[271] @02$FFignore@00$22[451] $FFto ignore tty interrupt signals.____________________________________________________________________________________________________________________________________________________ @01-L@00 @02spec@00, @01--search@00=..___________________________________________________________________________________ Display a summary of @01headers@00$22[214] $FFof messages that match @02spec@00________________________________ (@02Specifying@00 @02messages@00$22[14]$FF) in the @01folder@00$22[203] $FF(dependent on___________________________________ @01-u@00$22[84]$FF, @02inbox@00$22[453] $FFor MAIL$22[634]$FF, or as specified via @01-f@00$22[68]$FF),________________________________ then exit. @02showlast@00$22[553] $FFis ignored. Nothing is displayed__________________________________ with @01-e@00$22[66]$FF, only the exit status denotes matches. Quickrun:________________________________ does not open an interactive session. Tip: COLUMNS$22[624] $FFcan be______________________________ honoured in batch mode (@01-\#@00$22[90]$FF)._________________________________________________________________________________________________________________________________________________________________________ @01-M@00 @02type@00 (Send mode) Will flag standard input with MIME ‘Content-Type:’_______________________________ @02type@00 (@02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF, @02The@00 @02mime.types@00_____________________________________ @02files@00$22[37]$FF), and use it as the main message body. [v15 behav‐________________________________ iour may differ] Using this option will bypass processing of_________________________________ @02message-inject-head@00$22[473] $FFand @02message-inject-tail@00$22[474]$FF. Also_________________________________ see @01-m@00$22[74]$FF, @01-q@00$22[77]$FF, @01-t@00$22[83]$FF.__________________________________________________________________:#___________________________________________________________________________________________________________ ++20 +=____________________________________________________________________________________________________________ @01-m@00 @02file@00 (Send mode) Initialize the message body from MIME classified_________________________________ @02file@00. [v15 behaviour may differ] Using this option will bypass______________________________ processing of @02message-inject-head@00$22[473] $FFand___________________________________________________ @02message-inject-tail@00$22[474]$FF. Also see @01-q@00$22[77]$FF, @01-M@00$22[73]$FF, @01-t@00$22[83]$FF.______________________________________________________________________________________________________________________________________________ @01-N@00, @01--no-header-summary@00________________________________________________________________________________ @01unset@00$22[272] @02$FFheader@00$22[438] $FFto inhibit displaying the summary of__________________________________ @01headers@00$22[214] $FFwhen opening a @01folder@00$22[203]$FF._________________________________________________________________________________________________________________________________________________________________ @01-n@00 Inhibit reading the system-wide @02s-nail.rc@00$22[659]$FF.__________________________________________________________________________________________________________________________________________________________ @01-q@00 @02file@00, @01--quote-file@00=.._______________________________________________________________________________ (Send mode) Initialize the message body from @02file@00; only non-in‐______________________________ teractively this may denote standard input (hyphen-minus ‘-’)._______________________________ Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-t@00$22[83]$FF._________________________________________________________________________________________________________________________________________________________________________ @01-R@00, @01--read-only@00________________________________________________________________________________________ Any mailbox will be opened read-only as via @01Folder@00$22[202]$FF._________________________________________________________________________________________________________________________________________________ @01-r@00 @02from-addr@00, @01--from-address@00=..________________________________________________________________________ The RFC 5321 reverse-path used for relaying and delegating mes‐______________________________ sages, for example to report back delivery errors, is derived________________________________ from @02from@00$22[436] $FF(or @02sender@00$22[551]$FF). However, a file-based (local)______________________________ @02mta@00$22[482] $FF(Message-Transfer-Agent) will instead use___________________________________________ LOGNAME$22[633]$FF. With this option @02from-addr@00 is assigned to_____________________________________ @02from@00$22[436]$FF, and in addition file-based @02mta@00$22[482]$FFs are invoked__________________________________ with @01-f @02from-addr@00. If @02from-addr@00 includes non-address compo‐_________________________________ nents (@02fullnames@00$22[437]$FF), these are instead passed via @01-F @02name@00.________________________________ If @02from-addr@00 is an empty string @02from@00$22[436] $FF(or @02sender@00$22[551]$FF) is________________________________ evaluated whenever @02mta@00$22[482] $FFis invoked; also see_____________________________________________ @02r-option-implicit@00$22[535]$FF. Even though not a recipient the_____________________________________ ‘shquote’ @02expandaddr@00$22[422] $FFflag is supported._____________________________________________________________________________________________________________________________________________________________ Remarks: many MTA installations and sites disallow setting an________________________________ explicit reverse-path, but for members of dedicated user_____________________________________ groups, or after MTA reconfiguration.________________________________________________________:#___________________________________________________________________________________________________________ ++20 +=____________________________________________________________________________________________________________ @01-S@00 @02var@00[=value], @01--set@00=.._______________________________________________________________________________ @01set@00$22[271] $FF(or, with a ‘no’ prefix as documented in @02INTERNAL@00___________________________________ @02VARIABLES@00$22[31]$FF, @01unset@00$22[272]$FF) @02var@00iable and optionally assign____________________________________ @02value@00, if supported, evaluated as if specified within dollar-________________________________ single-quotes (@02Shell-style@00 @02argument@00 @02quoting@00$22[24]$FF). Upon failure______________________________ the program will exit if any of @02errexit@00$22[419] $FFor @02posix@00$22[523] $FFis________________________________ set. Settings established via @01-S @00cannot be changed from within______________________________ @02Resource@00 @02files@00$22[36]$FF, or an @01-A@00$22[57]$FFccount switch; they become mu‐_______________________________ table again for @01-X@00$22[87] $FFcommands._________________________________________________________________________________________________________________________________________________________________________ @01-s@00 @02subject@00, @01--subject@00=.._______________________________________________________________________________ (Send mode) Specify a message subject. Newline (NL) and car‐________________________________ riage-return (CR) are normalized to space (SP).__________________________________________________________________________________________________________________________________________________________ @01-T@00 @02"field:@00 @02addr"@00, @01--target@00=..__________________________________________________________________________ (Send mode) Add @02addr@00, parsed like a message header address line______________________________ (see @01-t@00$22[83]$FF), and supporting the same modifiers, to the list of______________________________ recipients targeted by @02field@00: supported are ‘bcc’, ‘cc’, ‘fcc’,______________________________ and ‘to’. Field and body (address) are separated by a colon_________________________________ ‘:’ and optionally blank (space, tabulator) characters. The_________________________________ ‘shquote’ @02expandaddr@00$22[422] $FFflag is supported. @02addr@00 This option_______________________________ may be used multiple times.______________________________________________________________________________________________________________________________________________________________________________ @01-t@00, @01--template@00_________________________________________________________________________________________ (Send mode) Standard input is expected to contain one or multi‐______________________________ ple plain text message headers, an empty line, and the message_______________________________ body. [v15 behaviour may differ] Readily prepared MIME mail_________________________________ messages cannot be passed. Header lines are parsed as follows.______________________________ A line starting with number sign ‘\#’ in the first column is ig‐______________________________ nored. A header can span multiple consecutive lines if follow_______________________________ lines start with (ignored) whitespace.___________________________________________________________________________________________________________________________________________________________________ Recipients will be @02expandaddr@00$22[422] $FFchecked, and added onto the_______________________________ command line ones: ‘To:’, ‘Cc:’, ‘Bcc:’; the line is parsed as_______________________________ a single recipient with the modifier ‘?single’, for example__________________________________ ‘To?single: exa, <m\@ple>’. ‘Fcc:’ is supported (see @02Compose@00_________________________________:#___________________________________________________________________________________________________________ ++20 += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________:#___________________________________________________________________________________________________________ ++f += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02mode@00$22[@048@00]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________@04Link: \#8 (press RETURN)@00#____________________________________________________________________________________ ++f += @02mode@00$22[@048@00]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[@0481@00]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________@04Link: \#81 (press RETURN)@00#___________________________________________________________________________________ ++f += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[@0481@00]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[@04542@00]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________@04Link: \#542 (press RETURN)@00#__________________________________________________________________________________ ++f += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[@04542@00]$FF), ‘Sender:’ (@02sender@00$22[551]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[@04551@00]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________@04Link: \#551 (press RETURN)@00#__________________________________________________________________________________ ++f += @02mode@00$22[8]$FF). A subject specified via ‘Subject:’ is used in favour______________________________ of the command line option @01-s@00$22[81]$FF._______________________________________________________________________________________________________________________________________________________________________ More optional headers are ‘Reply-To:’ (possibly overriding___________________________________ @02reply-to@00$22[542]$FF), ‘Sender:’ (@02sender@00$22[@04551@00]$FF), ‘From:’ (@02from@00$22[436] $FFand______________________________ / or option @01-r@00$22[79]$FF). Normally created automatically, but used_______________________________ if specified are ‘Message-ID:’, ‘In-Reply-To:’, ‘References:’________________________________ and ‘Mail-Followup-To:’. All other custom header fields (see________________________________ @01-C@00$22[61]$FF, @02customhdr@00$22[409]$FF, @01˜ˆ@00$22[322]$FF) are passed through as-is, and_______________________________ in conjunction with the options @01-˜@00$22[89] $FFor @01-\#@00$22[90] @02$FFCOMMAND@00_____________________________________ @02ESCAPES@00$22[30] $FFare evaluated. Also see @01-M@00$22[73]$FF, @01-m@00$22[74]$FF, @01-q@00$22[77]$FF._____________________________________________________________________________________________________________________________________________ @01-u@00 @02user@00, @01--inbox-of@00=.._________________________________________________________________________________ Open the @02primary@00 @02system@00 @02mailbox@00$22[136] $FFof @02user@00, appropriate priv‐______________________________ ileges presumed; identical to ‘@01-f @00%user’.________________________________________________________________________________________________________________________________________________________________ @01-V@00, @01--version@00__________________________________________________________________________________________ Print @02version@00$22[617] $FFand exit. The command @01version@00$22[305] $FFwill__________________________________ also show @02features@00$22[425]$FF: ‘\$ s-nail -:/ -\#v -Xversion -Xx’._______________________________________________________________________________________________________________________________________________ @01-v@00, @01--verbose@00__________________________________________________________________________________________ @01set@00$22[271] @02$FFverbose@00$22[616]$FF. (Multiple levels.) Also see @01-d@00$22[64]$FF._____________________________________________________________________________________________________________________________________________ @01-X@00 @02cmd@00, @01--startup-cmd@00=.._______________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated before nor‐______________________________ mal operation starts, as via @01source@00$22[284]$FF. Correlates with___________________________________ @01-\#@00$22[90] $FFand @02errexit@00$22[419]$FF._________________________________________________________________________________________________________________________________________________________________________________ @01-Y@00 @02cmd@00, @01--cmd@00=.._______________________________________________________________________________________ Add (the multiline) @02cmd@00 (block) to a list evaluated after nor‐_______________________________ mal operation has started. It is evaluated successively in the______________________________ given order, and as if given on the program’s standard input —_______________________________ before interactive prompting begins in interactive mode, after_______________________________ standard input has been consumed otherwise.______________________________________________________________________________________________________________________________________________________________ @01-˜@00, @01--enable-cmd-escapes@00_______________________________________________________________________________ Enable @02COMMAND@00 @02ESCAPES@00$22[30] $FFin @02Compose@00 @02mode@00$22[8]$FF, even in non-in‐_______________________________ ^O#_________________________________________________________________________________________________________ ++f += @02sender@00 An address that is put into the ‘Sender:’ field of outgoing__________________________________ messages, quoting the standard RFC 5322: the mailbox of the__________________________________ agent responsible for the actual transmission of the message.________________________________ For example, if Mary sends a mail for Alice, then Alice should_______________________________ be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[436]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.______________________________________________________________________________:#___________________________________________________________________________________________________________ ++f += @02sender@00 An address that is put into the ‘Sender:’ field of outgoing__________________________________ messages, quoting the standard RFC 5322: the mailbox of the__________________________________ agent responsible for the actual transmission of the message.________________________________ For example, if Mary sends a mail for Alice, then Alice should_______________________________ be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[436]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.______________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sender@00 An address that is put into the ‘Sender:’ field of outgoing__________________________________ messages, quoting the standard RFC 5322: the mailbox of the__________________________________ agent responsible for the actual transmission of the message.________________________________ For example, if Mary sends a mail for Alice, then Alice should_______________________________ be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[@04436@00]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.______________________________________________________________________________@04Link: \#436 (press RETURN)@00#__________________________________________________________________________________ ++6a += messages, quoting the standard RFC 5322: the mailbox of the__________________________________ agent responsible for the actual transmission of the message.________________________________ For example, if Mary sends a mail for Alice, then Alice should_______________________________ be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[@04436@00]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6a += agent responsible for the actual transmission of the message.________________________________ For example, if Mary sends a mail for Alice, then Alice should_______________________________ be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[@04436@00]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________:#___________________________________________________________________________________________________________ ++6a += For example, if Mary sends a mail for Alice, then Alice should_______________________________ be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[@04436@00]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.______________________________________:#___________________________________________________________________________________________________________ ++6a += be in ‘From:’ whereas Mary should be present in ‘Sender:’. Ac‐______________________________ cording to the standard this variable @01must @00be set if @02from@00$22[@04436@00]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++6a += cording to the standard this variable @01must @00be set if @02from@00$22[@04436@00]$FF_______________________________ contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________:#___________________________________________________________________________________________________________ ++6a += contains multiple addresses. [v15 behaviour may differ] Expect______________________________ automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________:#___________________________________________________________________________________________________________ ++6a += automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.______________________________________________________________________:#___________________________________________________________________________________________________________ ++2f += automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.______________________________________________________________________/#___________________________________________________________________________________________________________ ++6d += automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.______________________________________________________________________/m#__________________________________________________________________________________________________________ ++74 += automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.______________________________________________________________________/mt#_________________________________________________________________________________________________________ ++61 += automatic management of the @02from@00$22[436] $FFand @02sender@00$22[551] $FFrelation‐______________________________ ship (requiring an address order in the former). Dependent on_______________________________ the context this address is handled as if it were in the list________________________________ of @01alternates@00$22[149]$FF. Also see @01-r@00$22[79]$FF, @02r-option-implicit@00$22[535]$FF.____________________________________________________________________________________________________________________________________________ @02sendwait@00 Sending messages to the chosen @02mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘mta’ for @02mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.______________________________________________________________________/mta#________________________________________________________________________________________________________ ++a += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++f += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sendwait@00 Sending messages to the chosen @06mta@00$22[@04482@00] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________@04Link: \#482 (press RETURN)@00#__________________________________________________________________________________ ++f += @02sendwait@00 Sending messages to the chosen @06mta@00$22[@04482@00] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[@047@00]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________@04Link: \#7 (press RETURN)@00#____________________________________________________________________________________ ++f += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[@047@00]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[@04482@00] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________@04Link: \#482 (press RETURN)@00#__________________________________________________________________________________ ++f += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[@04482@00] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[@04211@00] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________@04Link: \#211 (press RETURN)@00#__________________________________________________________________________________ ++f += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[@04211@00] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[@04214@00]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________@04Link: \#214 (press RETURN)@00#__________________________________________________________________________________ ++f += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[@04214@00]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[323]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[@04323@00]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________@04Link: \#323 (press RETURN)@00#__________________________________________________________________________________ ++20 += @02sendwait@00 Sending messages to the chosen @06mta@00$22[482] $FFor to command-pipe re‐_______________________________ cipients (see @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF)__________________________________ will be performed asynchronously. This means that only startup______________________________ errors of the respective program will be recognizable, but no________________________________ delivery errors. Also, no guarantees can be made as to when_________________________________ the respective program will actually run, as well as to when_________________________________ they will have produced output.__________________________________________________________________________________________________________________________________________________________________________ If this variable is set then child program exit is waited for,_______________________________ and its exit status code is used to decide about success. Re‐_______________________________ marks: in conflict with the POSIX standard this variable is__________________________________ built-in to be initially set. Another difference is that it_________________________________ can have a value, which is interpreted as a comma-separated__________________________________ list of case-insensitive strings naming specific subsystems for______________________________ which synchronousness shall be ensured (only). Possible values______________________________ are ‘@04mta@00’ for @06mta@00$22[482] $FFdelivery, and ‘pcc’ for command-pipe re‐______________________________ cipients.________________________________________________________________________________________________________________________________________________________________________________________________ @02showlast@00 (Boolean) This setting causes S-nail to start at the last mes‐_______________________________ sage instead of the first one when opening a mail folder, as_________________________________ well as with @01from@00$22[211] $FFand @01headers@00$22[214]$FF._________________________________________________________________________________________________________________________________________________________________ @02showname@00 (Boolean) Causes S-nail to use the sender’s real name instead________________________________ of the plain address in the header field summary and in message______________________________ specifications.__________________________________________________________________________________________________________________________________________________________________________________________ @02showto@00 (Boolean) Causes the recipient of the message to be shown in_________________________________ the header summary if the message was sent by the user.__________________________________________________________________________________________________________________________________________________ @02Sign@00 The value backing @01˜A@00$22[@04323@00]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________ @02sign@00 The value backing @01˜a@00$22[324]$FF, one of the @02COMMAND@00 @02ESCAPES@00$22[30]$FF.___________________________________ Also see @02message-inject-tail@00$22[474]$FF, @02on-compose-leave@00$22[497] $FFand_________________________________ @02on-compose-splice@00$22[498]$FF.__________________________________________________________________________________________________________________________________________________________________________________:#___________________________________________________________________________________________________________ ++20 += @02skipemptybody@00__________________________________________________________________________________________ (Boolean) If an outgoing message has an empty first or only__________________________________ message part, do not send, but discard it, successfully (also________________________________ see the command line option @01-E@00$22[65]$FF)._____________________________________________________________________________________________________________________________________________________________________ @02smime-ca-dir@00, @02smime-ca-file@00____________________________________________________________________________ [Option] Specify the location of trusted CA certificates in PEM______________________________ (Privacy Enhanced Mail) for the purpose of verification of___________________________________ S/MIME signed messages. @02tls-ca-dir@00$22[595] $FFdocuments the neces‐________________________________ sary preparation steps to use the former. The set of CA cer‐________________________________ tificates which are built into the TLS library can be explic‐________________________________ itly turned off by setting @02smime-ca-no-defaults@00$22[562]$FF, and fur‐_______________________________ ther fine-tuning is possible via @02smime-ca-flags@00$22[561]$FF.____________________________________________________________________________________________________________________________________________________ @02smime-ca-flags@00_________________________________________________________________________________________ [Option] Can be used to fine-tune behaviour of the X509 CA cer‐______________________________ tificate storage, and the certificate verification that is___________________________________ used. The actual values and their meanings are documented for_______________________________ @02tls-ca-flags@00$22[597]$FF._______________________________________________________________________________________________________________________________________________________________________________________ @02smime-ca-no-defaults@00___________________________________________________________________________________ (Boolean)[Option] Do not load the default CA locations that are______________________________ built into the used to TLS library to verify S/MIME signed mes‐______________________________ sages.___________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-cipher-USER\@HOST@00, @02smime-cipher@00___________________________________________________________________ [Option] Specifies the cipher to use when generating S/MIME en‐______________________________ crypted messages (for the specified account). RFC 5751 man‐_________________________________ dates a default of ‘aes128’ (AES-128 CBC). Possible values are______________________________ (case-insensitive and) in decreasing cipher strength: ‘aes256’_______________________________ (AES-256 CBC), ‘aes192’ (AES-192 CBC), ‘aes128’ (AES-128 CBC),_______________________________ ‘des3’ (DES EDE3 CBC, 168 bits; default if ‘aes128’ is not___________________________________ available) and ‘des’ (DES CBC, 56 bits)._________________________________________________________________________________________________________________________________________________________________ The actually available cipher algorithms depend on the crypto‐_______________________________ graphic library that S-nail uses. [Option] Support for more_________________________________ cipher algorithms may be available through dynamic loading via_______________________________:#___________________________________________________________________________________________________________ ++20 += EVP_get_cipherbyname(3)$22[749] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________ addresses in the certificate match those in the message header_______________________________:#___________________________________________________________________________________________________________ ++f += EVP_get_cipherbyname(3)$22[749] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________ addresses in the certificate match those in the message header_______________________________ ^O#_________________________________________________________________________________________________________ ++e += EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________ addresses in the certificate match those in the message header_______________________________@04Link: man:EVP_get_cipherbyname(3) (press RETURN)@00#___________________________________________________________ ++f += EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________ addresses in the certificate match those in the message header_______________________________ ^O#_________________________________________________________________________________________________________ ++c += EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________ addresses in the certificate match those in the message header_______________________________:#___________________________________________________________________________________________________________ ++6b += cipher algorithms may be available through dynamic loading via_______________________________ EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________:#___________________________________________________________________________________________________________ ++6b += graphic library that S-nail uses. [Option] Support for more_________________________________ cipher algorithms may be available through dynamic loading via_______________________________ EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________:#___________________________________________________________________________________________________________ ++6b += The actually available cipher algorithms depend on the crypto‐_______________________________ graphic library that S-nail uses. [Option] Support for more_________________________________ cipher algorithms may be available through dynamic loading via_______________________________ EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________:#___________________________________________________________________________________________________________ ++f += The actually available cipher algorithms depend on the crypto‐_______________________________ graphic library that S-nail uses. [Option] Support for more_________________________________ cipher algorithms may be available through dynamic loading via_______________________________ EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ ^O#_________________________________________________________________________________________________________ ++c += EVP_get_cipherbyname(3)$22[@04749@00] $FF(OpenSSL) if S-nail has been com‐_______________________________ piled to support this.___________________________________________________________________________________________________________________________________________________________________________________ @02smime-crl-dir@00__________________________________________________________________________________________ [Option] Specifies a directory that contains files with CRLs in______________________________ PEM format to use when verifying S/MIME messages.________________________________________________________________________________________________________________________________________________________ @02smime-crl-file@00_________________________________________________________________________________________ [Option] Specifies a file that contains a CRL in PEM format to_______________________________ use when verifying S/MIME messages.______________________________________________________________________________________________________________________________________________________________________ @02smime-encrypt-USER\@HOST@00________________________________________________________________________________ [Option] If this variable is set, messages send to the given_________________________________ recipient are encrypted before sending. The value of the vari‐______________________________ able must be set to the name of a file that contains a certifi‐______________________________ cate in PEM format.______________________________________________________________________________________________________________________________________________________________________________________ If a message is sent to multiple recipients, each of them for________________________________ whom a corresponding variable is set will receive an individu‐_______________________________ ally encrypted message; other recipients will continue to re‐________________________________ ceive the message in plain text unless the___________________________________________________ @02smime-force-encryption@00$22[567] $FFvariable is set. It is recommended______________________________ to sign encrypted messages, i.e., to also set the____________________________________________ @02smime-sign@00$22[568] $FFvariable.____________________________________________________________________ @02content-description-smime-message@00$22[406] $FFwill be inspected for_________________________________ messages which become encrypted._________________________________________________________________________________________________________________________________________________________________________ @02smime-force-encryption@00_________________________________________________________________________________ (Boolean)[Option] Causes S-nail to refuse sending unencrypted________________________________ messages.________________________________________________________________________________________________________________________________________________________________________________________________ @02smime-sign@00_____________________________________________________________________________________________ (Boolean)[Option] S/MIME sign outgoing messages with the user’s______________________________ (@02from@00$22[436]$FF) private key and include the users certificate as a_______________________________ MIME attachment. Signing a message enables a recipient to ver‐______________________________ ify that the sender used a valid certificate, that the email_________________________________ addresses in the certificate match those in the message header_______________________________:#___________________________________________________________________________________________________________ ++20 += and that the message content has not been altered. It does not______________________________ change the message text, and people will be able to read the_________________________________ message as usual. @02content-description-smime-signature@00$22[407]$FF__________________________________ will be inspected. Also see @02smime-sign-cert@00$22[569]$FF,___________________________________________ @02smime-sign-include-certs@00$22[571] $FFand @02smime-sign-digest@00$22[570]$FF.________________________________________________________________________________________________________________________________________________ @02smime-sign-cert-USER\@HOST@00, @02smime-sign-cert@00_____________________________________________________________ [Option] Points to a file in PEM format. For the purpose of_________________________________ signing and decryption this file needs to contain the user’s_________________________________ private key followed by the certificate._________________________________________________________________________________________________________________________________________________________________ For message signing ‘USER\@HOST’ is always derived from the___________________________________ value of @02from@00$22[436] $FF(or, if that contains multiple addresses,_________________________________ @02sender@00$22[551]$FF). For the purpose of encryption the recipients__________________________________ public encryption key (certificate) is expected; the command_________________________________ @01certsave@00$22[158] $FFcan be used to save certificates of signed mes‐________________________________ sages (the section @02Signed@00 @02and@00 @02encrypted@00 @02messages@00 @02with@00________________________________________ @02S/MIME@00$22[17] $FFgives some details). This mode of operation is usu‐______________________________ ally driven by the specialized form._____________________________________________________________________________________________________________________________________________________________________ When decrypting messages the account is derived from the recip‐______________________________ ient fields (‘To:’ and ‘Cc:’) of the message, which are______________________________________ searched for addresses for which such a variable is set._____________________________________ S-nail always uses the first address that matches, so if the_________________________________ same message is sent to more than one of the user addresses us‐______________________________ ing different encryption keys, decryption might fail.____________________________________________________________________________________________________________________________________________________ Password-encrypted keys may be used for signing and decryption.______________________________ Automated password lookup is possible via the “pseudo-hosts”_________________________________ ‘USER\@HOST.smime-cert-key’ for the private key, and__________________________________________ ‘USER\@HOST.smime-cert-cert’ for the certificate stored in the________________________________ same file. For example, the hypothetical address____________________________________________ ‘bob\@exam.ple’ could be driven with a private key / certificate______________________________ pair path defined in @02smime-sign-cert-bob\@exam.ple@00, and the___________________________________ needed passwords would then be looked up as__________________________________________________ ‘bob\@exam.ple.smime-cert-key’ and____________________________________________________________ ‘bob\@exam.ple.smime-cert-cert’. When decrypting the value of________________________________:#___________________________________________________________________________________________________________ ++20 += @02from@00$22[436] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[571]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________:#___________________________________________________________________________________________________________ ++f += @02from@00$22[436] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[571]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02from@00$22[@04436@00] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[571]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________@04Link: \#436 (press RETURN)@00#__________________________________________________________________________________ ++f += @02from@00$22[@04436@00] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[571]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02from@00$22[436] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[@04571@00]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________@04Link: \#571 (press RETURN)@00#__________________________________________________________________________________ ++f += @02from@00$22[436] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[@04571@00]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[18]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________ ^O#_________________________________________________________________________________________________________ ++e += @02from@00$22[436] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[571]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[@0418@00]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________@04Link: \#18 (press RETURN)@00#___________________________________________________________________________________ ++f += @02from@00$22[436] $FFwill be tried as a fallback to provide the necessary_______________________________ ‘USER\@HOST’. To include intermediate certificates, use______________________________________ @02smime-sign-include-certs@00$22[571]$FF. The possible password sources________________________________ are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[@0418@00]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________ ^O#_________________________________________________________________________________________________________ ++c += are documented in @02On@00 @02URL@00 @02syntax@00 @02and@00 @02credential@00 @02lookup@00$22[@0418@00]$FF._______________________________________________________________________________________________________________________________________________ @02smime-sign-digest-USER\@HOST@00, @02smime-sign-digest@00_________________________________________________________ [Option] Specifies the message digest to use when signing____________________________________ S/MIME messages. Remember that for this use case ‘USER\@HOST’________________________________ refers to the variable @02from@00$22[436] $FF(or, if that contains multiple______________________________ addresses, @02sender@00$22[551]$FF). The available algorithms depend on_________________________________ the used cryptographic library, but at least one usable built-_______________________________ in algorithm is ensured as a default. If possible the standard______________________________ RFC 5751 will be violated by using ‘SHA512’ instead of the man‐______________________________ dated ‘SHA1’ due to security concerns. This variable is ig‐_________________________________ nored for very old (released before 2010) cryptographic li‐__________________________________ braries which do not offer the necessary interface: it will be_______________________________ logged if that happened._________________________________________________________________________________________________________________________________________________________________________________ S-nail will try to add built-in support for the following mes‐_______________________________ sage digests, names are case-insensitive: ‘BLAKE2b512’,______________________________________ ‘BLAKE2s256’, ‘SHA3-512’, ‘SHA3-384’, ‘SHA3-256’, ‘SHA3-224’,________________________________ as well as the widely available ‘SHA512’, ‘SHA384’, ‘SHA256’,________________________________ ‘SHA224’, and the proposed insecure ‘SHA1’, finally ‘MD5’.___________________________________ More digests may [Option]ally be available through dynamic___________________________________ loading via the OpenSSL function EVP_get_digestbyname(3)$22[750]$FF.___________________________________________________________________________________________________________________________________________ @02smime-sign-include-certs-USER\@HOST@00, @02smime-sign-include-certs@00___________________________________________ [Option] If used, this is supposed to a consist of a comma-sep‐______________________________ arated list of files, each of which containing a single cer‐_________________________________ tificate in PEM format to be included in the S/MIME message in_______________________________ addition to the @02smime-sign-cert@00$22[569] $FFcertificate. This can be_______________________________ used to include intermediate certificates of the certificate_________________________________ authority, in order to allow the recipient’s S/MIME implementa‐______________________________ tion to perform a verification of the entire certificate chain,______________________________ starting from a local root certificate, over the intermediate________________________________ certificates, down to the @02smime-sign-cert@00$22[569]$FF. Even though_________________________________ top level certificates may also be included in the chain, they_______________________________ will not be used for the verification on the recipient’s side.___________________________________________________________________________________________________________________________________________ For the purpose of the mechanisms involved here, ‘USER\@HOST’_________________________________:#___________________________________________________________________________________________________________ ++47 += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04(END)@00#_______________________________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[@04451@00]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#451 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[@04451@00]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[@04546@00] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#546 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[@04546@00] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[@04552@00] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#552 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[@04552@00] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[@04402@00] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#402 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[@04402@00] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[@04127@00] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#127 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[@04127@00] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[@04224@00] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#224 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[@04224@00] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[@04616@00] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#616 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[@04616@00] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[@04305@00] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#305 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[@04305@00] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[@04403@00]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#403 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[@04403@00]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++e += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[@04403@00]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04OSC 8 link not found (press RETURN)@00#________________________________________________________________________ ++a += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[@04403@00]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04(END)@00#_______________________________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[@04403@00]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++10 += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[@04305@00] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#305 (press RETURN)@00#__________________________________________________________________________________ ++f += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[616] $FFoutput of the command @01version@00$22[@04305@00] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________ ^O#_________________________________________________________________________________________________________ ++10 += [v15 behaviour may differ] Interrupting an operation via SIGINT aka____________________________________ ‘control-C’ from anywhere else but a command prompt is very problematic________________________________ and likely to leave the program in an undefined state: many library func‐______________________________ tions cannot deal with the @01siglongjmp@00(@023@00) that this software (still) per‐_______________________________ forms; even though efforts have been taken to address this, no sooner but______________________________ in v15 it will have been worked out: interruptions have not been disabled______________________________ in order to allow forceful breakage of hanging network connections, for________________________________ example (all this is unrelated to @02ignore@00$22[451]$FF).____________________________________________________________________________________________________________________________________________________________________ The SMTP and POP3 protocol support of S-nail is very basic. Also, if it_______________________________ fails to contact its upstream SMTP server, it will not make further at‐________________________________ tempts to transfer the message at a later time (setting @02save@00$22[546] $FFand__________________________________ @02sendwait@00$22[552] $FFmay be useful). If this is a concern, it might be better________________________________ to set up a local SMTP server that is capable of message queuing.__________________________________________________________________________________________________________________________________________________@01BUGS@00________________________________________________________________________________________________________ When a network-based mailbox is open, directly changing to another net‐________________________________ work-based mailbox of a different protocol (i.e., from POP3 to IMAP or_________________________________ vice versa) will cause a “deadlock”._______________________________________________________________________________________________________________________________________________________________________________ After deleting some message of a POP3 mailbox the header summary falsely_______________________________ claims that there are no messages to display, one needs to perform a___________________________________ scroll or dot movement to restore proper state.____________________________________________________________________________________________________________________________________________________________________ Please report bugs to the @02contact-mail@00$22[402] $FFaddress, for example from__________________________________ within s-nail: ‘? @01eval@00$22[127] @01$FFmail@00$22[224] $FF\$contact-mail’. Including the___________________________________ @02verbose@00$22[@04616@00] $FFoutput of the command @01version@00$22[305] $FFmay be helpful:____________________________________________________________________________________________________________________________________________________ ? set escape=\! verbose; vput version xy; unset verbose;\\_________________________________________ eval mail \$contact-mail________________________________________________________________________ Bug subject______________________________________________________________________________________ \!I xy____________________________________________________________________________________________ \!.___________________________________________________________________________________________________________________________________________________________________________________________________________ Information on the web at ‘\$ s-nail -X ’echo \$@02contact-web@00$22[403]$FF; x’’._______________________________________________________________________________________________________________________________________________BSD March 26, 2022 BSD______________________________@04Link: \#616 (press RETURN)@00#__________________________________________________________________________________ ++67 +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________:#___________________________________________________________________________________________________________ ++f +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[@041@00]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04Link: \#1 (press RETURN)@00#____________________________________________________________________________________ ++f +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[@041@00]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[@042@00]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04Link: \#2 (press RETURN)@00#____________________________________________________________________________________ ++f +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[@042@00]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++e +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[@043@00]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04Link: \#3 (press RETURN)@00#____________________________________________________________________________________ ++f +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[@043@00]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[@042@00]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04Link: \#2 (press RETURN)@00#____________________________________________________________________________________ ++f +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[1]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[@042@00]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[@041@00]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04Link: \#1 (press RETURN)@00#____________________________________________________________________________________ ++f +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[@041@00]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________ ^O#_________________________________________________________________________________________________________ ++10 +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[@041@00]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________@04OSC 8 link not found (press RETURN)@00#________________________________________________________________________ ++a +=S-NAIL(1) BSD General Commands Manual S-NAIL(1)__________________________________________________________________________________________________________________________________________@01NAME@00________________________________________________________________________________________________________ @01S-nail [v14.9.24] @00— send and receive Internet mail_________________________________________________________________________________________________________________________________________________________________@01SYNOPSIS@00____________________________________________________________________________________________________ @01s-nail @00[@01-DdEFinv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-a @02attachment@00:]___________________________________________ [:@01-b @02bcc-addr@00:] [:@01-C @02"field:@00 @02body"@00:] [:@01-c @02cc-addr@00:]_____________________________________________ [@01-M @02type@00 | @01-m @02file@00 | @01-q @02file@00 | @01-t@00] [@01-r @02from-addr@00]_______________________________________________ [:@01-S @02var@00[=@02value@00]:] [@01-s @02subject@00] [:@01-T @02"field:@00 @02addr"@00:] [:@01-X @02cmd@00:]_________________________________ [:@01-Y @02cmd@00:] [@01-.@00] :@02to-addr@00: [@01-- @00:@06mta@02-option@00:]_________________________________________________________________________________________________________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:]_____________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [@01-u @02user@00] [:@01-X @02cmd@00:]________________________________ [:@01-Y @02cmd@00:] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________ @01s-nail @00[@01-DdEeHiNnRv˜\#@00] [@01-: @02spec@00] [@01-A @02account@00] [:@01-C @02"field:@00 @02body"@00:] @01-f@00__________________________________ [@01-L @02spec@00] [@01-r @02from-addr@00] [:@01-S @02var@00[=@02value@00]:] [:@01-X @02cmd@00:] [:@01-Y @02cmd@00:]_______________________________ [@02file@00] [@01-- @00:@06mta@02-option@00:]____________________________________________________________________________________________________________________________________________________________________________________ @01s-nail -h @00| @01--help@00_____________________________________________________________________________________ @01s-nail -V @00| @01--version@00______________________________________________________________________________________________________________________________________________________________________________________________@01TABLE OF CONTENTS@00___________________________________________________________________________________________ @02NAME@00$22[@041@00]$FF________________________________________________________________________________________________ @02SYNOPSIS@00$22[2]$FF____________________________________________________________________________________________ @02TABLE@00 @02OF@00 @02CONTENTS@00$22[3]$FF___________________________________________________________________________________ @02DESCRIPTION@00$22[4]$FF_________________________________________________________________________________________ @02Options@00$22[5]$FF_______________________________________________________________________________________ @02A@00 @02starter@00$22[6]$FF_____________________________________________________________________________________ @02On@00 @02sending@00 @02mail,@00 @02and@00 @02non-interactive@00 @02mode@00$22[7]$FF_____________________________________________________ @02Compose@00 @02mode@00$22[8]$FF__________________________________________________________________________________ @02On@00 @02reading@00 @02mail,@00 @02and@00 @02more@00 @02on@00 @02interactive@00 @02mode@00$22[9]$FF_________________________________________________ @02HTML@00 @02mail@00 @02and@00 @02MIME@00 @02attachments@00$22[10]$FF_______________________________________________________________ @02Mailing@00 @02lists@00$22[11]$FF________________________________________________________________________________ @02Character@00 @02sets@00$22[12]$FF_______________________________________________________________________________ @02Message@00 @02states@00$22[13]$FF_______________________________________________________________________________ @02Specifying@00 @02messages@00$22[14]$FF__________________________________________________________________________:#___________________________________________________________________________________________________________ ++71 +Q diff --git a/lesstest/lt/seq200.lt b/lesstest/lt/seq200.lt index b448e9afb853..d978cb73c7ef 100644 --- a/lesstest/lt/seq200.lt +++ b/lesstest/lt/seq200.lt @@ -1,6 +1,6 @@ !lesstest! !version 1 -!created 2022-11-13 18:04:26 +!created 2025-04-23 23:46:32 E "LESS_TERMCAP_am" "1" E "LESS_TERMCAP_cd" "S" E "LESS_TERMCAP_ce" "L" @@ -26,9 +26,8 @@ E "LESS_TERMCAP_kh" "OH" E "LESS_TERMCAP_@7" "OF" E "COLUMNS" "115" E "LINES" "39" -E "LESSCHARSET" "utf8" E "LANG" "C" -E "LC_CTYPE" "en_US.UTF-8" +E "LC_CTYPE" "C.UTF-8" T "seq200" A "seq200" F "seq200" 692 @@ -245,7 +244,7 @@ R +39 =@043@00__________________________________________________________________________________________________________________4__________________________________________________________________________________________________________________5__________________________________________________________________________________________________________________6__________________________________________________________________________________________________________________7__________________________________________________________________________________________________________________8__________________________________________________________________________________________________________________9__________________________________________________________________________________________________________________10_________________________________________________________________________________________________________________11_________________________________________________________________________________________________________________12_________________________________________________________________________________________________________________1@043@00_________________________________________________________________________________________________________________14_________________________________________________________________________________________________________________15_________________________________________________________________________________________________________________16_________________________________________________________________________________________________________________17_________________________________________________________________________________________________________________18_________________________________________________________________________________________________________________19_________________________________________________________________________________________________________________20_________________________________________________________________________________________________________________21_________________________________________________________________________________________________________________22_________________________________________________________________________________________________________________2@043@00_________________________________________________________________________________________________________________24_________________________________________________________________________________________________________________25_________________________________________________________________________________________________________________26_________________________________________________________________________________________________________________27_________________________________________________________________________________________________________________28_________________________________________________________________________________________________________________29_________________________________________________________________________________________________________________@043@000_________________________________________________________________________________________________________________@043@001_________________________________________________________________________________________________________________@043@002_________________________________________________________________________________________________________________@0433@00_________________________________________________________________________________________________________________@043@004_________________________________________________________________________________________________________________@043@005_________________________________________________________________________________________________________________@043@006_________________________________________________________________________________________________________________@043@007_________________________________________________________________________________________________________________@043@008_________________________________________________________________________________________________________________@043@009_________________________________________________________________________________________________________________40_________________________________________________________________________________________________________________&/9#________________________________________________________________________________________________________________ +a -=9__________________________________________________________________________________________________________________19_________________________________________________________________________________________________________________29_________________________________________________________________________________________________________________@043@009_________________________________________________________________________________________________________________49_________________________________________________________________________________________________________________59_________________________________________________________________________________________________________________69_________________________________________________________________________________________________________________79_________________________________________________________________________________________________________________89_________________________________________________________________________________________________________________90_________________________________________________________________________________________________________________91_________________________________________________________________________________________________________________92_________________________________________________________________________________________________________________9@043@00_________________________________________________________________________________________________________________94_________________________________________________________________________________________________________________95_________________________________________________________________________________________________________________96_________________________________________________________________________________________________________________97_________________________________________________________________________________________________________________98_________________________________________________________________________________________________________________99_________________________________________________________________________________________________________________109________________________________________________________________________________________________________________119________________________________________________________________________________________________________________129________________________________________________________________________________________________________________1@043@009________________________________________________________________________________________________________________149________________________________________________________________________________________________________________159________________________________________________________________________________________________________________169________________________________________________________________________________________________________________179________________________________________________________________________________________________________________189________________________________________________________________________________________________________________190________________________________________________________________________________________________________________191________________________________________________________________________________________________________________192________________________________________________________________________________________________________________19@043@00________________________________________________________________________________________________________________194________________________________________________________________________________________________________________195________________________________________________________________________________________________________________196________________________________________________________________________________________________________________197________________________________________________________________________________________________________________198________________________________________________________________________________________________________________199________________________________________________________________________________________________________________& @04(END)@00#____________________________________________________________________________________________________________ +=9__________________________________________________________________________________________________________________19_________________________________________________________________________________________________________________29_________________________________________________________________________________________________________________@043@009_________________________________________________________________________________________________________________49_________________________________________________________________________________________________________________59_________________________________________________________________________________________________________________69_________________________________________________________________________________________________________________79_________________________________________________________________________________________________________________89_________________________________________________________________________________________________________________90_________________________________________________________________________________________________________________91_________________________________________________________________________________________________________________92_________________________________________________________________________________________________________________9@043@00_________________________________________________________________________________________________________________94_________________________________________________________________________________________________________________95_________________________________________________________________________________________________________________96_________________________________________________________________________________________________________________97_________________________________________________________________________________________________________________98_________________________________________________________________________________________________________________99_________________________________________________________________________________________________________________109________________________________________________________________________________________________________________119________________________________________________________________________________________________________________129________________________________________________________________________________________________________________1@043@009________________________________________________________________________________________________________________149________________________________________________________________________________________________________________159________________________________________________________________________________________________________________169________________________________________________________________________________________________________________179________________________________________________________________________________________________________________189________________________________________________________________________________________________________________190________________________________________________________________________________________________________________191________________________________________________________________________________________________________________192________________________________________________________________________________________________________________19@043@00________________________________________________________________________________________________________________194________________________________________________________________________________________________________________195________________________________________________________________________________________________________________196________________________________________________________________________________________________________________197________________________________________________________________________________________________________________198________________________________________________________________________________________________________________199________________________________________________________________________________________________________________& :#________________________________________________________________________________________________________________ +6e =@043@009_________________________________________________________________________________________________________________49_________________________________________________________________________________________________________________59_________________________________________________________________________________________________________________69_________________________________________________________________________________________________________________79_________________________________________________________________________________________________________________89_________________________________________________________________________________________________________________90_________________________________________________________________________________________________________________91_________________________________________________________________________________________________________________92_________________________________________________________________________________________________________________9@043@00_________________________________________________________________________________________________________________94_________________________________________________________________________________________________________________95_________________________________________________________________________________________________________________96_________________________________________________________________________________________________________________97_________________________________________________________________________________________________________________98_________________________________________________________________________________________________________________99_________________________________________________________________________________________________________________109________________________________________________________________________________________________________________119________________________________________________________________________________________________________________129________________________________________________________________________________________________________________1@043@009________________________________________________________________________________________________________________149________________________________________________________________________________________________________________159________________________________________________________________________________________________________________169________________________________________________________________________________________________________________179________________________________________________________________________________________________________________189________________________________________________________________________________________________________________190________________________________________________________________________________________________________________191________________________________________________________________________________________________________________192________________________________________________________________________________________________________________19@043@00________________________________________________________________________________________________________________194________________________________________________________________________________________________________________195________________________________________________________________________________________________________________196________________________________________________________________________________________________________________197________________________________________________________________________________________________________________198________________________________________________________________________________________________________________199________________________________________________________________________________________________________________@01~@00__________________________________________________________________________________________________________________@01~@00__________________________________________________________________________________________________________________@01~@00__________________________________________________________________________________________________________________& @04(END)@00#____________________________________________________________________________________________________________ +6e diff --git a/lesstest/lt/utf8-2.txt.lt b/lesstest/lt/utf8-2.txt.lt Binary files differindex 50b16fca97dd..0fcd118a0302 100644 --- a/lesstest/lt/utf8-2.txt.lt +++ b/lesstest/lt/utf8-2.txt.lt diff --git a/lesstest/lt/utf8-cmds.txt.lt b/lesstest/lt/utf8-cmds.txt.lt Binary files differnew file mode 100644 index 000000000000..554cbff3953c --- /dev/null +++ b/lesstest/lt/utf8-cmds.txt.lt diff --git a/lesstest/ltview b/lesstest/ltview index 2fd6cf8da300..50af4a02550f 100755 --- a/lesstest/ltview +++ b/lesstest/ltview @@ -4,8 +4,9 @@ use Getopt::Std; use IO::Stty; my $usage = - "usage: ltview [-cfr] [-w wide.uni] lt-file [error-file]\n" . + "usage: ltview [-cdfr] [-w wide.uni] lt-file [error-file]\n" . " -c = use color\n" . + " -d = don't color differences\n" . " -f = use lt-file even if it does not fit on screen\n" . " -r = don't put terminal in raw mode\n" . " -w = list of Unicode wide chars\n" . @@ -48,7 +49,7 @@ my %opt; exit (main() ? 0 : 1); sub main { - die $usage if not getopts('cfrw:', \%opt); + die $usage if not getopts('cdfrw:', \%opt); my $ltfile = shift @ARGV; my $errfile = shift @ARGV; my $wide_file = ($opt{w} or "../wide.uni"); @@ -241,9 +242,9 @@ sub display { $literal = 0; if ($ich > 0) { my $diff = ($cmp_ich != $ich); - print $DIFF_ATTR_ON if $diff; + print $DIFF_ATTR_ON if $diff and not $opt{d}; print chr($ich); - print $DIFF_ATTR_OFF if $diff; + print $DIFF_ATTR_OFF if $diff and not $opt{d}; $x += cwidth($ich); if ($x >= $lt->{columns}) { print "\r\n"; @@ -387,7 +388,7 @@ sub parse_ltfile { # --------------------------------------------------------------------- sub parse_env { my ($line, $lt) = @_; - my ($ename, $evalue) = /^E \s* "(\w*)" \s* "([^"]*)" /x; + my ($ename, $evalue) = /^E \s* "([^"]*)" \s* "([^"]*)" /x; if ($ename eq "COLUMNS") { $lt->{columns} = $evalue; } elsif ($ename eq "LINES") { @@ -539,6 +540,9 @@ sub utf8_char { for (my $i = 0; $i < length($ch); ++$i) { push @ich, ord substr($ch, $i, 1); } + if (@ich == 0) { + return ''; + } if (@ich == 2) { return (($ich[0] & 0x1F) << 6) | ($ich[1] & 0x3F); } diff --git a/lesstest/runtest b/lesstest/runtest index 0241b4a08820..2d99d903d4be 100755 --- a/lesstest/runtest +++ b/lesstest/runtest @@ -27,7 +27,7 @@ sub main { $rundir = (rfile($opt{r}, $cwd) or "$srcdir/.runtest_dir"); $lesstest = (rfile($opt{t}, $cwd) or "$srcdir/lesstest"); $lt_screen = (rfile($opt{s}, $cwd) or "$srcdir/lt_screen"); - $less = (rfile($opt{l}, $cwd) or "$srcdir/../obj/less"); + $less = (rfile($opt{l}, $cwd) or -x "$srcdir/../obj/less" ? "$srcdir/../obj/less" : "$srcdir/../less"); $lt_opts = ($opt{O} or ""); $err_only = $opt{E} ? 2 : $opt{e} ? 1 : 0; $lt_opts = "-$lt_opts" if $lt_opts =~ /^[^-]/; @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -50,10 +50,11 @@ static struct xbuffer last_ansi; static struct xbuffer last_ansis[NUM_LAST_ANSIS]; static int curr_last_ansi; -public size_t size_linebuf = 0; /* Size of line buffer (and attr buffer) */ +static size_t size_linebuf = 0; /* Size of line buffer (and attr buffer) */ static struct ansi_state *line_ansi = NULL; static lbool ansi_in_line; -static int hlink_in_line; +static int ff_starts_line; +static lbool hlink_in_line; static int line_mark_attr; static int cshift; /* Current left-shift of output line buffer */ public int hshift; /* Desired left-shift of output line buffer */ @@ -73,7 +74,11 @@ static LWCHAR pendc; static POSITION pendpos; static constant char *end_ansi_chars; static constant char *mid_ansi_chars; -static int in_hilite; +static constant char *osc_ansi_chars; +static int osc_ansi_allow_count; +static long *osc_ansi_allow; +static lbool in_hilite; +static lbool clear_after_line; static int attr_swidth(int a); static int attr_ewidth(int a); @@ -137,8 +142,9 @@ static struct color_map color_map[] = { /* State while processing an ANSI escape sequence */ struct ansi_state { - int oindex; /* Index into OSC8 prefix */ osc8_state ostate; /* State while processing OSC8 sequence */ + unsigned int otype; /* OSC type number */ + unsigned int escs_in_seq; }; /* @@ -147,6 +153,7 @@ struct ansi_state { public void init_line(void) { int ax; + constant char *s; end_ansi_chars = lgetenv("LESSANSIENDCHARS"); if (isnullenv(end_ansi_chars)) @@ -156,6 +163,32 @@ public void init_line(void) if (isnullenv(mid_ansi_chars)) mid_ansi_chars = "0123456789:;[?!\"'#%()*+ "; + osc_ansi_chars = lgetenv("LESSANSIOSCCHARS"); + if (isnullenv(osc_ansi_chars)) + osc_ansi_chars = ""; + + osc_ansi_allow_count = 0; + s = lgetenv("LESSANSIOSCALLOW"); + if (!isnullenv(s)) + { + struct xbuffer xbuf; + xbuf_init(&xbuf); + for (;;) + { + long num; + s = skipspc(s); + if (*s == '\0') + break; + num = lstrtoulc(s, &s, 10); + s = skipspc(s); + if (*s == ',') + ++s; + xbuf_add_data(&xbuf, (constant void *) &num, sizeof(num)); + ++osc_ansi_allow_count; + } + osc_ansi_allow = (long *) xbuf.data; + } + linebuf.buf = (char *) ecalloc(LINEBUF_SIZE, sizeof(char)); linebuf.attr = (int *) ecalloc(LINEBUF_SIZE, sizeof(int)); size_linebuf = LINEBUF_SIZE; @@ -245,9 +278,11 @@ public void prewind(void) mbc_buf_len = 0; is_null_line = FALSE; pendc = '\0'; - in_hilite = 0; + in_hilite = FALSE; ansi_in_line = FALSE; - hlink_in_line = 0; + ff_starts_line = -1; + hlink_in_line = FALSE; + clear_after_line = FALSE; line_mark_attr = 0; line_pos = NULL_POSITION; xbuf_reset(&shifted_ansi); @@ -568,7 +603,7 @@ public lbool is_ansi_end(LWCHAR ch) { if (!is_ascii_char(ch)) return (FALSE); - return (strchr(end_ansi_chars, (char) ch) != NULL); + return (ch != 0 && strchr(end_ansi_chars, (char) ch) != NULL); } /* @@ -580,19 +615,19 @@ public lbool is_ansi_middle(LWCHAR ch) return (FALSE); if (is_ansi_end(ch)) return (FALSE); - return (strchr(mid_ansi_chars, (char) ch) != NULL); + return (ch != 0 && strchr(mid_ansi_chars, (char) ch) != NULL); } /* * Skip past an ANSI escape sequence. * pp is initially positioned just after the CSI_START char. */ -public void skip_ansi(struct ansi_state *pansi, constant char **pp, constant char *limit) +public void skip_ansi(struct ansi_state *pansi, LWCHAR ch, constant char **pp, constant char *limit) { - LWCHAR c; + ansi_step(pansi, ch); do { - c = step_charc(pp, +1, limit); - } while (*pp < limit && ansi_step(pansi, c) == ANSI_MID); + ch = step_charc(pp, +1, limit); + } while (*pp < limit && ansi_step(pansi, ch) == ANSI_MID); /* Note that we discard final char, for which is_ansi_end is true. */ } @@ -607,56 +642,121 @@ public struct ansi_state * ansi_start(LWCHAR ch) if (!IS_CSI_START(ch)) return NULL; pansi = ecalloc(1, sizeof(struct ansi_state)); - pansi->oindex = 0; - pansi->ostate = OSC8_PREFIX; + pansi->ostate = OSC_START; + pansi->otype = 0; + pansi->escs_in_seq = 0; return pansi; } /* + * Is a character a valid intro char for an OSC sequence? + * An intro char is the one immediately after the ESC, usually ']'. + */ +static lbool valid_osc_intro(char ch, lbool content) +{ + constant char *p = strchr(osc_ansi_chars, ch); + if (p == NULL) + return FALSE; + return (!content || p[1] == '*'); +} + +/* + * Is a given number a valid OSC type? + */ +static lbool valid_osc_type(int otype, lbool content) +{ + int i; + if (!content) + return TRUE; + if (otype == 8) + return TRUE; + for (i = 0; i < osc_ansi_allow_count; i++) + if (osc_ansi_allow[i] == otype) + return TRUE; + return FALSE; +} + +/* + * Helper function for ansi_step. + */ +static ansi_state osc_return(struct ansi_state *pansi, osc8_state ostate, ansi_state astate) +{ + pansi->ostate = ostate; + return astate; +} + +/* * Determine whether the next char in an ANSI escape sequence * ends the sequence. */ -public ansi_state ansi_step(struct ansi_state *pansi, LWCHAR ch) +static ansi_state ansi_step2(struct ansi_state *pansi, LWCHAR ch, lbool content) { - static constant char osc8_prefix[] = ESCS "]8;"; - + /* + * Pass thru OS commands. Assume OSC commands do not move the cursor. + * A "typed" OSC starts with ESC ] <integer> <semicolon>, followed by an + * arbitrary string, and ends with a String Terminator (ESC-backslash or BEL). + * An untyped OSC starts with ESC ] or ESC x where x is in osc_ansi_chars, + * and ends with ST. + * The only typed OSC we actually parse is OSC 8. + */ switch (pansi->ostate) { - case OSC8_PREFIX: - if (ch != (LWCHAR) osc8_prefix[pansi->oindex] && - !(pansi->oindex == 0 && IS_CSI_START(ch))) + case OSC_START: + if (IS_CSI_START(ch)) + return osc_return(pansi, OSC_INTRO, ANSI_MID); + break; + case OSC_INTRO: + if (ch == ']') + return osc_return(pansi, OSC_TYPENUM, ANSI_MID); + if (is_ascii_char(ch) && valid_osc_intro((char) ch, content)) + return osc_return(pansi, OSC_STRING, ANSI_MID); + if (IS_CSI_START(ch)) + return osc_return(pansi, OSC_INTRO, ANSI_MID); + /* ESC not followed by bracket; restart. */ + pansi->ostate = OSC_START; + break; + case OSC_TYPENUM: + if (ch >= '0' && ch <= '9') { - pansi->ostate = OSC8_NOT; /* not an OSC8 sequence */ - break; + if (ckd_mul(&pansi->otype, pansi->otype, 10) || + ckd_add(&pansi->otype, pansi->otype, ch - '0')) + return osc_return(pansi, OSC_STRING, ANSI_MID); + return osc_return(pansi, OSC_TYPENUM, ANSI_MID); } - pansi->oindex++; - if (osc8_prefix[pansi->oindex] == '\0') /* end of prefix */ - pansi->ostate = OSC8_PARAMS; - return ANSI_MID; + if (ch == ';') + return osc_return(pansi, (pansi->otype == 8) ? OSC8_PARAMS : OSC_STRING, ANSI_MID); + /* OSC is untyped */ + if (IS_CSI_START(ch)) + return osc_return(pansi, OSC_END_CSI, ANSI_MID); + if (ch == '\7') + return osc_return(pansi, OSC_END, ANSI_END); + return osc_return(pansi, OSC_STRING, ANSI_MID); case OSC8_PARAMS: if (ch == ';') - pansi->ostate = OSC8_URI; - return ANSI_MID; + return osc_return(pansi, OSC8_URI, ANSI_MID); + /* FALLTHRU */ case OSC8_URI: - /* URI ends with \7 or ESC-backslash. */ + case OSC_STRING: + /* Look for ST. */ if (ch == '\7') + return osc_return(pansi, OSC_END, valid_osc_type(pansi->otype, content) ? ANSI_END : ANSI_ERR); + if (IS_CSI_START(ch)) { - pansi->ostate = OSC8_END; - return ANSI_END; + pansi->escs_in_seq++; + return osc_return(pansi, OSC_END_CSI, ANSI_MID); } - if (ch == ESC) - pansi->ostate = OSC8_ST_ESC; + /* Stay in same ostate */ return ANSI_MID; - case OSC8_ST_ESC: - if (ch != '\\') - { - return ANSI_ERR; - } - pansi->ostate = OSC8_END; - return ANSI_END; - case OSC8_END: + case OSC_END_CSI: + /* Got ESC of ST, expect backslash next. */ + if (ch == '\\') + return osc_return(pansi, OSC_END, valid_osc_type(pansi->otype, content) ? ANSI_END : ANSI_ERR); + /* ESC not followed by backslash. */ + return osc_return(pansi, OSC_STRING, ANSI_MID); + case OSC_END: return ANSI_END; case OSC8_NOT: + /* cannot happen */ break; } /* Check for SGR sequences */ @@ -667,6 +767,11 @@ public ansi_state ansi_step(struct ansi_state *pansi, LWCHAR ch) return ANSI_ERR; } +public ansi_state ansi_step(struct ansi_state *pansi, LWCHAR ch) +{ + return ansi_step2(pansi, ch, TRUE); +} + /* * Return the current OSC8 parsing state. */ @@ -686,11 +791,11 @@ public void ansi_done(struct ansi_state *pansi) /* * Will w characters in attribute a fit on the screen? */ -static int fits_on_screen(int w, int a) +static lbool fits_on_screen(int w, int a) { if (ctldisp == OPT_ON) /* We're not counting, so say that everything fits. */ - return 1; + return TRUE; return (end_column - cshift + w + attr_ewidth(a) <= sc_width); } @@ -720,11 +825,7 @@ static int store_char(LWCHAR ch, int a, constant char *rep, POSITION pos) int resend_last = 0; int hl_attr = 0; - if (pos == NULL_POSITION) - { - /* Color the prompt unless it has ansi sequences in it. */ - hl_attr = ansi_in_line ? 0 : AT_STANDOUT|AT_COLOR_PROMPT; - } else if (a != AT_ANSI) + if (pos != NULL_POSITION && a != AT_ANSI) { hl_attr = is_hilited_attr(pos, pos+1, 0, &matches); if (hl_attr == 0 && status_line) @@ -739,7 +840,7 @@ static int store_char(LWCHAR ch, int a, constant char *rep, POSITION pos) a |= hl_attr; if (highest_hilite != NULL_POSITION && pos != NULL_POSITION && pos > highest_hilite) highest_hilite = pos; - in_hilite = 1; + in_hilite = TRUE; } else { if (in_hilite) @@ -750,7 +851,7 @@ static int store_char(LWCHAR ch, int a, constant char *rep, POSITION pos) */ resend_last = 1; } - in_hilite = 0; + in_hilite = FALSE; } if (resend_last) { @@ -1005,9 +1106,16 @@ public int pappend_b(char c, POSITION pos, lbool before_pendc) public int pappend(char c, POSITION pos) { + if (ff_starts_line < 0) + ff_starts_line = (c == CONTROL('L')); return pappend_b(c, pos, FALSE); } +public lbool line_is_ff(void) +{ + return (ff_starts_line == 1); +} + static int store_control_char(LWCHAR ch, constant char *rep, POSITION pos) { if (ctldisp == OPT_ON) @@ -1024,12 +1132,15 @@ static int store_control_char(LWCHAR ch, constant char *rep, POSITION pos) static int store_ansi(LWCHAR ch, constant char *rep, POSITION pos) { - switch (ansi_step(line_ansi, ch)) + switch (ansi_step2(line_ansi, ch, pos != NULL_POSITION)) { case ANSI_MID: STORE_CHAR(ch, AT_ANSI, rep, pos); - if (ansi_osc8_state(line_ansi) == OSC8_PARAMS) - hlink_in_line = 1; + switch (ansi_osc8_state(line_ansi)) + { + case OSC_TYPENUM: case OSC_STRING: hlink_in_line = TRUE; break; + default: break; + } xbuf_add_char(&last_ansi, (char) ch); break; case ANSI_END: @@ -1050,7 +1161,7 @@ static int store_ansi(LWCHAR ch, constant char *rep, POSITION pos) LWCHAR bch; do { bch = step_charc(&p, -1, start); - } while (p > start && !IS_CSI_START(bch)); + } while (p > start && (!IS_CSI_START(bch) || line_ansi->escs_in_seq-- > 0)); *end = ptr_diff(p, start); } xbuf_reset(&last_ansi); @@ -1083,7 +1194,7 @@ static int do_append(LWCHAR ch, constant char *rep, POSITION pos) int a = AT_NORMAL; int in_overstrike = overstrike; - if (ctldisp == OPT_ONPLUS && line_ansi == NULL) + if ((ctldisp == OPT_ONPLUS || pos == NULL_POSITION) && line_ansi == NULL) { line_ansi = ansi_start(ch); if (line_ansi != NULL) @@ -1200,6 +1311,22 @@ public int pflushmbc(void) */ static void add_attr_normal(void) { + if (line_ansi != NULL) + { + switch (line_ansi->ostate) + { + case OSC_TYPENUM: + case OSC8_PARAMS: + case OSC8_URI: + case OSC_STRING: + addstr_linebuf("\033\\", AT_ANSI, 0); + break; + default: + break; + } + ansi_done(line_ansi); + line_ansi = NULL; + } if (ctldisp != OPT_ONPLUS || !is_ansi_end('m')) return; addstr_linebuf("\033[m", AT_ANSI, 0); @@ -1210,7 +1337,7 @@ static void add_attr_normal(void) /* * Terminate the line in the line buffer. */ -public void pdone(int endline, int chopped, int forw) +public void pdone(lbool endline, lbool chopped, lbool forw) { (void) pflushmbc(); @@ -1302,6 +1429,14 @@ public void pdone(int endline, int chopped, int forw) add_linebuf(' ', AT_NORMAL, 1); add_linebuf('\b', AT_NORMAL, -1); } + /* + * If a terminal moves the cursor to the next line immediately after + * writing into the last char of a line, the following line may get + * colored with the last char's background color before the color + * reset sequence is sent. Clear the line to reset the background color. + */ + if (auto_wrap && !ignaw && end_column >= sc_width + cshift) + clear_after_line = TRUE; set_linebuf(linebuf.end, '\0', AT_NORMAL); } @@ -1354,28 +1489,28 @@ static void col_vs_pos(POSITION linepos, mutable struct col_pos *cp, POSITION sa } else if (ch == '\b') { if (proc_backspace == OPT_ONPLUS || (bs_mode == BS_CONTROL && proc_backspace == OPT_OFF)) - cw = strlen(prchar(ch)); + cw = (int) strlen(prchar(ch)); else cw = (utf_mode && is_wide_char(prev_ch)) ? -2 : -1; } else if (ch == '\t') { if (proc_tab == OPT_ONPLUS || (bs_mode == BS_CONTROL && proc_tab == OPT_OFF)) - cw = strlen(prchar(ch)); + cw = (int) strlen(prchar(ch)); else cw = tab_spaces(col); } else if ((!utf_mode || is_ascii_char(ch)) && control_char(ch)) { - cw = strlen(prchar(ch)); + cw = (int) strlen(prchar(ch)); } else if (utf8_len < MAX_UTF_CHAR_LEN) { utf8_buf[utf8_len++] = ch; if (is_utf8_well_formed(utf8_buf, utf8_len)) { LWCHAR wch = get_wchar(utf8_buf); - utf8_len = 0; int attr = 0; /* {{ ignoring attribute is not correct for magic cookie terminals }} */ + utf8_len = 0; if (utf_mode && ctldisp != OPT_ON && is_ubin_char(wch)) - cw = strlen(prutfchar(wch)); + cw = (int) strlen(prutfchar(wch)); else cw = pwidth(wch, attr, prev_ch, attr); prev_ch = wch; @@ -1472,6 +1607,14 @@ public int gline(size_t i, int *ap) } /* + * Should we clear to end of line after printing this line? + */ +public lbool should_clear_after_line(void) +{ + return clear_after_line; +} + +/* * Indicate that there is no current line. */ public void null_line(void) @@ -1623,7 +1766,7 @@ public int skip_columns(int cols, constant char **linep, size_t *line_lenp) struct ansi_state *pansi = ansi_start(ch); if (pansi != NULL) { - skip_ansi(pansi, &line, eline); + skip_ansi(pansi, ch, &line, eline); ansi_done(pansi); pch = 0; } else @@ -1676,6 +1819,14 @@ public void load_line(constant char *str) hshift += 1; } set_linebuf(linebuf.end, '\0', AT_NORMAL); + + /* Color the prompt unless it has ansi sequences in it. */ + if (!ansi_in_line) + { + size_t i; + for (i = linebuf.print; i < linebuf.end; i++) + set_linebuf(i, linebuf.buf[i], AT_STANDOUT|AT_COLOR_PROMPT); + } hshift = save_hshift; } @@ -1696,7 +1847,7 @@ public int rrshift(void) break; for (; sline < sc_height && pos != NULL_POSITION; sline++) { - pos = forw_line(pos); + pos = forw_line(pos, NULL, NULL); if (end_column > longest) longest = end_column; } diff --git a/linenum.c b/linenum.c index 2258cdd4901b..0f7e7cdf6275 100644 --- a/linenum.c +++ b/linenum.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -55,13 +55,11 @@ struct linenum_info * when we have a new one to insert and the table is full. */ -#define NPOOL 200 /* Size of line number pool */ - #define LONGTIME (2) /* In seconds */ static struct linenum_info anchor; /* Anchor of the list */ static struct linenum_info *freelist; /* Anchor of the unused entries */ -static struct linenum_info pool[NPOOL]; /* The pool itself */ +static struct linenum_info pool[LINENUM_POOL]; /* The pool itself */ static struct linenum_info *spare; /* We always keep one spare entry */ public lbool scanning_eof = FALSE; @@ -70,6 +68,7 @@ extern int sigs; extern int sc_height; extern int header_lines; extern int nonum_headers; +extern POSITION header_start_pos; /* * Initialize the line number structures. @@ -82,12 +81,12 @@ public void clr_linenum(void) * Put all the entries on the free list. * Leave one for the "spare". */ - for (p = pool; p < &pool[NPOOL-2]; p++) + for (p = pool; p < &pool[LINENUM_POOL-2]; p++) p->next = p+1; - pool[NPOOL-2].next = NULL; + pool[LINENUM_POOL-2].next = NULL; freelist = pool; - spare = &pool[NPOOL-1]; + spare = &pool[LINENUM_POOL-1]; /* * Initialize the anchor. @@ -511,7 +510,14 @@ public void scan_eof(void) */ public LINENUM vlinenum(LINENUM linenum) { - if (nonum_headers) - linenum = (linenum < header_lines) ? 0 : linenum - header_lines; + if (nonum_headers && header_lines > 0) + { + LINENUM header_start_line = find_linenum(header_start_pos); + if (header_start_line != 0) + { + LINENUM header_end_line = header_start_line + header_lines; /* first line after header */ + linenum = (linenum < header_end_line) ? 0 : linenum - header_end_line + 1; + } + } return linenum; } diff --git a/lsystem.c b/lsystem.c index 429a806318d5..c32d5d59d4c2 100644 --- a/lsystem.c +++ b/lsystem.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -37,7 +37,7 @@ public POSITION start_attnpos = NULL_POSITION; public POSITION end_attnpos = NULL_POSITION; public int wscroll; public constant char *progname; -public int quitting; +public lbool quitting = FALSE; public int dohelp; public char * init_header = NULL; static int secure_allow_features; @@ -59,20 +59,24 @@ extern char * tagoption; extern int jump_sline; #endif +#if HAVE_TIME +public time_type less_start_time; +#endif + #ifdef WIN32 static wchar_t consoleTitle[256]; #endif public int one_screen; extern int less_is_more; -extern int missing_cap; +extern lbool missing_cap; extern int know_dumb; extern int quit_if_one_screen; extern int no_init; extern int errmsgs; extern int redraw_on_quit; extern int term_init_done; -extern int first_time; +extern lbool first_time; #if MSDOS_COMPILER==WIN32C && (defined(MINGW) || defined(_MSC_VER)) /* malloc'ed 0-terminated utf8 of 0-terminated wide ws, or null on errors */ @@ -152,6 +156,7 @@ cleanup: } #endif +#if !SECURE static int security_feature_error(constant char *type, size_t len, constant char *name) { PARG parg; @@ -200,6 +205,7 @@ static int security_feature(constant char *name, size_t len) return security_feature_error("invalid", len, name); return features[match].sf_value; } +#endif /* !SECURE */ /* * Set the secure_allow_features bitmask, which controls @@ -297,7 +303,8 @@ int main(int argc, constant char *argv[]) * If the name of the executable program is "more", * act like LESS_IS_MORE is set. */ - if (strcmp(last_component(progname), "more") == 0) + if (strcmp(last_component(progname), "more") == 0 && + isnullenv(lgetenv("LESS_IS_MORE"))) less_is_more = 1; init_prompt(); @@ -305,7 +312,7 @@ int main(int argc, constant char *argv[]) init_unsupport(); s = lgetenv(less_is_more ? "MORE" : "LESS"); if (s != NULL) - scan_option(s); + scan_option(s, TRUE); #define isoptstring(s) (((s)[0] == '-' || (s)[0] == '+') && (s)[1] != '\0') while (argc > 0 && (isoptstring(*argv) || isoptpending())) @@ -314,7 +321,7 @@ int main(int argc, constant char *argv[]) argc--; if (strcmp(s, "--") == 0) break; - scan_option(s); + scan_option(s, FALSE); } #undef isoptstring @@ -333,7 +340,7 @@ int main(int argc, constant char *argv[]) #if EDITOR editor = lgetenv("VISUAL"); - if (editor == NULL || *editor == '\0') + if (isnullenv(editor)) { editor = lgetenv("EDITOR"); if (isnullenv(editor)) @@ -406,6 +413,9 @@ int main(int argc, constant char *argv[]) open_getchr(); raw_mode(1); init_signals(1); +#if HAVE_TIME + less_start_time = get_time(); +#endif /* * Select the first file to examine. @@ -580,7 +590,7 @@ public void quit(int status) status = save_status; else save_status = status; - quitting = 1; + quitting = TRUE; check_altpipe_error(); if (interactive()) clear_bot(); @@ -593,7 +603,7 @@ public void quit(int status) * alternate screen, which now (since deinit) cannot be seen. * redraw_on_quit tells us to redraw it on the main screen. */ - first_time = 1; /* Don't print "skipping" or tildes */ + first_time = TRUE; /* Don't print "skipping" or tildes */ repaint(); flush(); } @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. diff --git a/mkhelp.pl b/mkhelp.pl index e93535b9d6cc..452d9a0aef31 100755 --- a/mkhelp.pl +++ b/mkhelp.pl @@ -7,7 +7,7 @@ use strict; # whose content is the input to this script. { - my ($sec,$min,$hour,$mday,$mon,$year) = gmtime(); + my ($sec,$min,$hour,$mday,$mon,$year) = gmtime($ENV{SOURCE_DATE_EPOCH} // time()); printf "/* This file was generated by mkhelp.pl from less.hlp at %d:%02d on %d/%d/%d */\n", $hour, $min, $year+1900, $mon+1, $mday; print "#include \"less.h\"\n"; diff --git a/mkhelp.py b/mkhelp.py index 029f1505c2b6..9504e80aa0a9 100755 --- a/mkhelp.py +++ b/mkhelp.py @@ -2,8 +2,10 @@ import time import sys +import os -time = time.gmtime() +epoch = os.environ.get("SOURCE_DATE_EPOCH") +time = time.gmtime(None if epoch == None else int(epoch)) print("/* This file was generated by mkhelp.py from less.hlp at "\ "%d:%02d GMT on %d/%d/%d */\n" % (time.tm_hour, time.tm_min, time.tm_year, time.tm_mon, time.tm_mday)) @@ -52,9 +52,10 @@ sub main { } } - my $date = `date`; - chomp $date; - print "/* Generated by \"$0 $args\" on $date */\n"; + my ($sec,$min,$hour,$mday,$mon,$year) = gmtime($ENV{SOURCE_DATE_EPOCH} // time()); + my @month = ( "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ); + printf "/* Generated by \"%s %s\" on %s %2d %2d:%02d:%02d GMT %d */\n", + $0, $args, $month[$mon], $mday, $hour, $min, $sec, $year+1900; my $last_code = 0; my $start_range = 0; diff --git a/optfunc.c b/optfunc.c index 68a458b3ae54..fda46b588f21 100644 --- a/optfunc.c +++ b/optfunc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -66,6 +66,7 @@ extern int chopline; extern int tabstops[]; extern int ntabstops; extern int tabdefault; +extern int no_paste; extern char intr_char; extern int nosearch_header_lines; extern int nosearch_header_cols; @@ -528,7 +529,7 @@ public void opt__V(int type, constant char *s) putstr(" regular expressions)\n"); { char constant *copyright = - "Copyright (C) 1984-2024 Mark Nudelman\n\n"; + "Copyright (C) 1984-2025 Mark Nudelman\n\n"; putstr(copyright); } if (version[strlen(version)-1] == 'x') @@ -1164,7 +1165,8 @@ static void do_nosearch_headers(int type, int no_header_lines, int no_header_col case TOGGLE: nosearch_header_lines = no_header_lines; nosearch_header_cols = no_header_cols; - break; + if (type != TOGGLE) break; + /*FALLTHRU*/ case QUERY: if (nosearch_header_lines && nosearch_header_cols) error("Search does not include header lines or columns", NULL_PARG); @@ -1195,6 +1197,23 @@ public void opt_nosearch_header_cols(int type, constant char *s) do_nosearch_headers(type, 0, 1); } + /*ARGSUSED*/ +public void opt_no_paste(int type, constant char *s) +{ + switch (type) + { + case TOGGLE: + if (no_paste) + init_bracketed_paste(); + else + deinit_bracketed_paste(); + break; + case INIT: + case QUERY: + break; + } +} + #if LESSTEST /* * Handler for the --tty option. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -24,12 +24,13 @@ static struct loption *pendopt; public lbool plusoption = FALSE; static constant char *optstring(constant char *s, char **p_str, constant char *printopt, constant char *validchars); -static int flip_triple(int val, int lc); +static int flip_triple(int val, lbool lc); extern int less_is_more; extern int quit_at_eof; extern char *every_first_cmd; extern int opt_use_backslash; +extern int ctldisp; /* * Return a printable description of an option. @@ -60,7 +61,7 @@ public constant char * propt(char c) * Scan an argument (either from the command line or from the * LESS environment variable) and process it. */ -public void scan_option(constant char *s) +public void scan_option(constant char *s, lbool is_env) { struct loption *o; char optc; @@ -68,7 +69,7 @@ public void scan_option(constant char *s) constant char *printopt; char *str; lbool set_default; - int lc; + lbool lc; lbool ambig; PARG parg; @@ -84,14 +85,14 @@ public void scan_option(constant char *s) */ if (pendopt != NULL) { - if (!(pendopt->otype & UNSUPPORTED)) + if (!(pendopt->otype & O_UNSUPPORTED)) { switch (pendopt->otype & OTYPE) { - case STRING: + case O_STRING: (*pendopt->ofunc)(INIT, s); break; - case NUMBER: + case O_NUMBER: printopt = opt_desc(pendopt); *(pendopt->ovar) = getnumc(&s, printopt, NULL); break; @@ -203,8 +204,8 @@ public void scan_option(constant char *s) * The option name is followed by "=value". */ if (o != NULL && - (o->otype & OTYPE) != STRING && - (o->otype & OTYPE) != NUMBER) + (o->otype & OTYPE) != O_STRING && + (o->otype & OTYPE) != O_NUMBER) { parg.p_string = printopt; error("The %s option should not be followed by =", @@ -236,8 +237,8 @@ public void scan_option(constant char *s) str = NULL; switch (o->otype & OTYPE) { - case BOOL: - if (o->otype & UNSUPPORTED) + case O_BOOL: + if (o->otype & O_UNSUPPORTED) break; if (o->ovar != NULL) { @@ -247,18 +248,21 @@ public void scan_option(constant char *s) *(o->ovar) = ! o->odefault; } break; - case TRIPLE: - if (o->otype & UNSUPPORTED) + case O_TRIPLE: + if (o->otype & O_UNSUPPORTED) break; if (o->ovar != NULL) { if (set_default) *(o->ovar) = o->odefault; + else if (is_env && o->ovar == &ctldisp) + /* If -r appears in an env var, treat it as -R. */ + *(o->ovar) = OPT_ONPLUS; else *(o->ovar) = flip_triple(o->odefault, lc); } break; - case STRING: + case O_STRING: if (*s == '\0') { /* @@ -280,13 +284,13 @@ public void scan_option(constant char *s) if (s == NULL) return; break; - case NUMBER: + case O_NUMBER: if (*s == '\0') { pendopt = o; return; } - if (o->otype & UNSUPPORTED) + if (o->otype & O_UNSUPPORTED) break; *(o->ovar) = getnumc(&s, printopt, NULL); break; @@ -294,7 +298,7 @@ public void scan_option(constant char *s) /* * If the option has a handling function, call it. */ - if (o->ofunc != NULL && !(o->otype & UNSUPPORTED)) + if (o->ofunc != NULL && !(o->otype & O_UNSUPPORTED)) (*o->ofunc)(INIT, str); if (str != NULL) free(str); @@ -310,7 +314,7 @@ public void scan_option(constant char *s) * OPT_UNSET set to the default value * OPT_SET set to the inverse of the default value */ -public void toggle_option(struct loption *o, int lower, constant char *s, int how_toggle) +public void toggle_option(struct loption *o, lbool lower, constant char *s, int how_toggle) { int num; int no_prompt; @@ -326,14 +330,14 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho return; } - if (how_toggle == OPT_TOGGLE && (o->otype & NO_TOGGLE)) + if (how_toggle == OPT_TOGGLE && (o->otype & O_NO_TOGGLE)) { parg.p_string = opt_desc(o); error("Cannot change the %s option", &parg); return; } - if (how_toggle == OPT_NO_TOGGLE && (o->otype & NO_QUERY)) + if (how_toggle == OPT_NO_TOGGLE && (o->otype & O_NO_QUERY)) { parg.p_string = opt_desc(o); error("Cannot query the %s option", &parg); @@ -348,15 +352,15 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho */ switch (o->otype & OTYPE) { - case STRING: - case NUMBER: + case O_STRING: + case O_NUMBER: if (how_toggle == OPT_TOGGLE && *s == '\0') how_toggle = OPT_NO_TOGGLE; break; } #if HILITE_SEARCH - if (how_toggle != OPT_NO_TOGGLE && (o->otype & HL_REPAINT)) + if (how_toggle != OPT_NO_TOGGLE && (o->otype & O_HL_REPAINT)) repaint_hilite(FALSE); #endif @@ -367,7 +371,7 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho { switch (o->otype & OTYPE) { - case BOOL: + case O_BOOL: /* * Boolean. */ @@ -387,7 +391,7 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho } } break; - case TRIPLE: + case O_TRIPLE: /* * Triple: * If user gave the lower case letter, then switch @@ -411,7 +415,7 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho } } break; - case STRING: + case O_STRING: /* * String: don't do anything here. * The handling function will do everything. @@ -420,12 +424,12 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho { case OPT_SET: case OPT_UNSET: - error("Cannot use \"-+\" or \"--\" for a string option", + error("Cannot use \"-+\" or \"-!\" for a string option", NULL_PARG); return; } break; - case NUMBER: + case O_NUMBER: /* * Number: set the variable to the given number. */ @@ -456,7 +460,7 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho (*o->ofunc)((how_toggle==OPT_NO_TOGGLE) ? QUERY : TOGGLE, s); #if HILITE_SEARCH - if (how_toggle != OPT_NO_TOGGLE && (o->otype & HL_REPAINT)) + if (how_toggle != OPT_NO_TOGGLE && (o->otype & O_HL_REPAINT)) chg_hilite(); #endif @@ -467,15 +471,15 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho */ switch (o->otype & OTYPE) { - case BOOL: - case TRIPLE: + case O_BOOL: + case O_TRIPLE: /* * Print the odesc message. */ if (o->ovar != NULL) error(o->odesc[*(o->ovar)], NULL_PARG); break; - case NUMBER: + case O_NUMBER: /* * The message is in odesc[1] and has a %d for * the value of the variable. @@ -483,7 +487,7 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho parg.p_int = *(o->ovar); error(o->odesc[1], &parg); break; - case STRING: + case O_STRING: /* * Message was already printed by the handling function. */ @@ -491,14 +495,14 @@ public void toggle_option(struct loption *o, int lower, constant char *s, int ho } } - if (how_toggle != OPT_NO_TOGGLE && (o->otype & REPAINT)) + if (how_toggle != OPT_NO_TOGGLE && (o->otype & O_REPAINT)) screen_trashed(); } /* * "Toggle" a triple-valued option. */ -static int flip_triple(int val, int lc) +static int flip_triple(int val, lbool lc) { if (lc) return ((val == OPT_ON) ? OPT_OFF : OPT_ON); @@ -513,7 +517,7 @@ public int opt_has_param(struct loption *o) { if (o == NULL) return (0); - if (o->otype & (BOOL|TRIPLE|NOVAR|NO_TOGGLE)) + if (o->otype & (O_BOOL|O_TRIPLE|O_NOVAR|O_NO_TOGGLE)) return (0); return (1); } @@ -524,7 +528,7 @@ public int opt_has_param(struct loption *o) */ public constant char * opt_prompt(struct loption *o) { - if (o == NULL || (o->otype & (STRING|NUMBER)) == 0) + if (o == NULL || (o->otype & (O_STRING|O_NUMBER)) == 0) return ("?"); return (o->odesc[0]); } @@ -766,7 +770,7 @@ public void init_unsupport(void) if (opt != NULL) ++s; } if (opt != NULL) - opt->otype |= UNSUPPORTED; + opt->otype |= O_UNSUPPORTED; } } @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -13,19 +13,19 @@ /* * Types of options. */ -#define BOOL 01 /* Boolean option: 0 or 1 */ -#define TRIPLE 02 /* Triple-valued option: 0, 1 or 2 */ -#define NUMBER 04 /* Numeric option */ -#define STRING 010 /* String-valued option */ -#define NOVAR 020 /* No associated variable */ -#define REPAINT 040 /* Repaint screen after toggling option */ -#define NO_TOGGLE 0100 /* Option cannot be toggled with "-" cmd */ -#define HL_REPAINT 0200 /* Repaint hilites after toggling option */ -#define NO_QUERY 0400 /* Option cannot be queried with "_" cmd */ -#define INIT_HANDLER 01000 /* Call option handler function at startup */ -#define UNSUPPORTED 02000 /* Option is unsupported via LESS_UNSUPPORT */ +#define O_BOOL 01 /* Boolean option: 0 or 1 */ +#define O_TRIPLE 02 /* Triple-valued option: 0, 1 or 2 */ +#define O_NUMBER 04 /* Numeric option */ +#define O_STRING 010 /* String-valued option */ +#define O_NOVAR 020 /* No associated variable */ +#define O_REPAINT 040 /* Repaint screen after toggling option */ +#define O_NO_TOGGLE 0100 /* Option cannot be toggled with "-" cmd */ +#define O_HL_REPAINT 0200 /* Repaint hilites after toggling option */ +#define O_NO_QUERY 0400 /* Option cannot be queried with "_" cmd */ +#define O_INIT_HANDLER 01000 /* Call option handler function at startup */ +#define O_UNSUPPORTED 02000 /* Option is unsupported via LESS_UNSUPPORT */ -#define OTYPE (BOOL|TRIPLE|NUMBER|STRING|NOVAR) +#define OTYPE (O_BOOL|O_TRIPLE|O_NUMBER|O_STRING|O_NOVAR) #define OLETTER_NONE '\1' /* Invalid option letter */ @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -81,6 +81,9 @@ public int proc_backspace; /* Special handling of backspace */ public int proc_tab; /* Special handling of tab */ public int proc_return; /* Special handling of carriage return */ public int match_shift; /* Extra horizontal shift on search match */ +public int no_paste; /* Don't accept pasted input */ +public int no_edit_warn; /* Don't warn when editing a LESSOPENed file */ +public int stop_on_form_feed; /* Stop scrolling on a line starting with form feed */ public long match_shift_fraction = NUM_FRAC_DENOM/2; /* 1/2 of screen width */ public char intr_char = CONTROL('X'); /* Char to interrupt reads */ #if HILITE_SEARCH @@ -161,6 +164,10 @@ static struct optname use_color_optname = { "use-color", NULL }; static struct optname want_filesize_optname = { "file-size", NULL }; static struct optname status_line_optname = { "status-line", NULL }; static struct optname header_optname = { "header", NULL }; +static struct optname no_paste_optname = { "no-paste", NULL }; +static struct optname form_feed_optname = { "form-feed", NULL }; +static struct optname no_edit_warn_optname2 = { "no-warn-edit", NULL }; +static struct optname no_edit_warn_optname = { "no-edit-warn", &no_edit_warn_optname2 }; static struct optname nonum_headers_optname = { "no-number-headers", NULL }; static struct optname nosearch_headers_optname = { "no-search-headers", NULL }; static struct optname nosearch_header_lines_optname = { "no-search-header-lines", NULL }; @@ -197,7 +204,7 @@ static struct optname ttyin_name_optname = { "tty", NULL }; static struct loption option[] = { { 'a', &a_optname, - TRIPLE, OPT_ONPLUS, &how_search, NULL, + O_TRIPLE, OPT_ONPLUS, &how_search, NULL, { "Search includes displayed screen", "Search skips displayed screen", @@ -206,7 +213,7 @@ static struct loption option[] = }, { 'b', &b_optname, - NUMBER|INIT_HANDLER, 64, &bufspace, opt_b, + O_NUMBER|O_INIT_HANDLER, 64, &bufspace, opt_b, { "Max buffer space per file (K): ", "Max buffer space per file: %dK", @@ -214,7 +221,7 @@ static struct loption option[] = } }, { 'B', &B__optname, - BOOL, OPT_ON, &autobuf, NULL, + O_BOOL, OPT_ON, &autobuf, NULL, { "Don't automatically allocate buffers", "Automatically allocate buffers when needed", @@ -222,7 +229,7 @@ static struct loption option[] = } }, { 'c', &c_optname, - TRIPLE, OPT_OFF, &top_scroll, NULL, + O_TRIPLE, OPT_OFF, &top_scroll, NULL, { "Repaint by scrolling from bottom of screen", "Repaint by painting from top of screen", @@ -230,7 +237,7 @@ static struct loption option[] = } }, { 'd', &d_optname, - BOOL|NO_TOGGLE, OPT_OFF, &know_dumb, NULL, + O_BOOL|O_NO_TOGGLE, OPT_OFF, &know_dumb, NULL, { "Assume intelligent terminal", "Assume dumb terminal", @@ -238,11 +245,11 @@ static struct loption option[] = } }, { 'D', &D__optname, - STRING|REPAINT|NO_QUERY, 0, NULL, opt_D, + O_STRING|O_REPAINT|O_NO_QUERY, 0, NULL, opt_D, { "color desc: ", "s", NULL } }, { 'e', &e_optname, - TRIPLE, OPT_OFF, &quit_at_eof, NULL, + O_TRIPLE, OPT_OFF, &quit_at_eof, NULL, { "Don't quit at end-of-file", "Quit at end-of-file", @@ -250,7 +257,7 @@ static struct loption option[] = } }, { 'f', &f_optname, - BOOL, OPT_OFF, &force_open, NULL, + O_BOOL, OPT_OFF, &force_open, NULL, { "Open only regular files", "Open even non-regular files", @@ -258,7 +265,7 @@ static struct loption option[] = } }, { 'F', &F__optname, - BOOL, OPT_OFF, &quit_if_one_screen, NULL, + O_BOOL, OPT_OFF, &quit_if_one_screen, NULL, { "Don't quit if end-of-file on first screen", "Quit if end-of-file on first screen", @@ -267,7 +274,7 @@ static struct loption option[] = }, #if HILITE_SEARCH { 'g', &g_optname, - TRIPLE|HL_REPAINT, OPT_ONPLUS, &hilite_search, NULL, + O_TRIPLE|O_HL_REPAINT, OPT_ONPLUS, &hilite_search, NULL, { "Don't highlight search matches", "Highlight matches for previous search only", @@ -276,7 +283,7 @@ static struct loption option[] = }, #endif { 'h', &h_optname, - NUMBER, -1, &back_scroll, NULL, + O_NUMBER, -1, &back_scroll, NULL, { "Backwards scroll limit: ", "Backwards scroll limit is %d lines", @@ -284,7 +291,7 @@ static struct loption option[] = } }, { 'i', &i_optname, - TRIPLE|HL_REPAINT, OPT_OFF, &caseless, opt_i, + O_TRIPLE|O_HL_REPAINT, OPT_OFF, &caseless, opt_i, { "Case is significant in searches", "Ignore case in searches", @@ -292,7 +299,7 @@ static struct loption option[] = } }, { 'j', &j_optname, - STRING, 0, NULL, opt_j, + O_STRING, 0, NULL, opt_j, { "Target line: ", "-.d", @@ -300,7 +307,7 @@ static struct loption option[] = } }, { 'J', &J__optname, - BOOL|REPAINT, OPT_OFF, &status_col, NULL, + O_BOOL|O_REPAINT, OPT_OFF, &status_col, NULL, { "Don't display a status column", "Display a status column", @@ -309,22 +316,22 @@ static struct loption option[] = }, #if USERFILE { 'k', &k_optname, - STRING|NO_TOGGLE|NO_QUERY, 0, NULL, opt_k, + O_STRING|O_NO_TOGGLE|O_NO_QUERY, 0, NULL, opt_k, { NULL, NULL, NULL } }, #if HAVE_LESSKEYSRC { OLETTER_NONE, &kc_optname, - STRING|NO_TOGGLE|NO_QUERY, 0, NULL, opt_kc, + O_STRING|O_NO_TOGGLE|O_NO_QUERY, 0, NULL, opt_kc, { NULL, NULL, NULL } }, { OLETTER_NONE, &ks_optname, - STRING|NO_TOGGLE|NO_QUERY, 0, NULL, opt_ks, + O_STRING|O_NO_TOGGLE|O_NO_QUERY, 0, NULL, opt_ks, { NULL, NULL, NULL } }, #endif /* HAVE_LESSKEYSRC */ #endif { 'K', &K__optname, - BOOL, OPT_OFF, &quit_on_intr, NULL, + O_BOOL, OPT_OFF, &quit_on_intr, NULL, { "Interrupt (ctrl-C) returns to prompt", "Interrupt (ctrl-C) exits less", @@ -332,7 +339,7 @@ static struct loption option[] = } }, { 'L', &L__optname, - BOOL, OPT_ON, &use_lessopen, NULL, + O_BOOL, OPT_ON, &use_lessopen, NULL, { "Don't use the LESSOPEN filter", "Use the LESSOPEN filter", @@ -340,7 +347,7 @@ static struct loption option[] = } }, { 'm', &m_optname, - TRIPLE, OPT_OFF, &pr_type, NULL, + O_TRIPLE, OPT_OFF, &pr_type, NULL, { "Short prompt", "Medium prompt", @@ -348,7 +355,7 @@ static struct loption option[] = } }, { 'n', &n_optname, - TRIPLE|REPAINT, OPT_ON, &linenums, NULL, + O_TRIPLE|O_REPAINT, OPT_ON, &linenums, NULL, { "Don't use line numbers", "Use line numbers", @@ -357,24 +364,24 @@ static struct loption option[] = }, #if LOGFILE { 'o', &o_optname, - STRING, 0, NULL, opt_o, + O_STRING, 0, NULL, opt_o, { "log file: ", NULL, NULL } }, { 'O', &O__optname, - STRING, 0, NULL, opt__O, + O_STRING, 0, NULL, opt__O, { "Log file: ", NULL, NULL } }, #endif { 'p', &p_optname, - STRING|NO_TOGGLE|NO_QUERY, 0, NULL, opt_p, + O_STRING|O_NO_TOGGLE|O_NO_QUERY, 0, NULL, opt_p, { NULL, NULL, NULL } }, { 'P', &P__optname, - STRING, 0, NULL, opt__P, + O_STRING, 0, NULL, opt__P, { "prompt: ", NULL, NULL } }, { 'q', &q_optname, - TRIPLE, OPT_OFF, &quiet, NULL, + O_TRIPLE, OPT_OFF, &quiet, NULL, { "Ring the bell for errors AND at eof/bof", "Ring the bell for errors but not at eof/bof", @@ -382,7 +389,7 @@ static struct loption option[] = } }, { 'r', &r_optname, - TRIPLE|REPAINT, OPT_OFF, &ctldisp, NULL, + O_TRIPLE|O_REPAINT, OPT_OFF, &ctldisp, NULL, { "Display control characters as ^X", "Display control characters directly (not recommended)", @@ -390,7 +397,7 @@ static struct loption option[] = } }, { 's', &s_optname, - BOOL|REPAINT, OPT_OFF, &squeeze, NULL, + O_BOOL|O_REPAINT, OPT_OFF, &squeeze, NULL, { "Display all blank lines", "Squeeze multiple blank lines", @@ -398,7 +405,7 @@ static struct loption option[] = } }, { 'S', &S__optname, - BOOL|REPAINT, OPT_OFF, &chopline, opt__S, + O_BOOL|O_REPAINT, OPT_OFF, &chopline, opt__S, { "Fold long lines", "Chop long lines", @@ -407,16 +414,16 @@ static struct loption option[] = }, #if TAGS { 't', &t_optname, - STRING|NO_QUERY, 0, NULL, opt_t, + O_STRING|O_NO_QUERY, 0, NULL, opt_t, { "tag: ", NULL, NULL } }, { 'T', &T__optname, - STRING, 0, NULL, opt__T, + O_STRING, 0, NULL, opt__T, { "tags file: ", NULL, NULL } }, #endif { 'u', &u_optname, - TRIPLE|REPAINT|HL_REPAINT, OPT_OFF, &bs_mode, NULL, + O_TRIPLE|O_REPAINT|O_HL_REPAINT, OPT_OFF, &bs_mode, NULL, { "Display underlined text in underline mode", "Backspaces cause overstrike", @@ -424,11 +431,11 @@ static struct loption option[] = } }, { 'V', &V__optname, - NOVAR, 0, NULL, opt__V, + O_NOVAR, 0, NULL, opt__V, { NULL, NULL, NULL } }, { 'w', &w_optname, - TRIPLE|REPAINT, OPT_OFF, &show_attn, NULL, + O_TRIPLE|O_REPAINT, OPT_OFF, &show_attn, NULL, { "Don't highlight first unread line", "Highlight first unread line after forward-screen", @@ -436,7 +443,7 @@ static struct loption option[] = } }, { 'x', &x_optname, - STRING|REPAINT, 0, NULL, opt_x, + O_STRING|O_REPAINT, 0, NULL, opt_x, { "Tab stops: ", "d,", @@ -444,7 +451,7 @@ static struct loption option[] = } }, { 'X', &X__optname, - BOOL|NO_TOGGLE, OPT_OFF, &no_init, NULL, + O_BOOL|O_NO_TOGGLE, OPT_OFF, &no_init, NULL, { "Send init/deinit strings to terminal", "Don't use init/deinit strings", @@ -452,7 +459,7 @@ static struct loption option[] = } }, { 'y', &y_optname, - NUMBER, -1, &forw_scroll, NULL, + O_NUMBER, -1, &forw_scroll, NULL, { "Forward scroll limit: ", "Forward scroll limit is %d lines", @@ -460,7 +467,7 @@ static struct loption option[] = } }, { 'z', &z_optname, - NUMBER, -1, &swindow, NULL, + O_NUMBER, -1, &swindow, NULL, { "Scroll window size: ", "Scroll window size is %d lines", @@ -468,11 +475,11 @@ static struct loption option[] = } }, { '"', "e_optname, - STRING, 0, NULL, opt_quote, + O_STRING, 0, NULL, opt_quote, { "quotes: ", "s", NULL } }, { '~', &tilde_optname, - BOOL|REPAINT, OPT_ON, &twiddle, NULL, + O_BOOL|O_REPAINT, OPT_ON, &twiddle, NULL, { "Don't show tildes after end of file", "Show tildes after end of file", @@ -480,11 +487,11 @@ static struct loption option[] = } }, { '?', &query_optname, - NOVAR, 0, NULL, opt_query, + O_NOVAR, 0, NULL, opt_query, { NULL, NULL, NULL } }, { '#', £_optname, - STRING, 0, NULL, opt_shift, + O_STRING, 0, NULL, opt_shift, { "Horizontal shift: ", ".d", @@ -492,7 +499,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &keypad_optname, - BOOL|NO_TOGGLE, OPT_OFF, &no_keypad, NULL, + O_BOOL|O_NO_TOGGLE, OPT_OFF, &no_keypad, NULL, { "Use keypad mode", "Don't use keypad mode", @@ -500,7 +507,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &oldbot_optname, - BOOL, OPT_OFF, &oldbot, NULL, + O_BOOL, OPT_OFF, &oldbot, NULL, { "Use new bottom of screen behavior", "Use old bottom of screen behavior", @@ -508,7 +515,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &follow_optname, - BOOL, FOLLOW_DESC, &follow_mode, NULL, + O_BOOL, FOLLOW_DESC, &follow_mode, NULL, { "F command follows file descriptor", "F command follows file name", @@ -516,7 +523,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &use_backslash_optname, - BOOL, OPT_OFF, &opt_use_backslash, NULL, + O_BOOL, OPT_OFF, &opt_use_backslash, NULL, { "Use backslash escaping in command line parameters", "Don't use backslash escaping in command line parameters", @@ -524,11 +531,11 @@ static struct loption option[] = } }, { OLETTER_NONE, &rscroll_optname, - STRING|REPAINT|INIT_HANDLER, 0, NULL, opt_rscroll, + O_STRING|O_REPAINT|O_INIT_HANDLER, 0, NULL, opt_rscroll, { "rscroll character: ", "s", NULL } }, { OLETTER_NONE, &nohistdups_optname, - BOOL, OPT_OFF, &no_hist_dups, NULL, + O_BOOL, OPT_OFF, &no_hist_dups, NULL, { "Allow duplicates in history list", "Remove duplicates from history list", @@ -536,7 +543,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &mousecap_optname, - TRIPLE, OPT_OFF, &mousecap, opt_mousecap, + O_TRIPLE, OPT_OFF, &mousecap, opt_mousecap, { "Ignore mouse input", "Use the mouse for scrolling", @@ -544,7 +551,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &wheel_lines_optname, - NUMBER|INIT_HANDLER, 0, &wheel_lines, opt_wheel_lines, + O_NUMBER|O_INIT_HANDLER, 0, &wheel_lines, opt_wheel_lines, { "Lines to scroll on mouse wheel: ", "Scroll %d line(s) on mouse wheel", @@ -552,7 +559,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &perma_marks_optname, - BOOL, OPT_OFF, &perma_marks, NULL, + O_BOOL, OPT_OFF, &perma_marks, NULL, { "Don't save marks in history file", "Save marks in history file", @@ -560,7 +567,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &linenum_width_optname, - NUMBER|REPAINT, MIN_LINENUM_WIDTH, &linenum_width, opt_linenum_width, + O_NUMBER|O_REPAINT, MIN_LINENUM_WIDTH, &linenum_width, opt_linenum_width, { "Line number width: ", "Line number width is %d chars", @@ -568,7 +575,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &status_col_width_optname, - NUMBER|REPAINT, 2, &status_col_width, opt_status_col_width, + O_NUMBER|O_REPAINT, 2, &status_col_width, opt_status_col_width, { "Status column width: ", "Status column width is %d chars", @@ -576,7 +583,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &incr_search_optname, - BOOL, OPT_OFF, &incr_search, NULL, + O_BOOL, OPT_OFF, &incr_search, NULL, { "Incremental search is off", "Incremental search is on", @@ -584,7 +591,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &use_color_optname, - BOOL|REPAINT, OPT_OFF, &use_color, NULL, + O_BOOL|O_REPAINT, OPT_OFF, &use_color, NULL, { "Don't use color", "Use color", @@ -592,7 +599,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &want_filesize_optname, - BOOL|REPAINT, OPT_OFF, &want_filesize, opt_filesize, + O_BOOL|O_REPAINT, OPT_OFF, &want_filesize, opt_filesize, { "Don't get size of each file", "Get size of each file", @@ -600,7 +607,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &status_line_optname, - BOOL|REPAINT, OPT_OFF, &status_line, NULL, + O_BOOL|O_REPAINT, OPT_OFF, &status_line, NULL, { "Don't color each line with its status column color", "Color each line with its status column color", @@ -608,11 +615,35 @@ static struct loption option[] = } }, { OLETTER_NONE, &header_optname, - STRING|REPAINT, 0, NULL, opt_header, + O_STRING|O_REPAINT, 0, NULL, opt_header, { "Header lines: ", "d,", NULL } }, + { OLETTER_NONE, &no_paste_optname, + O_BOOL, OPT_OFF, &no_paste, opt_no_paste, + { + "Accept pasted input", + "Ignore pasted input", + NULL + } + }, + { OLETTER_NONE, &form_feed_optname, + O_BOOL, OPT_OFF, &stop_on_form_feed, NULL, + { + "Don't stop on form feed", + "Stop on form feed", + NULL + } + }, + { OLETTER_NONE, &no_edit_warn_optname, + O_BOOL, OPT_OFF, &no_edit_warn, NULL, + { + "Warn when editing a file opened via LESSOPEN", + "Don't warn when editing a file opened via LESSOPEN", + NULL + } + }, { OLETTER_NONE, &nonum_headers_optname, - BOOL|REPAINT, 0, &nonum_headers, NULL, + O_BOOL|O_REPAINT, 0, &nonum_headers, NULL, { "Number header lines", "Don't number header lines", @@ -620,25 +651,25 @@ static struct loption option[] = } }, { OLETTER_NONE, &nosearch_headers_optname, - BOOL|HL_REPAINT, 0, NULL, opt_nosearch_headers, + O_BOOL|O_HL_REPAINT, 0, NULL, opt_nosearch_headers, { NULL, NULL, NULL } }, { OLETTER_NONE, &nosearch_header_lines_optname, - BOOL|HL_REPAINT, 0, NULL, opt_nosearch_header_lines, + O_BOOL|O_HL_REPAINT, 0, NULL, opt_nosearch_header_lines, { NULL, NULL, NULL } }, { OLETTER_NONE, &nosearch_header_cols_optname, - BOOL|HL_REPAINT, 0, NULL, opt_nosearch_header_cols, + O_BOOL|O_HL_REPAINT, 0, NULL, opt_nosearch_header_cols, { NULL, NULL, NULL } }, { OLETTER_NONE, &redraw_on_quit_optname, - BOOL, OPT_OFF, &redraw_on_quit, NULL, + O_BOOL, OPT_OFF, &redraw_on_quit, NULL, { "Don't redraw screen when quitting", "Redraw last screen when quitting", @@ -646,11 +677,11 @@ static struct loption option[] = } }, { OLETTER_NONE, &search_type_optname, - STRING, 0, NULL, opt_search_type, + O_STRING, 0, NULL, opt_search_type, { "Search options: ", "s", NULL } }, { OLETTER_NONE, &exit_F_on_close_optname, - BOOL, OPT_OFF, &exit_F_on_close, NULL, + O_BOOL, OPT_OFF, &exit_F_on_close, NULL, { "Don't exit F command when input closes", "Exit F command when input closes", @@ -658,7 +689,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &no_vbell_optname, - BOOL, OPT_OFF, &no_vbell, NULL, + O_BOOL, OPT_OFF, &no_vbell, NULL, { "Display visual bell", "Don't display visual bell", @@ -666,7 +697,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &modelines_optname, - NUMBER, 0, &modelines, NULL, + O_NUMBER, 0, &modelines, NULL, { "Lines to read looking for modelines: ", "Read %d lines looking for modelines", @@ -674,11 +705,11 @@ static struct loption option[] = } }, { OLETTER_NONE, &intr_optname, - STRING, 0, NULL, opt_intr, + O_STRING, 0, NULL, opt_intr, { "interrupt character: ", "s", NULL } }, { OLETTER_NONE, &wordwrap_optname, - BOOL|REPAINT, OPT_OFF, &wordwrap, NULL, + O_BOOL|O_REPAINT, OPT_OFF, &wordwrap, NULL, { "Wrap lines at any character", "Wrap lines at spaces", @@ -686,7 +717,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &show_preproc_error_optname, - BOOL, OPT_OFF, &show_preproc_error, NULL, + O_BOOL, OPT_OFF, &show_preproc_error, NULL, { "Don't show error message if preprocessor fails", "Show error message if preprocessor fails", @@ -694,7 +725,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &proc_backspace_optname, - TRIPLE|REPAINT|HL_REPAINT, OPT_OFF, &proc_backspace, NULL, + O_TRIPLE|O_REPAINT|O_HL_REPAINT, OPT_OFF, &proc_backspace, NULL, { "Backspace handling is specified by the -U option", "Display underline text in underline mode", @@ -702,7 +733,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &proc_tab_optname, - TRIPLE|REPAINT|HL_REPAINT, OPT_OFF, &proc_tab, NULL, + O_TRIPLE|O_REPAINT|O_HL_REPAINT, OPT_OFF, &proc_tab, NULL, { "Tab handling is specified by the -U option", "Expand tabs to spaces", @@ -710,7 +741,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &proc_return_optname, - TRIPLE|REPAINT|HL_REPAINT, OPT_OFF, &proc_return, NULL, + O_TRIPLE|O_REPAINT|O_HL_REPAINT, OPT_OFF, &proc_return, NULL, { "Carriage return handling is specified by the -U option", "Delete carriage return before newline", @@ -718,7 +749,7 @@ static struct loption option[] = } }, { OLETTER_NONE, &match_shift_optname, - STRING|INIT_HANDLER, 0, NULL, opt_match_shift, + O_STRING|O_INIT_HANDLER, 0, NULL, opt_match_shift, { "Search match shift: ", ".d", @@ -727,7 +758,7 @@ static struct loption option[] = }, #if LESSTEST { OLETTER_NONE, &ttyin_name_optname, - STRING|NO_TOGGLE, 0, NULL, opt_ttyin_name, + O_STRING|O_NO_TOGGLE, 0, NULL, opt_ttyin_name, { NULL, NULL, @@ -735,7 +766,7 @@ static struct loption option[] = } }, #endif /*LESSTEST*/ - { '\0', NULL, NOVAR, 0, NULL, NULL, { NULL, NULL, NULL } } + { '\0', NULL, O_NOVAR, 0, NULL, NULL, { NULL, NULL, NULL } } }; @@ -748,7 +779,7 @@ public void init_option(void) constant char *p; p = lgetenv("LESS_IS_MORE"); - if (!isnullenv(p)) + if (!isnullenv(p) && !(p[0] == '0' && p[1] == '\0')) less_is_more = 1; for (o = option; o->oletter != '\0'; o++) @@ -758,7 +789,7 @@ public void init_option(void) */ if (o->ovar != NULL) *(o->ovar) = o->odefault; - if (o->otype & INIT_HANDLER) + if (o->otype & O_INIT_HANDLER) (*(o->ofunc))(INIT, (char *) NULL); } } @@ -774,7 +805,7 @@ public struct loption * findopt(int c) { if (o->oletter == c) return (o); - if ((o->otype & TRIPLE) && ASCII_TO_UPPER(o->oletter) == c) + if ((o->otype & O_TRIPLE) && ASCII_TO_UPPER(o->oletter) == c) return (o); } return (NULL); @@ -857,7 +888,7 @@ public struct loption * findopt_name(constant char **p_optname, constant char ** ambig = FALSE; exact = (len == strlen(oname->oname)); } - if (!(o->otype & TRIPLE)) + if (!(o->otype & O_TRIPLE)) break; } } @@ -876,3 +907,41 @@ public struct loption * findopt_name(constant char **p_optname, constant char ** *p_oname = maxoname == NULL ? NULL : maxoname->oname; return (maxo); } + +/* + * Find all toggleable options whose names begin with a specified string. + * Return them in a space-separated string. + */ +public char * findopts_name(constant char *pfx) +{ + constant struct loption *o; + constant struct optname *oname; + struct xbuffer xbuf; + int uppercase; + + xbuf_init(&xbuf); + for (o = option; o->oletter != '\0'; o++) + { + if (o->otype & O_NO_TOGGLE) + continue; + for (oname = o->onames; oname != NULL; oname = oname->onext) + { + for (uppercase = 0; uppercase <= 1; uppercase++) + { + size_t len = sprefix(pfx, oname->oname, uppercase); + if (len >= strlen(pfx)) + { + constant char *np; + for (np = oname->oname; *np != '\0'; np++) + xbuf_add_char(&xbuf, uppercase && ASCII_IS_LOWER(*np) ? ASCII_TO_UPPER(*np) : *np); + xbuf_add_char(&xbuf, ' '); + } + if (!(o->otype & O_TRIPLE)) + break; + } + } + } + xbuf_pop(&xbuf); /* remove final space */ + xbuf_add_char(&xbuf, '\0'); + return (char *) xbuf.data; +} @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -32,6 +32,9 @@ #if HAVE_ERRNO_H #include <errno.h> #endif +#if MUST_DEFINE_ERRNO +extern int errno; +#endif #if HAVE_VALUES_H #include <values.h> #endif @@ -58,21 +61,35 @@ static lbool any_data = FALSE; * On other systems, setjmp() doesn't affect the signal mask and so * _setjmp() does not exist; we just use setjmp(). */ +#if HAVE_SIGSETJMP +#define SET_JUMP(label) sigsetjmp(label, 1) +#define LONG_JUMP(label, val) siglongjmp(label, val) +#define JUMP_BUF sigjmp_buf +#else #if HAVE__SETJMP && HAVE_SIGSETMASK -#define SET_JUMP _setjmp -#define LONG_JUMP _longjmp +#define SET_JUMP(label) _setjmp(label) +#define LONG_JUMP(label, val) _longjmp(label, val) +#define JUMP_BUF jmp_buf #else -#define SET_JUMP setjmp -#define LONG_JUMP longjmp +#define SET_JUMP(label) setjmp(label) +#define LONG_JUMP(label, val) longjmp(label, val) +#define JUMP_BUF jmp_buf +#endif #endif -public int reading; +static lbool reading; +static lbool opening; public lbool waiting_for_data; public int consecutive_nulls = 0; +public lbool getting_one_screen = FALSE; /* Milliseconds to wait for data before displaying "waiting for data" message. */ static int waiting_for_data_delay = 4000; -static jmp_buf read_label; +/* Max milliseconds expected to "normally" read and display a screen of text. */ +public int screenfill_ms = 3000; + +static JUMP_BUF read_label; +static JUMP_BUF open_label; extern int sigs; extern int ignore_eoi; @@ -81,6 +98,11 @@ extern int follow_mode; extern int scanning_eof; extern char intr_char; extern int is_tty; +extern int quit_if_one_screen; +extern int one_screen; +#if HAVE_TIME +extern time_type less_start_time; +#endif #if !MSDOS_COMPILER extern int tty; #endif @@ -91,6 +113,10 @@ public void init_poll(void) int idelay = (delay == NULL) ? 0 : atoi(delay); if (idelay > 0) waiting_for_data_delay = idelay; + delay = lgetenv("LESS_SCREENFILL_TIME"); + idelay = (delay == NULL) ? 0 : atoi(delay); + if (idelay > 0) + screenfill_ms = idelay; #if USE_POLL #if defined(__APPLE__) /* In old versions of MacOS, poll() does not work with /dev/tty. */ @@ -111,7 +137,11 @@ public void init_poll(void) static int check_poll(int fd, int tty) { struct pollfd poller[2] = { { fd, POLLIN, 0 }, { tty, POLLIN, 0 } }; - int timeout = (waiting_for_data && !(scanning_eof && follow_mode == FOLLOW_NAME)) ? -1 : waiting_for_data_delay; + int timeout = (waiting_for_data && !(scanning_eof && follow_mode == FOLLOW_NAME)) ? -1 : (ignore_eoi && !waiting_for_data) ? 0 : waiting_for_data_delay; +#if HAVE_TIME + if (getting_one_screen && get_time() < less_start_time + screenfill_ms/1000) + return (0); +#endif if (!any_data) { /* @@ -133,6 +163,7 @@ static int check_poll(int fd, int tty) /* Break out of "waiting for data". */ return (READ_INTR); ungetcc_back((char) ch); + return (READ_INTR); } } if (ignore_eoi && exit_F_on_close && (poller[0].revents & (POLLHUP|POLLIN)) == POLLHUP) @@ -161,7 +192,7 @@ public int supports_ctrl_x(void) /* * Like read() system call, but is deliberately interruptible. - * A call to intread() from a signal handler will interrupt + * A call to intio() from a signal handler will interrupt * any pending iread(). */ public ssize_t iread(int fd, unsigned char *buf, size_t len) @@ -188,7 +219,7 @@ start: if (!reading && SET_JUMP(read_label)) { /* - * We jumped here from intread. + * We jumped here from intio. */ reading = FALSE; #if HAVE_SIGPROCMASK @@ -238,7 +269,7 @@ start: } #endif #if USE_POLL - if (is_tty && fd != tty && use_poll) + if (is_tty && fd != tty && use_poll && !(quit_if_one_screen && one_screen)) { int ret = check_poll(fd, tty); if (ret != 0) @@ -251,24 +282,22 @@ start: } #else #if MSDOS_COMPILER==WIN32C - if (win32_kbhit()) + if (win32_kbhit2(TRUE)) { int c; c = WIN32getch(); - if (c == intr_char) - { - sigs |= S_INTERRUPT; - reading = FALSE; - return (READ_INTR); - } - WIN32ungetch(c); + sigs |= S_INTERRUPT; + reading = FALSE; + if (c != CONTROL('C') && c != intr_char) + WIN32ungetch((char) c); + return (READ_INTR); } #endif #endif n = read(fd, buf, len); reading = FALSE; -#if 1 +#if 0 /* * This is a kludge to workaround a problem on some systems * where terminating a remote tty connection causes read() to @@ -292,9 +321,6 @@ start: /* * Certain values of errno indicate we should just retry the read. */ -#if MUST_DEFINE_ERRNO - extern int errno; -#endif #ifdef EINTR if (errno == EINTR) goto start; @@ -314,11 +340,45 @@ start: } /* - * Interrupt a pending iread(). + * Like open() system call, but is interruptible. */ -public void intread(void) +public int iopen(constant char *filename, int flags) { - LONG_JUMP(read_label, 1); + int r; + while (!opening && SET_JUMP(open_label)) + { + opening = FALSE; + if (sigs & S_INTERRUPT) + { + sigs = 0; +#if HAVE_SETTABLE_ERRNO +#ifdef EINTR + errno = EINTR; +#endif +#endif + return -1; + } + psignals(); /* Handle S_STOP or S_WINCH */ + } + opening = TRUE; + r = open(filename, flags); + opening = FALSE; + return r; +} + +/* + * Interrupt a pending iopen() or iread(). + */ +public void intio(void) +{ + if (opening) + { + LONG_JUMP(open_label, 1); + } + if (reading) + { + LONG_JUMP(read_label, 1); + } } /* @@ -363,9 +423,6 @@ public char * errno_message(constant char *filename) char *m; size_t len; #if HAVE_ERRNO -#if MUST_DEFINE_ERRNO - extern int errno; -#endif p = strerror(errno); #else p = "cannot open"; @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -49,7 +49,7 @@ extern int vt_enabled; /* * Display the line which is in the line buffer. */ -public void put_line(void) +public void put_line(lbool forw_scroll) { int c; size_t i; @@ -75,8 +75,10 @@ public void put_line(void) else putchr(c); } - at_exit(); + + if (forw_scroll && should_clear_after_line()) + clear_eol(); } /* @@ -243,18 +245,17 @@ static void set_win_colors(t_sgr *sgr) } /* like is_ansi_end, but doesn't assume c != 0 (returns 0 for c == 0) */ -static int is_ansi_end_0(char c) +static lbool is_ansi_end_0(char c) { - return c && is_ansi_end((unsigned char)c); + return c != '\0' && is_ansi_end((unsigned char)c); } static void win_flush(void) { - if (ctldisp != OPT_ONPLUS -#if MSDOS_COMPILER==WIN32C - || (vt_enabled && sgr_mode) +#if MSDOS_COMPILER != WIN32C + static constant int vt_enabled = 0; #endif - ) + if (ctldisp != OPT_ONPLUS || (vt_enabled && sgr_mode)) WIN32textout(obuf, ptr_diff(ob, obuf)); else { diff --git a/pattern.c b/pattern.c index 0eee704fecfe..f2ec7cbcb6c8 100644 --- a/pattern.c +++ b/pattern.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -81,6 +81,7 @@ static int compile_pattern2(constant char *pattern, int search_type, PATTERN_TYP PCRE2_SIZE erroffset; PARG parg; pcre2_code *comp = pcre2_compile((PCRE2_SPTR)pattern, strlen(pattern), + ((utf_mode) ? PCRE2_UTF | PCRE2_NO_UTF_CHECK : 0) | (is_caseless ? PCRE2_CASELESS : 0), &errcode, &erroffset, NULL); if (comp == NULL) @@ -295,7 +296,7 @@ static int match(constant char *pattern, size_t pattern_len, constant char *buf, * Set sp[i] and ep[i] to the start and end of the i-th matched subpattern. * Subpatterns are defined by parentheses in the regex language. */ -static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t aline_len, constant char **sp, constant char **ep, int nsp, int notbol, int search_type) +static lbool match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t aline_len, size_t line_off, constant char **sp, constant char **ep, int nsp, int notbol, int search_type) { int matched; int line_len = (int) aline_len; /*{{type-issue}}*/ @@ -304,7 +305,7 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan search_type |= SRCH_NO_REGEX; #endif if (search_type & SRCH_NO_REGEX) - matched = match(tpattern, strlen(tpattern), line, line_len, &sp, &ep, nsp); + matched = match(tpattern, strlen(tpattern), line + line_off, line_len - line_off, &sp, &ep, nsp); else { #if HAVE_GNU_REGEX @@ -312,7 +313,7 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan struct re_registers search_regs; pattern->not_bol = notbol; pattern->regs_allocated = REGS_UNALLOCATED; - matched = re_search(pattern, line, line_len, 0, line_len, &search_regs) >= 0; + matched = re_search(pattern, line, line_len, line_off, line_len - line_off, &search_regs) >= 0; if (matched) { *sp++ = line + search_regs.start[0]; @@ -327,8 +328,10 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan int flags = (notbol) ? REG_NOTBOL : 0; #ifdef REG_STARTEND flags |= REG_STARTEND; - rm[0].rm_so = 0; + rm[0].rm_so = line_off; rm[0].rm_eo = line_len; +#else + line += line_off; #endif matched = !regexec(pattern, line, RM_COUNT, rm, flags); if (matched) @@ -367,7 +370,7 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan int i; int ecount; int mcount = pcre_exec(pattern, NULL, line, line_len, - 0, flags, ovector, OVECTOR_COUNT); + line_off, flags, ovector, OVECTOR_COUNT); matched = (mcount > 0); ecount = nsp-1; if (ecount > mcount) ecount = mcount; @@ -390,7 +393,7 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan int flags = (notbol) ? PCRE2_NOTBOL : 0; pcre2_match_data *md = pcre2_match_data_create(nsp-1, NULL); int mcount = pcre2_match(pattern, (PCRE2_SPTR)line, line_len, - 0, flags, md, NULL); + line_off, flags, md, NULL); matched = (mcount > 0); if (matched) { @@ -415,21 +418,21 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan } #endif #if HAVE_RE_COMP - matched = (re_exec(line) == 1); + matched = (re_exec(line + line_off) == 1); /* * re_exec doesn't seem to provide a way to get the matched string. */ #endif #if HAVE_REGCMP - matched = ((*ep++ = regex(pattern, line)) != NULL); + matched = ((*ep++ = regex(pattern, line + line_off)) != NULL); if (matched) *sp++ = __loc1; #endif #if HAVE_V8_REGCOMP #if HAVE_REGEXEC2 - matched = regexec2(pattern, line, notbol); + matched = regexec2(pattern, line + line_off, notbol); #else - matched = regexec(pattern, line); + matched = regexec(pattern, line + line_off); #endif if (matched) { @@ -441,19 +444,36 @@ static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constan *sp = *ep = NULL; matched = (!(search_type & SRCH_NO_MATCH) && matched) || ((search_type & SRCH_NO_MATCH) && !matched); - return (matched); + return (matched != 0); } -public int match_pattern(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t line_len, constant char **sp, constant char **ep, int nsp, int notbol, int search_type) +/* + * Return TRUE if the match satisfies all SUBSEARCH conditions. + */ +static lbool subsearch_ok(constant char **sp, constant char **ep, int search_type) { - int matched = match_pattern1(pattern, tpattern, line, line_len, sp, ep, nsp, notbol, search_type); int i; for (i = 1; i <= NUM_SEARCH_COLORS; i++) { if ((search_type & SRCH_SUBSEARCH(i)) && ep[i] == sp[i]) - matched = 0; + return FALSE; + } + return TRUE; +} + +public lbool match_pattern(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t line_len, size_t line_off, constant char **sp, constant char **ep, int nsp, int notbol, int search_type) +{ + for (;;) + { + size_t mlen; + lbool matched = match_pattern1(pattern, tpattern, line, line_len, line_off, sp, ep, nsp, notbol, search_type); + if (!matched || subsearch_ok(sp, ep, search_type)) + return matched; + mlen = ep[0] - line; + line += mlen; + line_len -= mlen; + notbol = 1; } - return matched; } /* diff --git a/pattern.h b/pattern.h index 7c6382e9baca..e19b007b00b5 100644 --- a/pattern.h +++ b/pattern.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. diff --git a/position.c b/position.c index 69ab7a8ecbc4..66e501c09060 100644 --- a/position.c +++ b/position.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -26,6 +26,7 @@ static int table_size = 0; extern int sc_width, sc_height; extern int hshift; +extern int shell_lines; /* * Return the starting file position of a line displayed on the screen. @@ -46,6 +47,9 @@ public POSITION position(int sindex) case BOTTOM_PLUS_ONE: sindex = sc_height - 1; break; + case BOTTOM_OFFSET: + sindex = sc_height - shell_lines; + break; case MIDDLE: sindex = (sc_height - 1) / 2; break; @@ -56,15 +60,18 @@ public POSITION position(int sindex) /* * Add a new file position to the bottom of the position table. */ -public void add_forw_pos(POSITION pos) +public void add_forw_pos(POSITION pos, lbool no_scroll) { int i; /* * Scroll the position table up. */ - for (i = 1; i < sc_height; i++) - table[i-1] = table[i]; + if (!no_scroll) + { + for (i = 1; i < sc_height; i++) + table[i-1] = table[i]; + } table[sc_height - 1] = pos; } diff --git a/position.h b/position.h index b6906fd07634..609967aa1094 100644 --- a/position.h +++ b/position.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -16,3 +16,4 @@ #define BOTTOM (-1) #define BOTTOM_PLUS_ONE (-2) #define MIDDLE (-3) +#define BOTTOM_OFFSET (-4) @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -203,7 +203,7 @@ static lbool cond(char c, int where) case 'c': return (hshift != 0); case 'e': /* At end of file? */ - return (eof_displayed()); + return (eof_displayed(FALSE)); case 'f': /* Filename known? */ case 'g': return (strcmp(get_filename(curr_ifile), "-") != 0); @@ -257,7 +257,6 @@ static void protochar(char c, int where) { POSITION pos; POSITION len; - int n; LINENUM linenum; LINENUM last_linenum; IFILE h; @@ -341,15 +340,15 @@ static void protochar(char c, int where) else ap_linenum(vlinenum(linenum-1)); break; - case 'm': /* Number of files */ + case 'm': { /* Number of files */ #if TAGS - n = ntags(); + int n = ntags(); if (n) ap_int(n); else #endif ap_int(nifile()); - break; + break; } case 'o': /* path (URI without protocol) of selected OSC8 link */ #if OSC8_LINK if (osc8_path != NULL) @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -145,7 +145,7 @@ static HANDLE con_out_ours = INVALID_HANDLE_VALUE; /* our own */ HANDLE con_out = INVALID_HANDLE_VALUE; /* current console */ extern int utf_mode; -extern int quitting; +extern lbool quitting; static void win32_init_term(); static void win32_deinit_term(); @@ -219,6 +219,8 @@ static constant char *sc_e_keypad, /* End keypad mode */ *sc_s_mousecap, /* Start mouse capture mode */ *sc_e_mousecap, /* End mouse capture mode */ + *sc_s_bracketed_paste, /* Start bracketed paste mode */ + *sc_e_bracketed_paste, /* End bracketed paste mode */ *sc_init, /* Startup terminal initialization */ *sc_deinit; /* Exit terminal de-initialization */ @@ -240,9 +242,9 @@ public int so_s_width, so_e_width; /* Printing width of standout seq */ public int bl_s_width, bl_e_width; /* Printing width of blink seq */ public int above_mem, below_mem; /* Memory retained above/below screen */ public int can_goto_line; /* Can move cursor to any line */ -public int clear_bg; /* Clear fills with background color */ -public int missing_cap = 0; /* Some capability is missing */ -public constant char *kent = NULL; /* Keypad ENTER sequence */ +public int clear_bg; /* Clear fills with background color */ +public lbool missing_cap = FALSE; /* Some capability is missing */ +public constant char *kent = NULL; /* Keypad ENTER sequence */ public lbool term_init_done = FALSE; public lbool full_screen = TRUE; @@ -251,6 +253,7 @@ static int termcap_debug = -1; static int no_alt_screen; /* sc_init does not switch to alt screen */ extern int binattr; extern int one_screen; +extern int shell_lines; #if !MSDOS_COMPILER static constant char *cheaper(constant char *t1, constant char *t2, constant char *def); @@ -283,6 +286,7 @@ extern int oldbot; extern int mousecap; extern int is_tty; extern int use_color; +extern int no_paste; #if HILITE_SEARCH extern int hilite_search; #endif @@ -324,17 +328,6 @@ static void set_termio_flags( ); s->c_oflag |= (0 -#ifdef OXTABS - | OXTABS -#else -#ifdef TAB3 - | TAB3 -#else -#ifdef XTABS - | XTABS -#endif -#endif -#endif #ifdef OPOST | OPOST #endif @@ -624,7 +617,7 @@ public void raw_mode(int on) * Set the modes to the way we want them. */ s.sg_flags |= CBREAK; - s.sg_flags &= ~(ECHO|XTABS); + s.sg_flags &= ~(ECHO); } else { /* @@ -1325,10 +1318,17 @@ public void get_term(void) sc_s_mousecap = ltgetstr("MOUSE_START", &sp); if (sc_s_mousecap == NULL) - sc_s_mousecap = ESCS "[?1000h" ESCS "[?1006h"; + sc_s_mousecap = ESCS "[?1000h" ESCS "[?1002h" ESCS "[?1006h"; sc_e_mousecap = ltgetstr("MOUSE_END", &sp); if (sc_e_mousecap == NULL) - sc_e_mousecap = ESCS "[?1006l" ESCS "[?1000l"; + sc_e_mousecap = ESCS "[?1006l" ESCS "[?1002l" ESCS "[?1000l"; + + sc_s_bracketed_paste = ltgetstr("BRACKETED_PASTE_START", &sp); + if (sc_s_bracketed_paste == NULL) + sc_s_bracketed_paste = ESCS"[?2004h"; + sc_e_bracketed_paste = ltgetstr("BRACKETED_PASTE_END", &sp); + if (sc_e_bracketed_paste == NULL) + sc_e_bracketed_paste = ESCS"[?2004l"; sc_init = ltgetstr("ti", &sp); if (sc_init == NULL) @@ -1341,21 +1341,21 @@ public void get_term(void) sc_eol_clear = ltgetstr("ce", &sp); if (sc_eol_clear == NULL || *sc_eol_clear == '\0') { - missing_cap = 1; + missing_cap = TRUE; sc_eol_clear = ""; } sc_eos_clear = ltgetstr("cd", &sp); if (below_mem && (sc_eos_clear == NULL || *sc_eos_clear == '\0')) { - missing_cap = 1; + missing_cap = TRUE; sc_eos_clear = ""; } sc_clear = ltgetstr("cl", &sp); if (sc_clear == NULL || *sc_clear == '\0') { - missing_cap = 1; + missing_cap = TRUE; sc_clear = "\n\n"; } @@ -1441,12 +1441,9 @@ public void get_term(void) t2 = ltgetstr("sr", &sp); if (t2 == NULL) t2 = ""; -#if OS2 if (*t1 == '\0' && *t2 == '\0') sc_addline = ""; - else -#endif - if (above_mem) + else if (above_mem) sc_addline = t1; else sc_addline = cheaper(t1, t2, ""); @@ -1459,6 +1456,12 @@ public void get_term(void) } } #endif /* MSDOS_COMPILER */ + { + const char *env = lgetenv("LESS_SHELL_LINES"); + shell_lines = isnullenv(env) ? 1 : atoi(env); + if (shell_lines >= sc_height) + shell_lines = sc_height - 1; + } } #if !MSDOS_COMPILER @@ -1494,7 +1497,7 @@ static constant char * cheaper(constant char *t1, constant char *t2, constant ch { if (*t1 == '\0' && *t2 == '\0') { - missing_cap = 1; + missing_cap = TRUE; return (def); } if (*t1 == '\0') @@ -1590,17 +1593,17 @@ static void initcolor(void) */ static void win32_init_vt_term(void) { - DWORD console_output_mode; - if (vt_enabled == 0 || (vt_enabled == 1 && con_out == con_out_ours)) - return; + return; // already initialized - console_output_mode = init_console_output_mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING; - vt_enabled = SetConsoleMode(con_out, console_output_mode); + /* don't care about the initial mode, and win VT hard-enables am+xn */ + vt_enabled = SetConsoleMode(con_out, ENABLE_PROCESSED_OUTPUT | + ENABLE_VIRTUAL_TERMINAL_PROCESSING | + ENABLE_WRAP_AT_EOL_OUTPUT); if (vt_enabled) { - auto_wrap = 0; - ignaw = 1; + auto_wrap = 1; + ignaw = 1; } } @@ -1635,6 +1638,12 @@ static void win32_init_term(void) (LPSECURITY_ATTRIBUTES) NULL, CONSOLE_TEXTMODE_BUFFER, (LPVOID) NULL); + + // we don't care about the initial state. we need processed + // output without anything else (no wrap at EOL, no VT, + // no disabled auto-return). + if (SetConsoleMode(con_out_ours, ENABLE_PROCESSED_OUTPUT)) + auto_wrap = 0; } size.X = scr.srWindow.Right - scr.srWindow.Left + 1; @@ -1772,6 +1781,8 @@ public void init(void) ltputs(sc_s_keypad, sc_height, putchr); if (mousecap) init_mouse(); + if (no_paste) + init_bracketed_paste(); } init_done = 1; if (top_scroll) @@ -1821,6 +1832,8 @@ public void deinit(void) { if (mousecap) deinit_mouse(); + if (no_paste) + deinit_bracketed_paste(); if (!no_keypad) ltputs(sc_e_keypad, sc_height, putchr); if (!no_init) @@ -2445,6 +2458,25 @@ public void clear_bot(void) } /* + * Enable or disable bracketed paste mode. + * When enabled, the terminal sends an "open bracket" sequence + * before pasted content and "close bracket" after it. + */ +public void init_bracketed_paste(void) +{ +#if !MSDOS_COMPILER + ltputs(sc_s_bracketed_paste, 1, putchr); +#endif +} + +public void deinit_bracketed_paste(void) +{ +#if !MSDOS_COMPILER + ltputs(sc_e_bracketed_paste, 1, putchr); +#endif +} + +/* * Color string may be "x[y]" where x and y are 4-bit color chars, * or "N[.M]" where N and M are decimal integers> * Any of x,y,N,M may also be "-" to mean "unchanged". @@ -2953,8 +2985,7 @@ static lbool win32_mouse_event(XINPUT_RECORD *xip) { char b; - if (!mousecap || xip->ir.EventType != MOUSE_EVENT || - xip->ir.Event.MouseEvent.dwEventFlags == MOUSE_MOVED) + if (!mousecap || xip->ir.EventType != MOUSE_EVENT) return (FALSE); /* Generate an X11 mouse sequence from the mouse event. */ @@ -2976,6 +3007,12 @@ static lbool win32_mouse_event(XINPUT_RECORD *xip) case MOUSE_WHEELED: b = X11MOUSE_OFFSET + (((int)xip->ir.Event.MouseEvent.dwButtonState < 0) ? X11MOUSE_WHEEL_DOWN : X11MOUSE_WHEEL_UP); break; + case MOUSE_MOVED: + if (xip->ir.Event.MouseEvent.dwButtonState != 1) + return (FALSE); + /* Drag with left button down. */ + b = X11MOUSE_OFFSET + X11MOUSE_DRAG; + break; default: return (FALSE); } @@ -3123,11 +3160,11 @@ static lbool win32_key_event(XINPUT_RECORD *xip) /* * Determine whether an input character is waiting to be read. */ -public lbool win32_kbhit(void) +public lbool win32_kbhit2(lbool no_queued) { XINPUT_RECORD xip; - if (win32_queued_char()) + if (!no_queued && win32_queued_char()) return (TRUE); for (;;) @@ -3152,6 +3189,11 @@ public lbool win32_kbhit(void) return (TRUE); } +public lbool win32_kbhit(void) +{ + return win32_kbhit2(FALSE); +} + /* * Read a character from the keyboard. */ @@ -3201,7 +3243,7 @@ public void WIN32textout(constant char *text, size_t len) len = MultiByteToWideChar(CP_UTF8, 0, text, len, wtext, countof(wtext)); WriteConsoleW(con_out, wtext, len, &written, NULL); } else - WriteConsole(con_out, text, len, &written, NULL); + WriteConsole(con_out, text, (DWORD) len, &written, NULL); #else char buf[2048]; if (len >= sizeof(buf)) diff --git a/scrsize.c b/scrsize.c index 47528d6f3705..66e87161e914 100644 --- a/scrsize.c +++ b/scrsize.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -44,10 +44,8 @@ extern int header_cols; extern LWCHAR rscroll_char; #if HILITE_SEARCH extern int hilite_search; -extern size_t size_linebuf; extern lbool squished; extern int can_goto_line; -extern lbool no_eof_bell; static lbool hide_hilite; static POSITION prep_startpos; static POSITION prep_endpos; @@ -245,7 +243,7 @@ public int get_cvt_ops(int search_type) /* * Is there a previous (remembered) search pattern? */ -static int prev_pattern(struct pattern_info *info) +static lbool prev_pattern(struct pattern_info *info) { #if !NO_REGEX if ((info->search_type & SRCH_NO_REGEX) == 0) @@ -289,10 +287,10 @@ public void repaint_hilite(lbool on) pos = position(sindex); if (pos == NULL_POSITION) continue; - (void) forw_line(pos); + (void) forw_line(pos, NULL, NULL); goto_line(sindex); clear_eol(); - put_line(); + put_line(FALSE); } overlay_header(); lower_left(); @@ -336,10 +334,10 @@ public void clear_attn(void) if (pos <= old_end_attnpos && (epos == NULL_POSITION || epos > old_start_attnpos)) { - (void) forw_line(pos); + (void) forw_line(pos, NULL, NULL); goto_line(sindex); clear_eol(); - put_line(); + put_line(FALSE); moved = 1; } } @@ -356,9 +354,7 @@ public void clear_attn(void) public void undo_search(lbool clear) { clear_pattern(&search_info); -#if OSC8_LINK - osc8_linepos = NULL_POSITION; -#endif + undo_osc8(); #if HILITE_SEARCH if (clear) { @@ -376,6 +372,15 @@ public void undo_search(lbool clear) #endif } +/* + */ +public void undo_osc8(void) +{ +#if OSC8_LINK + osc8_linepos = NULL_POSITION; +#endif +} + #if HILITE_SEARCH /* * Clear the hilite list. @@ -537,7 +542,7 @@ public void set_header(POSITION pos) /* * Is a position within the header lines? */ -static int pos_in_header(POSITION pos) +static lbool pos_in_header(POSITION pos) { return (header_start_pos != NULL_POSITION && pos >= header_start_pos && pos < header_end_pos); @@ -550,11 +555,10 @@ public lbool is_filtered(POSITION pos) { struct hilite_node *n; - if (ch_getflags() & CH_HELPFILE) + if (!is_filtering()) return (FALSE); if (pos_in_header(pos)) return (FALSE); - n = hlist_find(&filter_anchor, pos); return (n != NULL && pos >= n->r.hl_startpos); } @@ -565,45 +569,19 @@ public lbool is_filtered(POSITION pos) */ public POSITION next_unfiltered(POSITION pos) { - struct hilite_node *n; - - if (ch_getflags() & CH_HELPFILE) + if (!is_filtering()) return (pos); if (pos_in_header(pos)) return (pos); - - n = hlist_find(&filter_anchor, pos); - while (n != NULL && pos >= n->r.hl_startpos) + flush(); + while (pos != NULL_POSITION) { - pos = n->r.hl_endpos; - n = n->next; - } - return (pos); -} - -/* - * If pos is hidden, return the previous position which isn't or 0 if - * we're filtered right to the beginning, otherwise just return pos. - */ -public POSITION prev_unfiltered(POSITION pos) -{ - struct hilite_node *n; - - if (ch_getflags() & CH_HELPFILE) - return (pos); - if (pos_in_header(pos)) - return (pos); - - n = hlist_find(&filter_anchor, pos); - while (n != NULL && pos >= n->r.hl_startpos) - { - pos = n->r.hl_startpos; - if (pos == 0) + prep_hilite(pos, NULL_POSITION, 1); + if (!is_filtered(pos)) break; - pos--; - n = n->prev; + pos = forw_raw_line(pos, NULL, NULL); } - return (pos); + return pos; } /* @@ -661,7 +639,7 @@ public int is_hilited_attr(POSITION pos, POSITION epos, int nohide, int *p_match #if OSC8_LINK if (osc8_linepos != NULL_POSITION && - pos <= osc8_text_end && (epos == NULL_POSITION || epos > osc8_text_start)) + pos < osc8_text_end && (epos == NULL_POSITION || epos > osc8_text_start)) return (AT_HILITE|AT_COLOR_SEARCH); #endif @@ -1017,8 +995,7 @@ static void create_hilites(POSITION linepos, constant char *line, constant char */ static void hilite_line(POSITION linepos, constant char *line, size_t line_len, int *chpos, constant char **sp, constant char **ep, int nsp) { - constant char *searchp; - constant char *line_end = line + line_len; + size_t line_off = 0; /* * sp[0] and ep[0] delimit the first match in the line. @@ -1032,7 +1009,6 @@ static void hilite_line(POSITION linepos, constant char *line, size_t line_len, * sp[i] and ep[i] for i>0 delimit subpattern matches. * Color each of them with its unique color. */ - searchp = line; do { constant char *lep = sp[0]; int i; @@ -1059,14 +1035,14 @@ static void hilite_line(POSITION linepos, constant char *line, size_t line_len, * move to the first char after the string we matched. * If we matched zero, just move to the next char. */ - if (ep[0] > searchp) - searchp = ep[0]; - else if (searchp != line_end) - searchp++; + if (ep[0] > &line[line_off]) + line_off = ptr_diff(ep[0], line); + else if (line_off != line_len) + line_off++; else /* end of line */ break; } while (match_pattern(info_compiled(&search_info), search_info.text, - searchp, ptr_diff(line_end, searchp), sp, ep, nsp, 1, search_info.search_type)); + line, line_len, line_off, sp, ep, nsp, 1, search_info.search_type)); } #endif @@ -1200,14 +1176,14 @@ static POSITION search_pos(int search_type) * If so, add an entry to the filter list. */ #if HILITE_SEARCH -static int matches_filters(POSITION pos, char *cline, size_t line_len, int *chpos, POSITION linepos, constant char **sp, constant char **ep, int nsp) +static lbool matches_filters(POSITION pos, char *cline, size_t line_len, int *chpos, POSITION linepos, constant char **sp, constant char **ep, int nsp) { struct pattern_info *filter; for (filter = filter_infos; filter != NULL; filter = filter->next) { - int line_filter = match_pattern(info_compiled(filter), filter->text, - cline, line_len, sp, ep, nsp, 0, filter->search_type); + lbool line_filter = match_pattern(info_compiled(filter), filter->text, + cline, line_len, 0, sp, ep, nsp, 0, filter->search_type); if (line_filter) { struct hilite hl; @@ -1216,10 +1192,10 @@ static int matches_filters(POSITION pos, char *cline, size_t line_len, int *chpo add_hilite(&filter_anchor, &hl); free(cline); free(chpos); - return (1); + return (TRUE); } } - return (0); + return (FALSE); } #endif @@ -1231,9 +1207,10 @@ static POSITION get_lastlinepos(POSITION pos, POSITION tpos, int sheight) { int nlines; + flush(); for (nlines = 0;; nlines++) { - POSITION npos = forw_line(pos); + POSITION npos = forw_line(pos, NULL, NULL); if (npos > tpos) { if (nlines < sheight) @@ -1264,12 +1241,14 @@ struct osc8_parse_info { static lbool osc8_parse(constant char *line, constant char *line_end, struct osc8_parse_info *pop) { constant char *oline; - pop->osc8_start = pop->osc8_end = pop->uri_start = pop->uri_end = pop->params_start = pop->params_end = NULL; + LWCHAR ch; + struct ansi_state *pansi; + pop->osc8_start = pop->osc8_end = pop->uri_start = pop->uri_end = pop->params_start = pop->params_end = NULL; oline = line; - LWCHAR ch = step_charc(&line, +1, line_end); + ch = step_charc(&line, +1, line_end); /* oline points to character ch, line points to the one after it. */ - struct ansi_state *pansi = ansi_start(ch); + pansi = ansi_start(ch); if (pansi == NULL) return FALSE; pop->osc8_start = oline; /* start at the ESC */ @@ -1292,12 +1271,14 @@ static lbool osc8_parse(constant char *line, constant char *line_end, struct osc pop->uri_start = line; } break; - case OSC8_ST_ESC: + case OSC_END_CSI: if (pop->uri_end == NULL) pop->uri_end = oline; break; - case OSC8_END: + case OSC_END: ansi_done(pansi); + if (pop->params_start == NULL || pop->uri_start == NULL) + return FALSE; pop->osc8_end = line; if (pop->uri_end == NULL) /* happens when ST is "\7" */ pop->uri_end = oline; @@ -1503,7 +1484,7 @@ static int search_range(POSITION pos, POSITION endpos, int search_type, int matc #define NSP (NUM_SEARCH_COLORS+2) constant char *sp[NSP]; constant char *ep[NSP]; - int line_match; + lbool line_match; int cvt_ops; size_t cvt_len; int *chpos; @@ -1524,6 +1505,7 @@ static int search_range(POSITION pos, POSITION endpos, int search_type, int matc /* When the search wraps around, end at starting position. */ if ((search_type & SRCH_WRAP) && endpos == NULL_POSITION) endpos = pos; + flush(); for (;;) { /* @@ -1677,7 +1659,7 @@ static int search_range(POSITION pos, POSITION endpos, int search_type, int matc if (prev_pattern(&search_info)) { line_match = match_pattern(info_compiled(&search_info), search_info.text, - cline, line_len, sp, ep, NSP, 0, search_type); + cline, line_len, 0, sp, ep, NSP, 0, search_type); if (line_match) { /* @@ -1761,8 +1743,9 @@ public void osc8_search(int search_type, constant char *param, int matches) { POSITION pos; int match; + int curr_sindex = -1; - if (osc8_linepos != NULL_POSITION) + if (osc8_linepos != NULL_POSITION && (curr_sindex = onscreen(osc8_linepos)) >= 0) { /* Continue search in same line as current match. */ constant char *line; @@ -1772,9 +1755,6 @@ public void osc8_search(int search_type, constant char *param, int matches) { if (osc8_search_line(search_type, osc8_linepos, line, line_len, param, NULL_POSITION, &matches) != OSC8_NO_MATCH) { - no_eof_bell = TRUE; - jump_loc(osc8_linepos, jump_sline); - no_eof_bell = FALSE; osc8_shift_visible(); #if HILITE_SEARCH repaint_hilite(TRUE); @@ -1784,7 +1764,14 @@ public void osc8_search(int search_type, constant char *param, int matches) } search_type |= SRCH_AFTER_TARGET; } - pos = search_pos(search_type); + /* + * If the current OSC 8 link is on screen, start searching after it. + * Otherwise, start searching at the -j line like a normal search. + */ + if (curr_sindex >= 0) + pos = osc8_linepos; + else + pos = search_pos(search_type); if (pos == NULL_POSITION) { error("Nothing to search", NULL_PARG); @@ -1798,7 +1785,9 @@ public void osc8_search(int search_type, constant char *param, int matches) error("OSC 8 link not found", NULL_PARG); return; } - jump_loc(pos, jump_sline); + /* If new link is on screen, just highlight it without scrolling. */ + if (onscreen(pos) < 0) + jump_loc(pos, jump_sline); #if HILITE_SEARCH repaint_hilite(TRUE); #endif @@ -1843,7 +1832,7 @@ public lbool osc8_click(int sindex, int col) /* * Return the length of the scheme prefix in a URI. */ -static int scheme_length(constant char *uri, size_t uri_len) +static size_t scheme_length(constant char *uri, size_t uri_len) { size_t plen; for (plen = 0; plen < uri_len; plen++) @@ -1930,13 +1919,13 @@ public void osc8_open(void) #if HAVE_POPEN if (bad_uri(op.uri_start, uri_len)) { - error("Cannot open link containing dangerous characters", NULL_PARG); + error("Cannot open link containing quote characters", NULL_PARG); return; } SNPRINTF3(env_name, sizeof(env_name), "%s%.*s", env_name_pfx, (int) scheme_len, op.uri_start); handler = lgetenv(env_name); if (isnullenv(handler) || strcmp(handler, "-") == 0) - handler = lgetenv("LESS_OSC8_ANY"); + handler = lgetenv("LESS_OSC8_ANY"); if (isnullenv(handler)) { PARG parg; @@ -2212,12 +2201,6 @@ public void prep_hilite(POSITION spos, POSITION epos, int maxlines) int result; int i; - /* - * Search beyond where we're asked to search, so the prep region covers - * more than we need. Do one big search instead of a bunch of small ones. - */ - POSITION SEARCH_MORE = (POSITION) (3*size_linebuf); - if (!prev_pattern(&search_info) && !is_filtering()) return; @@ -2239,6 +2222,8 @@ public void prep_hilite(POSITION spos, POSITION epos, int maxlines) for (i = 0; i < maxlines; i++) max_epos = forw_raw_line(max_epos, NULL, NULL); } + if (epos == NULL_POSITION || (max_epos != NULL_POSITION && epos > max_epos)) + epos = max_epos; /* * Find two ranges: @@ -2256,28 +2241,13 @@ public void prep_hilite(POSITION spos, POSITION epos, int maxlines) */ clr_hilite(); clr_filter(); - if (epos != NULL_POSITION) - epos += SEARCH_MORE; nprep_startpos = spos; } else { /* * New range partially or completely overlaps old prep region. */ - if (epos == NULL_POSITION) - { - /* - * New range goes to end of file. - */ - ; - } else if (epos > prep_endpos) - { - /* - * New range ends after old prep region. - * Extend prep region to end at end of new range. - */ - epos += SEARCH_MORE; - } else /* (epos <= prep_endpos) */ + if (epos != NULL_POSITION && epos <= prep_endpos) { /* * New range ends within old prep region. @@ -2285,7 +2255,6 @@ public void prep_hilite(POSITION spos, POSITION epos, int maxlines) */ epos = prep_startpos; } - if (spos < prep_startpos) { /* @@ -2293,10 +2262,6 @@ public void prep_hilite(POSITION spos, POSITION epos, int maxlines) * Extend old prep region backwards to start at * start of new range. */ - if (spos < SEARCH_MORE) - spos = 0; - else - spos -= SEARCH_MORE; nprep_startpos = spos; } else /* (spos >= prep_startpos) */ { @@ -2308,17 +2273,10 @@ public void prep_hilite(POSITION spos, POSITION epos, int maxlines) } } - if (epos != NULL_POSITION && max_epos != NULL_POSITION && - epos > max_epos) - /* - * Don't go past the max position we're allowed. - */ - epos = max_epos; - if (epos == NULL_POSITION || epos > spos) { int search_type = SRCH_FORW | SRCH_FIND_ALL; - search_type |= (search_info.search_type & (SRCH_NO_REGEX|SRCH_SUBSEARCH_ALL)); + search_type |= (search_info.search_type & SRCH_NO_REGEX); for (;;) { result = search_range(spos, epos, search_type, 0, maxlines, (POSITION*)NULL, &new_epos, (POSITION*)NULL); @@ -1,5 +1,6 @@ +#include <errno.h> /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -15,7 +16,7 @@ * At some convenient time, the mainline code checks to see if any * signals need processing by calling psignal(). * If we happen to be reading from a file [in iread()] at the time - * the signal is received, we call intread to interrupt the iread. + * the signal is received, we call intio to interrupt the iread. */ #include "less.h" @@ -29,7 +30,6 @@ public int sigs; extern int sc_width, sc_height; extern int linenums; extern int wscroll; -extern int reading; extern int quit_on_intr; extern long jump_sline_fraction; @@ -59,8 +59,7 @@ static RETSIGTYPE u_interrupt(int type) #if HILITE_SEARCH set_filter_pattern(NULL, 0); #endif - if (reading) - intread(); /* May longjmp */ + intio(); } #endif @@ -74,8 +73,7 @@ static RETSIGTYPE stop(int type) (void) type; LSIGNAL(SIGTSTP, stop); sigs |= S_STOP; - if (reading) - intread(); + intio(); } #endif @@ -97,9 +95,17 @@ public RETSIGTYPE winch(int type) { (void) type; LSIGNAL(SIG_LESSWINDOW, winch); +#if LESSTEST + /* + * Ignore window changes during lesstest. + * Changes in the real window are unrelated to the simulated + * screen used by lesstest. + */ + if (is_lesstest()) + return; +#endif sigs |= S_WINCH; - if (reading) - intread(); + intio(); } #endif @@ -135,6 +141,27 @@ static RETSIGTYPE terminate(int type) } /* + * Handle a SIGUSR signal. + */ +#ifdef SIGUSR1 +static void sigusr(constant char *var) +{ + constant char *cmd = lgetenv(var); + if (isnullenv(cmd)) + return; + ungetsc(cmd); + intio(); +} + +static RETSIGTYPE sigusr1(int type) +{ + (void) type; + LSIGNAL(SIGUSR1, sigusr1); + sigusr("LESS_SIGUSR1"); +} +#endif + +/* * Set up the signal handlers. */ public void init_signals(int on) @@ -164,6 +191,9 @@ public void init_signals(int on) #ifdef SIGTERM (void) LSIGNAL(SIGTERM, terminate); #endif +#ifdef SIGUSR1 + (void) LSIGNAL(SIGUSR1, sigusr1); +#endif } else { /* @@ -189,6 +219,9 @@ public void init_signals(int on) #ifdef SIGTERM (void) LSIGNAL(SIGTERM, SIG_DFL); #endif +#ifdef SIGUSR1 + (void) LSIGNAL(SIGUSR1, SIG_DFL); +#endif } } @@ -257,9 +290,5 @@ public void psignals(void) { if (quit_on_intr) quit(QUIT_INTERRUPT); - getcc_clear(); -#if MSDOS_COMPILER==WIN32C - win32_getch_clear(); -#endif } } @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -69,7 +69,11 @@ public int open_tty(void) int fd = -1; #if LESSTEST if (is_lesstest()) + { fd = open_tty_device(ttyin_name); + if (fd < 0) + fd = 0; /* assume lesstest uses stdin */ + } #endif /*LESSTEST*/ #if HAVE_TTYNAME if (fd < 0) @@ -193,8 +197,10 @@ public int getchr(void) * In raw read, we don't see ^C so look here for it. */ #if MSDOS_COMPILER==WIN32C +#if 0 if (ABORT_SIGS()) return (READ_INTR); +#endif c = WIN32getch(); #else c = getch(); @@ -1,4 +1,4 @@ -/* Generated by "./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt" on Sun Sep 17 17:56:27 PDT 2023 */ +/* Generated by "./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt" on Oct 1 18:10:07 GMT 2024 */ { 0x0000, 0x0007 }, /* Cc */ { 0x000b, 0x000b }, /* Cc */ { 0x000e, 0x001f }, /* Cc */ diff --git a/version.c b/version.c index 92ba59e27e5e..9a97f1658940 100644 --- a/version.c +++ b/version.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2024 Mark Nudelman + * Copyright (C) 1984-2025 Mark Nudelman * * You may distribute under the terms of either the GNU General Public * License or the Less License, as specified in the README file. @@ -1032,6 +1032,21 @@ v665 9/4/24 Fix ^Z bug. v666 9/21/24 Fix missing first byte from LESSOPEN if >0x7f. v667 9/26/24 Fix uninitialized variable in edit_ifile. v668 10/6/24 Fix UTF-8 chars in prompt. +v669 11/6/24 Add --no-paste; add --no-edit-warn; add TAB for -- command; + add LESSANSIOSCALLOW and LESSANSIOSCCCHARS; fix bug searching + near invalid UTF-8 sequence; add LESS_SHELL_LINES; fix bug + with --no-number-headers; add mouse cmds to lesskey; + add form-feed; add --no-poll; add LESS_SIGUSR1; + fix "configure --with-secure=no". +v670 11/16/24 Fix SIGWINCH handling; add iopen. +v671 12/6/24 Fix multibyte command chars; fix Windows auto_wrap. +v672 1/20/25 Don't poll with -F on short file; remove --no-poll. +v673 3/13/25 Treat -r in LESS var as -R; add ESC-j and ESC-k. +v674 3/24/25 Improve behavior of ^O^N and ^O^P commands. +v675 4/3/25 Add ESC-b. +v676 4/16/25 Fix two OSC 8 display bugs. +v677 4/27/25 Fix & filtering bug. +v678 5/1/25 Don't change stty tab setting. */ -char version[] = "668"; +char version[] = "678"; @@ -1,4 +1,4 @@ -/* Generated by "./mkutable -f1 W F -- unicode/EastAsianWidth.txt" on Sun Sep 17 17:56:27 PDT 2023 */ +/* Generated by "./mkutable -f1 W F -- unicode/EastAsianWidth.txt" on Sep 23 19:46:51 GMT 2024 */ { 0x1100, 0x115f }, /* W */ { 0x231a, 0x231b }, /* W */ { 0x2329, 0x232a }, /* W */ @@ -7,8 +7,10 @@ { 0x23f3, 0x23f3 }, /* W */ { 0x25fd, 0x25fe }, /* W */ { 0x2614, 0x2615 }, /* W */ + { 0x2630, 0x2637 }, /* W */ { 0x2648, 0x2653 }, /* W */ { 0x267f, 0x267f }, /* W */ + { 0x268a, 0x268f }, /* W */ { 0x2693, 0x2693 }, /* W */ { 0x26a1, 0x26a1 }, /* W */ { 0x26aa, 0x26ab }, /* W */ @@ -44,11 +46,10 @@ { 0x3099, 0x30ff }, /* W */ { 0x3105, 0x312f }, /* W */ { 0x3131, 0x318e }, /* W */ - { 0x3190, 0x31e3 }, /* W */ + { 0x3190, 0x31e5 }, /* W */ { 0x31ef, 0x321e }, /* W */ { 0x3220, 0x3247 }, /* W */ - { 0x3250, 0x4dbf }, /* W */ - { 0x4e00, 0xa48c }, /* W */ + { 0x3250, 0xa48c }, /* W */ { 0xa490, 0xa4c6 }, /* W */ { 0xa960, 0xa97c }, /* W */ { 0xac00, 0xd7a3 }, /* W */ @@ -63,7 +64,7 @@ { 0x16ff0, 0x16ff1 }, /* W */ { 0x17000, 0x187f7 }, /* W */ { 0x18800, 0x18cd5 }, /* W */ - { 0x18d00, 0x18d08 }, /* W */ + { 0x18cff, 0x18d08 }, /* W */ { 0x1aff0, 0x1aff3 }, /* W */ { 0x1aff5, 0x1affb }, /* W */ { 0x1affd, 0x1affe }, /* W */ @@ -73,6 +74,8 @@ { 0x1b155, 0x1b155 }, /* W */ { 0x1b164, 0x1b167 }, /* W */ { 0x1b170, 0x1b2fb }, /* W */ + { 0x1d300, 0x1d356 }, /* W */ + { 0x1d360, 0x1d376 }, /* W */ { 0x1f004, 0x1f004 }, /* W */ { 0x1f0cf, 0x1f0cf }, /* W */ { 0x1f18e, 0x1f18e }, /* W */ @@ -113,11 +116,10 @@ { 0x1f93c, 0x1f945 }, /* W */ { 0x1f947, 0x1f9ff }, /* W */ { 0x1fa70, 0x1fa7c }, /* W */ - { 0x1fa80, 0x1fa88 }, /* W */ - { 0x1fa90, 0x1fabd }, /* W */ - { 0x1fabf, 0x1fac5 }, /* W */ - { 0x1face, 0x1fadb }, /* W */ - { 0x1fae0, 0x1fae8 }, /* W */ + { 0x1fa80, 0x1fa89 }, /* W */ + { 0x1fa8f, 0x1fac6 }, /* W */ + { 0x1face, 0x1fadc }, /* W */ + { 0x1fadf, 0x1fae9 }, /* W */ { 0x1faf0, 0x1faf8 }, /* W */ { 0x20000, 0x2fffd }, /* W */ { 0x30000, 0x3fffd }, /* W */ |