From 8829ccc672e1805e84ff9fdeb00e934e701c5163 Mon Sep 17 00:00:00 2001 From: "Steffen (Daode) Nurpmeso" Date: Mon, 31 Jul 2017 23:45:15 +0200 Subject: [PATCH] Bump S-nail v14.9.1.ar ("Crested tit"), 2017-07-31 --- .gitignore | 11 - .mailmap | 3 - TODO | 728 ------------------- gen-errors.h | 724 ++++++++----------- gen-okeys.h | 1906 +++++++++++++++++++++----------------------------- gen-tcaps.h | 284 ++++---- make-news-anchors.sh | 135 ---- make-release.inc | 432 ------------ make-release.sh | 106 --- make-release.txt | 91 --- nail.1 | 1854 ++++++++++++++++-------------------------------- nail.rc | 2 - 12 files changed, 1850 insertions(+), 4426 deletions(-) delete mode 100644 .gitignore delete mode 100644 .mailmap delete mode 100644 TODO rewrite gen-errors.h (97%) rewrite gen-okeys.h (95%) rewrite gen-tcaps.h (95%) delete mode 100755 make-news-anchors.sh delete mode 100644 make-release.inc delete mode 100644 make-release.sh delete mode 100644 make-release.txt diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8973c73d..00000000 --- a/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -mk-* -gen-mime-types.h - -uman.1 -urc.rc - -s-nail -s-nail-privsep - -*.o -.cc-* diff --git a/.mailmap b/.mailmap deleted file mode 100644 index fd106e2f..00000000 --- a/.mailmap +++ /dev/null @@ -1,3 +0,0 @@ -Gunnar Ritter -Steffen (Daode) Nurpmeso -Steffen (Daode) Nurpmeso diff --git a/TODO b/TODO deleted file mode 100644 index 56073c1f..00000000 --- a/TODO +++ /dev/null @@ -1,728 +0,0 @@ -TODO reminder. - -Rename S-nail to S-mailx in v15.0, change things i've messed with -a single, massively backward incompatible change. - -Release S-mailx v20 on 2020-03-25, the 42nd anniversary of BSD Mail. -With a clean, conforming and efficient codebase, then. - -In general the code is in a pretty bad shape due to the signal handling. -I should have sat back in 2012/13 and consider what i am doing. -My fault. If i would, we would have a blocked signal mask anywhere in -this software except in a few cases where it is necessary and/or -possible to deal with signals, and possibly we would not even have to -consider to switch the entire codebase to (the much superior, and the -only sane approach) SysV signal handling, without SA_RESTART. - -But some things are already pretty good, except for normal iterations -and a review once we have a better signal handling, and can be taken -with us. For example termcap.c, most of tty.c, shexp.c, memory.c, for -example. - -- We should have generic ENOMEM conditions, now that we have $!. - I.e., test overflow (e.g., nam-a-grp.c, whether an alias _can_ be - created / extended), like n_ENOMEM_CHECK(INTTYPE, SIZE1, SIZE2, NULL - or message), which returns m_bool (now bool_t). - Callers need to be aware of NULL returns and pass through errors, - then. - -- We need a "void" box that can be jumped to, i.e., a state in which no box - at all is active. - --- When a MBOX mailbox is removed while it is opened then changing the - folder is not possible. This is an inherent problem of the Berkeley - Mail codebase, and we need to have a fully functional intermediate - VOID box mechanism plus an object-based mailbox implementation to - overcome it. - --- Also, when the folder was modified concurrently we should bail, or, - in an interactive session, prompt the user what to do. - -- IDNA decoding. Needs a complete design change. - (Unless wants to brute force decode anything before display, of course.) - -- If pipes fail for part viewers then at least the usual PART X.Y should be - shown, maybe even including some error message. - I had 'set pipe-text/html="lynx -dump -force_html /dev/stdin"' but NetBSD - does not have lynx(1), and i thought i've found a S-nail(1) bug. - -- It would be nice if it would be possible to define a format string for - *quote*, like 'set quote="format=some formats"'. - -- Line editing should gain possibility of context sensitive tab completion. - -- Maybe there should be an additional ZOMBIE directive that is served in - equal spirit to DEAD, but that could be a valid MBOX... ? - What i want is a *real* resend, best if possible from command line. - Meaning, also the possibility to postpone a message. In general. - -- Having a newsreader would be a really cool thing. (RFC 977 and 2980) - -- There should be a variable that controls whether leading and trailing - empty lines of parts and/or messages as such should be printed or not. - -- printhead()/hprf(): support %n newline format (%t tab?). - Make it possible to use the *datefield* algorithm for plain From_ derived - dates (needs a From_ parser, i.e., strptime()-alike). - Once we have that, rename *datefield-markout-older* to - *date-markout-older* ?? - Note that NetBSD's mail(1) has some other nice things. - Note also that our code is quite unflexible. - --- NetBSD's mail(1) has nice *indentprefix* and *indentpostscript* - variables (though prefix and appendix or prefix and suffix, but..). - Note that our code is quite unflexible. - -- headerpick: add resend-retain/ignore! (Ralph Corderoy, Norman Shapiro) - (Delivered-To thread on nmh. Will be hard to do because of - codepaths!) - -Low-Level ---------- - -- Improve name extraction rules. And field parsing. There - are structured and unstructured fields. There are quoted pairs and - comments etc. Rewrite the entire parsing mechanism to comply to RFC - 5322, and try to merge all those many subparsers around in the codebase, - and accordingly. So much duplicated work ... - Name parsing has been improved a bit for v13, but it's still broken. - yankword(), *extract(), etc.: RFC 5322 says that comments in address - fields SHOULD NOT be used (mutt(1) maps them to full name-addr forms if - approbiate, even if that actually changes content!!?), and that full - name-addr SHOULD be used. Our functions are yet quite silly (i.e., - leading comments remain, as in "(bier2) ", unless the address - doesn't come in angle brackets, trailing go away, as in " - (bier6)", that becomes ""). - Something silly like - (co$mm1) abc@däf.de (cö,mm,2) ('c'o"m"m.3) - Should eventually become - co$mm1 cö,mm,2 'c'o"m"m.3 - on the display, or, with IDNA decoding (and thus rather unlikely) - co$mm1 cö,mm,2 'c'o"m"m.3 - It should NOT become this mutt(1)ism: - "co$mm1 cö,mm,2 'c'omm.3" - Or? - -- many uses of whitechar() should be spacechar(), and spacechar() should - be blankspacechar(), and blankspacechar() should be dropped. then - drop onlywhitechar() again, too. maybe reduce char_class bits then. - -- In v15.0, when we can address attachments of a message individually, - it would be nice to provide even more access, just like nmh(1) does - (Johan Commelin: Are s-nail and mh related?). - -- I never used anything but the *datefield* option, and it would really be - nice if the date strings would be parsed off into some 16 byte or what - storage when about to producing the summary, so that it would be directly - available and there would be no need to reread the mail. Moreover, or - even more than that - the m_date field exists and should possibly simply - be init, at least in these cases. (P.S.: this doesn't contradict the - statement somewhere else in this file that the structure should be - slacked; simply use multiple thereof or so) - -- After I/O layer rework we should optionally be able to read RSS - (Atom?) feeds -- Expat should be available almost everywhere and - should be able to parse that? - Atom is harder because it may support html+. - I mean, yeah, it's stupid, but we could fill in header fields with - dummies and still use S-nail to look into the separated feeds as if - they were mail messages; anyway i would like to save me from using too - many tools -- three seems reasonable. - --- `sync'hronize commando -- robin@stjerndorff.org (Robin Stjerndorff): - Wondering how to update back to my Maildir, moving new read mails - in ~/Maildir from new to cur, without exiting the application. - Automation available? [And simply re-`[Ff]i' involves a lot of - unnecessary work] - --- Provide sync'ing options -- Jacob Gelbman : - If I open two instances of mailx, I then delete a message and then - quit in one. Then in the other one I read a message and quit, mailx - saves the status of the read message and the fact that a message was - deleted, even though it was opened before the other instance deleted - it. How is it doing that? [Of course he was using Maildir] - -- Add TODO notes for those RFCs: - RFC 977 -> 3977 - Network News Transfer Protocol - RFC 1036 - Standard for USENET Messages - RFC 1524 - True support for mailcap files? - TODO YES! We really need to replace the pipe-TYPE/SUBTYPE mechanism - with something real. When we can work on the parsed MAIL DOM. - RFC 1939 - Post Office Protocol v3 - RFC 2017 - URL External-Body Access-Type - RFC 2183 - The Content-Disposition Header - RFC 2369 - The Use of URLs as Meta-Syntax for Core Mail List Commands - and their Transport through Message Header Fields - (RFC 6068 - The 'mailto' URL scheme) - RFC 2384,1738 - I.e., Much better URL support - RFC 2387 - multipart/related -- yet handled like /alternative - RFC 2392 - Content-ID and Message-ID Uniform Resource Locators - RFC 2405 - The format of MIME message bodies. - RFC 2406 - Common multimedia types. - RFC 2407 - Encoding of non-ASCII text in message headers. - RFC 2449 - POP3 Extensions (including SASL) - RFC 2595 - TLS for POP3 (among others) - RFC 2980 - Common NNTP Extensions - RFC 3156 - MIME Security with OpenPGP - RFC 3207 - SMTP over TLS - RFC 3461, 3464 - - Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery - Status Notifications (DSNs), - An Extensible Message Format for Delivery Status Notifications - RFC 3676 - Updates to the text/plain MIME type and extensions for flowed - text (format=flowed). (Martin Neitzel) - RFC 4422, 4505 - Simple Authentication and Security layer (SASL) - (Tarqi Kazan) - RFC 4880 - OpenPGP Message Format - RFC 4954 - SMTP Authentication - rfc5198.txt Unicode Format for Network Interchange - RFC 5246 - Transport Layer Security (TLS) - RFC 5321 - Simple Mail Transfer Protocol. - RFC 5322 - The basic format of email messages. - RFC 5598 - Internet Mail Architecture - RFC 5751 - Secure/Multipurpose Internet Mail Extensions (S/MIME) - TODO NOTE that our S/MIME support is extremely weak regarding - TODO understanding, we should not rely on OpenSSL but instead - TODO handle it ourselfs; the RFC says: - S/MIME is used to secure MIME entities. A MIME entity can be a sub- - part, sub-parts of a message, or the whole message with all its sub- - parts. A MIME entity that is the whole message includes only the - MIME message headers and MIME body, and does not include the RFC-822 - header. Note that S/MIME can also be used to secure MIME entities - used in applications other than Internet mail. If protection of the - RFC-822 header is required, the use of the message/rfc822 media type - is explained later in this section. - RFC 6125 - Representation and Verification of Domain-Based Application - Service Identity within Internet Public Key Infrastructure Using - X.509 (PKIX) Certificates in the Context of Transport Layer Security - (TLS) - RFC 6152 - SMTP Service Extension for 8-bit MIME Transport - RFC 6409 - Message Submission for Mail - rfc6530.txt Overview and Framework for Internationalized Email - rfc6531.txt SMTP Extension for Internationalized Email - rfc6532.txt Internationalized Email Headers - rfc6854.txt Update to Internet Message Format to Allow Group Syntax in - the "From:" and "Sender:" Header Fields - rfc6855.txt IMAP Support for UTF-8 - rfc6856.txt Post Office Protocol Version 3 (POP3) Support for UTF-8 - rfc6857.txt Post-Delivery Message Downgrading for Internationalized - Email Messages - rfc6858.txt Simplified POP and IMAP Downgrading for Internationalized Email - RFC 8058 Signaling One-Click Functionality for List Email Headers - - draft-ietf-uta-email-tls-certs-01.txt - SMTP security via opportunistic DANE TLS draft-ietf-dane-smtp-with-dane-15 - draft-melnikov-smime-header-signing - Considerations for protecting Email header with S/MIME - Read https://tools.ietf.org/html/draft-ietf-uta-tls-bcp-07. - Can we implement OCSP (see RFC 6066; -> RFC 6960)???? - -- This is how the codebase has to be reworked in respect to signals and - jumping: - - 1. We introduce some environment/carrier structs: struct eval_ctx, - struct cmd_ctx, (struct send_ctx). All of these form lists. - eval_ctx gets a new instance every time evaluate() is entered; for - the interactive mode, commands() instantiates an outermost eval_ctx - that "cannot be left". - - cmd_ctx knows about the eval_ctx in which it is was created; it is - created for each command that has an entry in cmd_tab and is passed - as the new argument of these kind of functions. - (send_ctx is the carrier for the MIME and send layer rewrite.) - 2. cmd_tab handling becomes more intelligent: add bit fields so that - for some arguments (i.e., the first two or three) automatic - normalization can be specified, like whitespace trimming, like - automatic expansion of variables etc. For getrawlist. - - - and: commands that work only in interactive mode, and are - _silently_ ignored otherwise (no error). - I.e., commands which work on only with true user interaction - should not need to take care no more, but simply assume that - there will be true user interaction. And like that. - - E.g., customhdr header field is always to be WS trimmed, just the - same as the body. shortcut at least should have trimmed name, etc. - To do that right, properly parse from left to right, take care - about backslash escaping, and (optionally) expand shell variables - and backtick substituations. - - The cmd_ctx needs to carry around the cmd_tab structure so that the - commands can themselves print the synopsis in case of errors -- - alternatively we need a return bit which should cause the command - callee to emit the synopsis as an error message, whatever is best. - Some (hopefully) duplicate occurrances of such strings can vanish. - 2.1 We have some commands which offer "show" subcommands. - Those should only work in interactive mode OR SO. - This could be done with a flag, too. - X. Offer a central "`[un]onevent' EVENT MACRO [conditions]" register. - Change all hooks to use that one, optimize the case where a single - macro is registered for a single event but with different - preconditions. - - E.g., "on_interactive_mode_enter" could then be hooked to call - `bind' and set `colour's, for example. In conjunction with 2. - above those commands could simply be (silent, successful) no-ops - before we reach that state (and again after - on_interactive_mode_leave is processed). - - X.x We should make the message accessible at least a bit on macro level. - I.e., so that message specification checks can be applied on the - macro level, as in - if `message match-spec '@~t@bank.com'` - set smime-sign customhdr='X-BlahBlahBlah:Banks are monsters' - endif - where `message' (or so) would refer to the currently active - message (in compose mode) or the "dot" (otherwise). - `message' would gain some keywords. Something like that. - 8. The line buffer used in evaluate() that is passed through to - commands (thus: in cmd_ctx, then) needs to become `const'. - (I tried to do so in the past, but some commands write into it, - thus i stopped and iirc even added some changes on my own which - take favour of reusing that buffer.) - + Macro execution then no longer needs to clone the macro content - lines before executing then. - + The command context also takes preparsed command array if so - specified in cmd_tab, and entries are cleaned up (see 2.) - 9. We should unite all the un*() commands with their non-un* - versions, if they have one. They may take a different argument - list etc., but only one entry in the command table for such. - - The POSIX standard command abbreviations must remain, so maybe - outsource those in a hashtable or whatever that is checked first, - but detach command table order from that anyway. - - Offer a(n optional, and on/off switchable) Damerau-Levenshtein - mode for command completion; - 10. We MUST switch the entire codebase to use SysV signal handling, don't - do the BSDish SA_RESTART, which is why we still suffer the way we - do and need jumps. I can't dig BSD signal handling, and never ever - did so myself until i got here. - 11. Macro execution is potentially recursive. Meaning that - `undefine', etc. can occur while macros are executing. - The simplemost approach would be to have some recursion counter for - each macro and a delete_later flag that gets honoured when the - recursion counter gets zero. It would be already possible to - immediately remove the macro from the hashtable, so that deeper - levels wouldn't find it anymore. To avoid leaks (which *are*) we - need to have a jump location for our upcoming signal handler - anyway. (Also to get rid of the temporary_localopts_free() hack. - + The same is true for `account's. Here things are complicated by - the global `account_name', i.e., the account could be the current - one. - + That also is: redefinition of names that have yet-pending - deletion requests are possible. - 20. The attachment charset selection loop can then be rewritten to - check whether an ^C occurred and treat that as end-of-loop - condition. In v14.6.3 this was introduced, but it should act - differently depending on whether the interrupt occurred during - character set selection or attachment filename input. - Also in respect whether the interrupt is "propagated" or not. - It's ugly, and documented accordingly. - 30. Mail protocols and mail messages are accessed through a "VFS". - URL should then support file:// and maildir:// etc. Update manual! - - . It should be considered to drop many variables in favour of - ?SEARCH usage for keys, or key=value pairs, e.g. - smtp://exam.ple?starttls=yes;smtp-hostname=; - etc. USER@HOST is neat, but that is possibly preferable? - We could then also extend *mta* and drop *smtp* as such, e.g., - mta=smtp://dSDAS, mta=builtin://XZ, mta=bltin://XZ. - Question: what is with smtp-hostname and such?? - 31. Flag updates of individual messages must find their way through to - the protocol. - 32. Use deque (on partial views). - 34. We need a new abstraction: `vie[ws]'. I.e, viewset, viewclear, - view(show|look)? We will have (possibly readonly) boxes, a summary - cache file, which is created when a mailbox is read in, and all - that crap that we currently have (setptr(), setmsize(), etc.!) must - vanish. Instead there is another, in-memory abstraction, the view. - Some views are built-in and are somehow selectable (the "all" view, - for example, and the "new" view). - It is possible to make a view persistent by giving it a name, e.g., - 'viewset NAME MSG-SPEC' -- 'viewset allnew :n' (and 'viewset XY `' - or something must be capable to tag the last a.k.a current). - Switching to a named view would thus look over the entire current - view (!) for all messages that comply to the message-spec of the - view, then create a sorted/threaded display of that subset and - create a new anonymous "result" view. It must be possible to - specify that a view is to be applied to the entire mailbox instead - of the current view, via a simple easy understandable syntax. - - Or name it "msgset". - We won't extend macros that much because it would require much too - much logic for no purpose, instead we'll (hopefully) add some - scriptable abstraction, with an optional built-in Lua binding. - E.g., it would be too complicated to create a language to access - individual message parts (headers etc.), add error handling etc. - Better to make it all directly accessible via language binding, and - offer commands which relinquish execution to such a binding, maybe - even with some arguments, as in "? lua ARG" - it should be possible - that ARG is a msgset, then. - On the other hand, ~^ text-protocol stuff isn't that bad, and if - a text-protocol command mode could be added, that would be cool. - Even things like 'create temporary file', write data until EOT in - descriptor / temporary file / etc. and such! - - But what macros should be able to do is iterating over such - a msgset / view, as in - msgset create NAME :SPEC: - msgset add NAME :SPEC: - and then either - for[-each] NAME - normal-cmd SOMEHOW-REFER-TO-ITER - if SOMEHOW-ACCESS-LAST-STATUS - endif - endfor - as well as - msgset cmd NAME normal-cmd - and even - normal-cmd NAME - in which case NAME should simply be treated as a SPEC, likely that - this requires a new trigger, though, e.g. {NAME}, [NAME] or !NAME... - I.e., the new namelist (likely a deque) should contain MsgRef - objects which point to a Message and a Mailbox (for cross-mailbox - msgset's and without the need for a Message to store a pointer to - the owning mailbox? Or make MsgRef a superclass that may have - a subclass which offers such cross-refs). - - 50. Support SASL, unite all GSS-API etc. under an abstraction! - Maybe even drop direct GSS-API and support only through SASL. - That is, we can very well provide our own little SASL-client - abstraction with what we have already by simply defining some - "readline" abstraction plus struct ccred for use by the - authentication layer: the protocols must set it up by passing in - a line of authentication mechanisms and a callback mechanism. - Possibly the user should be able to permit or forbid automatic - selection of GSS-API (to avoid useless round-trips) etc. etc. - 80. The MIME rewrite: mime_parser <-> mime "DOM" analyzer <-> - selectively create filter chains per part and do XY. - - This also affects sending, and it will allow us to dig MIME - (multipart) mail for -t/-m _correctly_. Also in sofar as we can - hook a content-decoder before diving into the MIME structure, and - with a DOM, we can re-encode such things properly as we (re)send - such mails. All this is wrong at the time of this writing! - We still need to special treat things like, e.g., RFC 2046, 5.2.1. - But on top of we-can, as opposed to the opposite. - 99. Now i'm dreaming some more: with the new object-based approach - multiple mailboxes could be in an open state. And it should be - possible to do so for the user (`file' and `folder' are required to - quit the current mailbox [first -- this not yet]), which is why we - either need new trigger characters or new commands. - The absolute sensation would be joinable operations over multiple - open mailboxes, e.g., views over multiple such! -100. If i say `p 3 2 1' then i mean `3 2 1' not `1 2 3'. - -- The thread sort doesn't get - - [A is deleted] - B answers A - C answers B - D answers B - E is unrelated - F answers A - - The current sort fails to recognize that F and the thread starting at - B are related, which results in a mess. - --- Being able to sort the outermost level of threads was a suggestion - of Rudolf Sykora, especially being able to sort the outermost level - according to the date of the newest message in a thread. - -- Drop **use-starttls* in favour of something better: support 'auto', - 'no' and 'yes' and act accordingly. For the former be smart enough on - the protocol side. (RFC 3207 describes man-in-the-middle attacks due - to 'auto' TLS, so explicit 'yes' should be favoured). - -- NOTE: we do not really support IPv6 sofar in that we are not prepared to - deal with IPv6 addresses (as in '[ADDR]:PORT'). Pimp url_parse(). - And socket I/O. - -- I had a connection collapse during a POP3 download, and neither was - there a chance to get access to the 22 yet downloaded mails (after - five minutes of waiting followed by CNTRL-C), nor did the layer - recognize this very well (got myriads of `POP3 connection already - closed.' messages, btw., the thirty-something messages which were not - yet downloaded caused (after CNTRL-C) this: ETC. ETC. - -- I got an email in base64 that obviously used CRNL line endings, and once - i've replied the CR where quoted as *control* characters. - Get rid of those (kwcrtest.mbox; may be hard to do everywhere for some - time, due to how we deal with I/O and Send layer etc). - -- edit.c doesn't do NEED_BODY (but IMAP won't work anyway). - -- Stuff - .. s-nail FILE' is not interactive, even though it accepts terminal input.) - . It would be cool if ghosts, shortcuts, alternates could - (optionally?) be tracked via localopts. And macros. And inner macros. - (Additional entry on xy-local xy somewhere above) - And / or local to a macro/account if defined in one. - Should be per-carrier copy-on-write environments. - Just like TeX with def / gdef ... - . Just like the RFC 3676 link above, it would be nice if it would be - somehow possible to recognize links in a document; i don't know yet - how this could be achieved without loosing formatting information (i - mean, we could enable this and inject terminal colour sequences, but - one should be able to say 'follow link x', starting an action - handler, and the 'x' must come from somwhere - simply injecting - '[NUMBER]' references distorts visual). Anyway, it's just a filter - that recognized the usual stuff, and of course we can - simply have a buffer which records all such occurrences, so that - user can say '? xy NUMBER', but without the context it soon gets - hard. - . TTY layer: the tc*() family may fail with EINTR, which MUST be - handled; setting also generates SIGTTOU when we're not in foreground - pgrp, so we better deal with all that and ENSURE WE GET THROUGH when - resetting terminal attributes! - .. TTY "I guess it would be much better to create our own session via - setpgid(2) and then tcsetpgrp(3) any processes we run synchronously, - and properly deal with SIGTTOU, but it always has been like that and - i won't do that before other things have been changed. - .. NOTE: TTY: place (at least n_child_run()) childs which go over - terminal into own group. - Introduce global "terminal state" manager which tracks who - currently owns the terminal, so that we can gracefully switch it - on/off, check in main loop whether restore is necessary. - It that can deal with multiple "windows" then we could have open - multiple of those, i.e., multiple PAGER instances, and non-PAGER - instances (fflush() if there is FILE before switch off). - - TTY thus: "needsterminal" could be driven gracefully EVEN IF - a PAGER is open because the current user action is "print*", since - we KNOW that there is a PAGER and can temporarily lay it down to - sleep, fflush()ing/adjusting as necessary, and wake it up again - afterwards (or, with some work, gracefully shut it down if ^C ^C). - This is of course also true for user questions ("really display - part XY?", "need decryption password:", etc.!!!)!! - . Remove all occurrences of mbtowc() with mbrtowc(); temporarily add (some) - global mbstate_t objects until the send / MIME layer rewrite is done and - has the carrier. Use flip states and add aux funs with only update the - state+toggle on success -- CURRENTLY MBTOWC FAILURES ARE PRACTICALLY NOT - HANDLED!! - . pop3,mime_cte +++: \r,\n -> \015,\012, to avoid ANY problems.. - Maybe our passed carrier should pass desired output newline (as - opposed to data-embedded newlines) - . which_protocol(), *newmail* mechanism, displayname, mailname: all of - this SHIT must vanish and be replaced by a URL, and - a nice "VFS" mailbox object that carries all necessary state so that - one can work with it. - - If not mentioned somewhere else: struct message should be splitted - into a tree of objects, with a base class that has as few fields as - possible; the global *message should be a deque, only accessible via - iterator; it should store pointers to (the actually used subtype of) - message structures instead; i.e., for maildir boxes the path is yet - allocated separately, then it could be part of the message object, - etc. - It should contain a ui8_t that tracks the number of contained parts, - so that the "fits-onto-the-screen" tests are more useful than today; - i think 8-bit is sufficient, with 0xFF meaning more-than-fits-here. - . Given how many temporary files we use, it would make sense to - support a reusable single temporary file, as in singletmp_take() and - singletmp_release(), where singletmp_release() would close and thus - drop the file if it excesses a specific (configurable) size, and the - mainloop tick would close it (after X (configurable) unused ticks)) - otherwise. I guess this would improve performance for searching - etc. etc. - . _(), N_(), V_(): - use GNU tools for extraction etc., and write a simple helper program - which converts these files to a serialized hashmap, just like we did - for the okeys (and *exactly* so); add a config check whether the ({}) - extension is supported and finally use that for some ({static char - const *tr_res;}) injection optimization, then. (Think SFSYS) - . Searching body/text yet includes headers from attachments and - attachment data. This is shit. :) - . The "nifty" unregister_file()->_compress() mechanism that even - shovels '-Sfolder=imaps://user1@localhost -Srecord="+Sent Items"' - *records* calls clearerr() on the descriptor before performing it's - action anyway. when we really make it even to the I/O rewrite, it - should be possible to dis-/allow such -- it doesn't make sense to - add something faulty to whatever was not faulty before! - . `dp' prints EOF at the end of a thread even if unread messages - follow - . `resend' doesn't smime-sign. - . Really do extend the test already today; test S/MIME - signing/encryption/decryption with two pairs of identities, instead - of of one. - . RFC 5751 describes a message multipart layout that also includes the - headers in the signature; it would be nice (for completeness sake) - to be able to support that. Note shutup@ietf.org. - . The capability to save a message under the name of a recipient is in - the standard etc., but i've never used it. - What would be cool, otoh, would be if there would be the possibility - to register a regular expression, and if just *any* recipient of - a message matches, store the message in the given folder instead. - I.e., if i send a message to s-nail-users@ then i most likely want - to get a copy to the corresponding box, regardless of whoever the - message was sent To: Cc: or Bcc: else.. - . why not simply sucking in complete MIME messages via -t? In a way - that parses it as a MIME message, that is! - (Brezn Stangl, brezn DOT stangl AT yandex DOT com) - . mutt list handling (`~') is very powerful - . We have some use of *at() functions, especially anything which - temporarily switches cwd. - . *newmail* is terrible. At some later time we need to do somethings - with timeouts etc. (for MBOX and Maildir it's not that bad, but for - anything over the network, yet the mentioned may come in over NFS). - Remove it until we have something better? - . The RFC 3798 *disposition-notification-send* mechanism is yet not - truly conforming (and works with *from*). Also, this is only the - sender side, there should be support for creating the MDN response. - (Maybe ternary option: off (default), - create-when-unread-flag-goes-away, ditto-but-also-strip-header) - .. Also, there is DSN as a SMTP extension, see the RFCs 3461, 346 (as - above) and 6522 (Wikipedia). - . The var_* series should return "const char*" not "char*". - This should already work today because otherwise we would get SEGV - all through the way. - .. While here: rename enum okeys to enum internal_variables, and the - ok_*() series to iv_(). And see below for env_*() series. - . fexpand() the 2nd: it should return structure because we need to - check for FEDIT_SYSBOX, which currently only checks whether the first - character of a file name is '%', not whether it is '%', '%:FILEPATH' - or '%VALIDUSER', because that is impossible to do! - . On the long run in-memory password storage should be zeroed after - use, possibly even encoded *during* use. After v15. - . We need a `spamcheck' command that is like `spamrate' but updates - the mail in-place, i.e., with the headers that the spam engine adds. - . __narrow_suffix() is wrong (for stateful encodings that we - don't support yet) and should inject a reset sequence if it shortens - the string. - .. THAT IS TO SAY: the entire codebase doesn't really support stateful - encodings, including the bidi_ things that i've done (but the MLE - does iirc? what is this??). We should have a global string that - has the multibyte reset sequence plus length available for easy - access. - . When a user edits a specific header, it should no longer be - modified. (Do not loose knowledge that collect() edited it.) - . Regular expression list resorting is no good; the user should be - able to specify a match order weight, as in: - mlist 10 a@b.org 8 c@d.org .*@else@org 0 almost@never.com - So: optional digit 0-10, where 0-4 are never relinked and always - placed at the tail, 6-10 are never relinked and always placed at - head (all in decreasing order, head to tail), and 5 is the implicit - value, placed in between and automatically resorted just as is the - sole algorithm we currently have. - .. And maybe we should have an event mechanism with one-shot etc.. - Then install a resorter function when we actually have lookups and - one-shot sort the entire thing once (when the loop ticks). - Instead of busy resorting, that is. - . We need more hooks: on-leave, on-connect.. whatever - . The new internal ~/$ expansion mechanism should possibly get support - for POSIX parameter expansions ${[:]-} and ${[:]+} (and ${[:]?}). - There is no real way to get the functionality otherwise... - . Make S/MIME an option separate of SSL/TLS, i.e., optional. - . With very long input Heirloom mailx(1) / S-nail(1) can produce - encoded-words (RFC 2047) with incomplete multibyte sequences (i.e., - non self-contained encoded-words). - . Group addresses, especially the undisclosed recipients but also - "Bla": addresses; are missing. - . It is terrible that -S sets variables twice, at once and after the - resource files have been loaded. Instead we should set a bit - . Cleanup: n_ is anything public / external, - _n_ is public/e but not really, FILENAME/ABBREV_symbol are statics, - FILENAME/ABBREV__symbol are helpers of a single other static - (function group) (-> colour.c, lex_input.c: done). - . Per-folder (S/MIME) en- and decryption key (Tarqi Kazan): if a xy - variable is set (that points to a key) add a transparent en- and - decryption layer on top of any per-message operation (for boxes for - which the variable is set). - . For v15.0: remember private thread with Tarqi Kazan (2015-05) and - try to improve situation with *record*, so that only messages enter - it which have really been sent. If we support postponing and have - a multi-process layout and add an intermediate *record-queue* we - may be able to improve the situation. - . [Dd]ecrypt should transport decryption errors, not silently be like - copy and copy undecrypted content, because this is what it's for? - ..We need atomic operations with rollback support in order to make - this happen, but i think maybe file truncation (decryption always - appends?) is enough provided that files are locked? - WE NEED ATOMIC OPERATION SUPPORT for quite some operations. - Man, are we far from that. - . `pipe' is total shit regarding MIME. We need some defined and - documented method to configure which parts are displayed and/or how - they are visually separated. - . The new n_err() facility is nice, but we need n_msg() too, maybe - more. Maybe à la Log:: and macro wrappers with priority unrolled, - then add user-settable treshold, too. Btw. C99 adds vararg macros. - .. We must handle embedded newlines properly - .. In PARTICULAR we MUST NOT use stdout when in batch mode: - ssh X "echo 'move * |cat' | s-nail -#f %" >> download - should do the right thing, but can't like that due to unwanted - noise in the stdout output! Best would be if it would be - possible to explicitly define a file/dev to be used, but falling - back to stderr in batch mode otherwise. (think S-Web42) - . Exit status handling is sick. - . Especially in interactive mode MIME classification should count - (non-NUL) control characters and the number of different thereof, - giving users an option to treat something as text nonetheless. - E.g., roff files often use controls as separators in conditionals, - some shell scripts use controls for $IFS field separation, and that - will end up with charset=binary. - .. *mime-allow-text-controls* is a no-brainer: instead we should - introduce something that allows us to switch and detect UTF-16 once - we run into the problematic situation, then start all over in an - Unicode mode? I.e.: continue to force the user to set such - a switch, but do it in a sensible fashion, because the UTF-16 data - stream may nonetheless contain control characters?? --- - - . We can "steal" features from msmtp(1) that make sense: SOCKS support - (primitive) and /etc/aliases ($mta_alias_file). At least postfix(1) - supports file and pipe addressees in the latter... It also - supports include files via :include:/filename but which i think - should be supported in a second step. Ditto caching (timestamp - check and a mechanism to support/disable caching.) - --- - -. smime_verify(): only dump the multipart that is signed into the file for - verification purposes. DOCUMENT that only the FIRST such part is verified. - Ditto, we don't decrypt but on toplevel. Sic. - -. convert iconv so that it always "places the reset sequence" i.e. - finalizes the string properly. we don't do this at all right now! - -. wysh: support a -- terminator, also in getmsglist(); - then: `pipe' etc.: add support for wysh prefix, which uses the new - syntax: like this we can obsolete the ridiculous lastring() hack of nail - in v15! (Stanley Lieber, Gavin Troy) - -. -:, *mimetypes-load-control*, ?, should honour the given load order; as - appropriate, add a "b" for built-in! - It happened to me that i searched for at least 30 minutes for a bug - that resulted in text/plain not text/x-diff only to find out that this - was because of ArchLinux's /etc/mime.types! - -. getapproval() should support a TRUM1 return, meaning "cancel", - to be understood as appropriate. - -. `mbox' _can_ be made usable anywhere with yet another PS_MBOX global - bypass! ditto touch,save,Save - -. with *mime-alternative-favour-rich* it is possibly time to support GMAIL - style quotes, as well as class="quote" and such. - -. can we introduce a BUILD_DIR thing? or OBJ_DIR OBJDIR (what was the BSD - name for this again?) I really would like to be able to have separate - build directories! (PREFIXDEV, however, won't work out for a while.) - -. We should be much smarter regarding when we allow a PAGER - etc. to be used, which is supposed to be a possibly useful thing in - $ s-nail -Scrt=0 >LOG 2>&1 - -. when doing Lreply we may ask for Reply-To:, but strip out the address - actively even if user said yes to the question. That should not - happen? It somehow matches the documentation however. unsure. - -. if -t is used and the file includes Mail-Followup-To:, then we should - NOT add to it, OR we need to offer a way to get there! - -. stale dotlock files should be removed - postfix has - a stale_lock_time=500s variable to configure that - -# s-ts-mode diff --git a/gen-errors.h b/gen-errors.h dissimilarity index 97% index 9e4d3ac1..054061b7 100644 --- a/gen-errors.h +++ b/gen-errors.h @@ -1,442 +1,282 @@ -/*@ gen-errors.h, generated by ./make-errors.sh. - *@ See auxlily.c for more */ - -static char const a_aux_err_names[] = { - /* 0. [0]+4 NONE */ - 'N','O','N','E','\0', - /* 1. [5]+4 2BIG */ - '2','B','I','G','\0', - /* 2. [10]+5 ACCES */ - 'A','C','C','E','S','\0', - /* 3. [16]+9 ADDRINUSE */ - 'A','D','D','R','I','N','U','S','E','\0', - /* 4. [26]+12 ADDRNOTAVAIL */ - 'A','D','D','R','N','O','T','A','V','A','I','L','\0', - /* 5. [39]+11 AFNOSUPPORT */ - 'A','F','N','O','S','U','P','P','O','R','T','\0', - /* 6. [51]+5 AGAIN */ - 'A','G','A','I','N','\0', - /* 7. [57]+7 ALREADY */ - 'A','L','R','E','A','D','Y','\0', - /* 8. [65]+4 BADF */ - 'B','A','D','F','\0', - /* 9. [70]+6 BADMSG */ - 'B','A','D','M','S','G','\0', - /* 10. [77]+4 BUSY */ - 'B','U','S','Y','\0', - /* 11. [82]+8 CANCELED */ - 'C','A','N','C','E','L','E','D','\0', - /* 12. [91]+5 CHILD */ - 'C','H','I','L','D','\0', - /* 13. [97]+11 CONNABORTED */ - 'C','O','N','N','A','B','O','R','T','E','D','\0', - /* 14. [109]+11 CONNREFUSED */ - 'C','O','N','N','R','E','F','U','S','E','D','\0', - /* 15. [121]+9 CONNRESET */ - 'C','O','N','N','R','E','S','E','T','\0', - /* 16. [131]+6 DEADLK */ - 'D','E','A','D','L','K','\0', - /* 17. [138]+11 DESTADDRREQ */ - 'D','E','S','T','A','D','D','R','R','E','Q','\0', - /* 18. [150]+3 DOM */ - 'D','O','M','\0', - /* 19. [154]+5 DQUOT */ - 'D','Q','U','O','T','\0', - /* 20. [160]+5 EXIST */ - 'E','X','I','S','T','\0', - /* 21. [166]+5 FAULT */ - 'F','A','U','L','T','\0', - /* 22. [172]+4 FBIG */ - 'F','B','I','G','\0', - /* 23. [177]+11 HOSTUNREACH */ - 'H','O','S','T','U','N','R','E','A','C','H','\0', - /* 24. [189]+4 IDRM */ - 'I','D','R','M','\0', - /* 25. [194]+5 ILSEQ */ - 'I','L','S','E','Q','\0', - /* 26. [200]+10 INPROGRESS */ - 'I','N','P','R','O','G','R','E','S','S','\0', - /* 27. [211]+4 INTR */ - 'I','N','T','R','\0', - /* 28. [216]+5 INVAL */ - 'I','N','V','A','L','\0', - /* 29. [222]+2 IO */ - 'I','O','\0', - /* 30. [225]+6 ISCONN */ - 'I','S','C','O','N','N','\0', - /* 31. [232]+5 ISDIR */ - 'I','S','D','I','R','\0', - /* 32. [238]+5 MFILE */ - 'M','F','I','L','E','\0', - /* 33. [244]+5 MLINK */ - 'M','L','I','N','K','\0', - /* 34. [250]+7 MSGSIZE */ - 'M','S','G','S','I','Z','E','\0', - /* 35. [258]+8 MULTIHOP */ - 'M','U','L','T','I','H','O','P','\0', - /* 36. [267]+11 NAMETOOLONG */ - 'N','A','M','E','T','O','O','L','O','N','G','\0', - /* 37. [279]+7 NETDOWN */ - 'N','E','T','D','O','W','N','\0', - /* 38. [287]+8 NETRESET */ - 'N','E','T','R','E','S','E','T','\0', - /* 39. [296]+10 NETUNREACH */ - 'N','E','T','U','N','R','E','A','C','H','\0', - /* 40. [307]+5 NFILE */ - 'N','F','I','L','E','\0', - /* 41. [313]+6 NOBUFS */ - 'N','O','B','U','F','S','\0', - /* 42. [320]+6 NODATA */ - 'N','O','D','A','T','A','\0', - /* 43. [327]+5 NODEV */ - 'N','O','D','E','V','\0', - /* 44. [333]+5 NOENT */ - 'N','O','E','N','T','\0', - /* 45. [339]+6 NOEXEC */ - 'N','O','E','X','E','C','\0', - /* 46. [346]+5 NOLCK */ - 'N','O','L','C','K','\0', - /* 47. [352]+6 NOLINK */ - 'N','O','L','I','N','K','\0', - /* 48. [359]+5 NOMEM */ - 'N','O','M','E','M','\0', - /* 49. [365]+5 NOMSG */ - 'N','O','M','S','G','\0', - /* 50. [371]+10 NOPROTOOPT */ - 'N','O','P','R','O','T','O','O','P','T','\0', - /* 51. [382]+5 NOSPC */ - 'N','O','S','P','C','\0', - /* 52. [388]+4 NOSR */ - 'N','O','S','R','\0', - /* 53. [393]+5 NOSTR */ - 'N','O','S','T','R','\0', - /* 54. [399]+5 NOSYS */ - 'N','O','S','Y','S','\0', - /* 55. [405]+7 NOTCONN */ - 'N','O','T','C','O','N','N','\0', - /* 56. [413]+6 NOTDIR */ - 'N','O','T','D','I','R','\0', - /* 57. [420]+8 NOTEMPTY */ - 'N','O','T','E','M','P','T','Y','\0', - /* 58. [429]+9 NOTOBACCO */ - 'N','O','T','O','B','A','C','C','O','\0', - /* 59. [439]+7 NOTSOCK */ - 'N','O','T','S','O','C','K','\0', - /* 60. [447]+6 NOTSUP */ - 'N','O','T','S','U','P','\0', - /* 61. [454]+5 NOTTY */ - 'N','O','T','T','Y','\0', - /* 62. [460]+4 NXIO */ - 'N','X','I','O','\0', - /* 63. [465]+9 OPNOTSUPP */ - 'O','P','N','O','T','S','U','P','P','\0', - /* 64. [475]+8 OVERFLOW */ - 'O','V','E','R','F','L','O','W','\0', - /* 65. [484]+4 PERM */ - 'P','E','R','M','\0', - /* 66. [489]+4 PIPE */ - 'P','I','P','E','\0', - /* 67. [494]+5 PROTO */ - 'P','R','O','T','O','\0', - /* 68. [500]+14 PROTONOSUPPORT */ - 'P','R','O','T','O','N','O','S','U','P','P','O','R','T','\0', - /* 69. [515]+9 PROTOTYPE */ - 'P','R','O','T','O','T','Y','P','E','\0', - /* 70. [525]+5 RANGE */ - 'R','A','N','G','E','\0', - /* 71. [531]+4 ROFS */ - 'R','O','F','S','\0', - /* 72. [536]+5 SPIPE */ - 'S','P','I','P','E','\0', - /* 73. [542]+4 SRCH */ - 'S','R','C','H','\0', - /* 74. [547]+5 STALE */ - 'S','T','A','L','E','\0', - /* 75. [553]+4 TIME */ - 'T','I','M','E','\0', - /* 76. [558]+8 TIMEDOUT */ - 'T','I','M','E','D','O','U','T','\0', - /* 77. [567]+6 TXTBSY */ - 'T','X','T','B','S','Y','\0', - /* 78. [574]+10 WOULDBLOCK */ - 'W','O','U','L','D','B','L','O','C','K','\0', - /* 79. [585]+4 XDEV */ - 'X','D','E','V','\0', -}; - -#undef a_X -#define a_X(X) -static char const a_aux_err_docs[] = { - /* 0. [0]+8 NONE */ a_X(N_("No error")) - 'N','o',' ','e','r','r','o','r','\0', - /* 1. [9]+22 2BIG */ a_X(N_("Argument list too long")) - 'A','r','g','u','m','e','n','t',' ','l','i','s','t',' ','t','o','o',' ','l','o','n','g','\0', - /* 2. [32]+17 ACCES */ a_X(N_("Permission denied")) - 'P','e','r','m','i','s','s','i','o','n',' ','d','e','n','i','e','d','\0', - /* 3. [50]+22 ADDRINUSE */ a_X(N_("Address already in use")) - 'A','d','d','r','e','s','s',' ','a','l','r','e','a','d','y',' ','i','n',' ','u','s','e','\0', - /* 4. [73]+31 ADDRNOTAVAIL */ a_X(N_("Cannot assign requested address")) - 'C','a','n','n','o','t',' ','a','s','s','i','g','n',' ','r','e','q','u','e','s','t','e','d',' ','a','d','d','r','e','s','s','\0', - /* 5. [105]+47 AFNOSUPPORT */ a_X(N_("Address family not supported by protocol family")) - 'A','d','d','r','e','s','s',' ','f','a','m','i','l','y',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',' ','b','y',' ','p','r','o','t','o','c','o','l',' ','f','a','m','i','l','y','\0', - /* 6. [153]+32 AGAIN */ a_X(N_("Resource temporarily unavailable")) - 'R','e','s','o','u','r','c','e',' ','t','e','m','p','o','r','a','r','i','l','y',' ','u','n','a','v','a','i','l','a','b','l','e','\0', - /* 7. [186]+29 ALREADY */ a_X(N_("Operation already in progress")) - 'O','p','e','r','a','t','i','o','n',' ','a','l','r','e','a','d','y',' ','i','n',' ','p','r','o','g','r','e','s','s','\0', - /* 8. [216]+19 BADF */ a_X(N_("Bad file descriptor")) - 'B','a','d',' ','f','i','l','e',' ','d','e','s','c','r','i','p','t','o','r','\0', - /* 9. [236]+11 BADMSG */ a_X(N_("Bad message")) - 'B','a','d',' ','m','e','s','s','a','g','e','\0', - /* 10. [248]+11 BUSY */ a_X(N_("Device busy")) - 'D','e','v','i','c','e',' ','b','u','s','y','\0', - /* 11. [260]+18 CANCELED */ a_X(N_("Operation canceled")) - 'O','p','e','r','a','t','i','o','n',' ','c','a','n','c','e','l','e','d','\0', - /* 12. [279]+18 CHILD */ a_X(N_("No child processes")) - 'N','o',' ','c','h','i','l','d',' ','p','r','o','c','e','s','s','e','s','\0', - /* 13. [298]+32 CONNABORTED */ a_X(N_("Software caused connection abort")) - 'S','o','f','t','w','a','r','e',' ','c','a','u','s','e','d',' ','c','o','n','n','e','c','t','i','o','n',' ','a','b','o','r','t','\0', - /* 14. [331]+18 CONNREFUSED */ a_X(N_("Connection refused")) - 'C','o','n','n','e','c','t','i','o','n',' ','r','e','f','u','s','e','d','\0', - /* 15. [350]+24 CONNRESET */ a_X(N_("Connection reset by peer")) - 'C','o','n','n','e','c','t','i','o','n',' ','r','e','s','e','t',' ','b','y',' ','p','e','e','r','\0', - /* 16. [375]+25 DEADLK */ a_X(N_("Resource deadlock avoided")) - 'R','e','s','o','u','r','c','e',' ','d','e','a','d','l','o','c','k',' ','a','v','o','i','d','e','d','\0', - /* 17. [401]+28 DESTADDRREQ */ a_X(N_("Destination address required")) - 'D','e','s','t','i','n','a','t','i','o','n',' ','a','d','d','r','e','s','s',' ','r','e','q','u','i','r','e','d','\0', - /* 18. [430]+32 DOM */ a_X(N_("Numerical argument out of domain")) - 'N','u','m','e','r','i','c','a','l',' ','a','r','g','u','m','e','n','t',' ','o','u','t',' ','o','f',' ','d','o','m','a','i','n','\0', - /* 19. [463]+19 DQUOT */ a_X(N_("Disc quota exceeded")) - 'D','i','s','c',' ','q','u','o','t','a',' ','e','x','c','e','e','d','e','d','\0', - /* 20. [483]+11 EXIST */ a_X(N_("File exists")) - 'F','i','l','e',' ','e','x','i','s','t','s','\0', - /* 21. [495]+11 FAULT */ a_X(N_("Bad address")) - 'B','a','d',' ','a','d','d','r','e','s','s','\0', - /* 22. [507]+14 FBIG */ a_X(N_("File too large")) - 'F','i','l','e',' ','t','o','o',' ','l','a','r','g','e','\0', - /* 23. [522]+16 HOSTUNREACH */ a_X(N_("No route to host")) - 'N','o',' ','r','o','u','t','e',' ','t','o',' ','h','o','s','t','\0', - /* 24. [539]+18 IDRM */ a_X(N_("Identifier removed")) - 'I','d','e','n','t','i','f','i','e','r',' ','r','e','m','o','v','e','d','\0', - /* 25. [558]+21 ILSEQ */ a_X(N_("Illegal byte sequence")) - 'I','l','l','e','g','a','l',' ','b','y','t','e',' ','s','e','q','u','e','n','c','e','\0', - /* 26. [580]+25 INPROGRESS */ a_X(N_("Operation now in progress")) - 'O','p','e','r','a','t','i','o','n',' ','n','o','w',' ','i','n',' ','p','r','o','g','r','e','s','s','\0', - /* 27. [606]+23 INTR */ a_X(N_("Interrupted system call")) - 'I','n','t','e','r','r','u','p','t','e','d',' ','s','y','s','t','e','m',' ','c','a','l','l','\0', - /* 28. [630]+16 INVAL */ a_X(N_("Invalid argument")) - 'I','n','v','a','l','i','d',' ','a','r','g','u','m','e','n','t','\0', - /* 29. [647]+18 IO */ a_X(N_("Input/output error")) - 'I','n','p','u','t','/','o','u','t','p','u','t',' ','e','r','r','o','r','\0', - /* 30. [666]+27 ISCONN */ a_X(N_("Socket is already connected")) - 'S','o','c','k','e','t',' ','i','s',' ','a','l','r','e','a','d','y',' ','c','o','n','n','e','c','t','e','d','\0', - /* 31. [694]+14 ISDIR */ a_X(N_("Is a directory")) - 'I','s',' ','a',' ','d','i','r','e','c','t','o','r','y','\0', - /* 32. [709]+19 MFILE */ a_X(N_("Too many open files")) - 'T','o','o',' ','m','a','n','y',' ','o','p','e','n',' ','f','i','l','e','s','\0', - /* 33. [729]+14 MLINK */ a_X(N_("Too many links")) - 'T','o','o',' ','m','a','n','y',' ','l','i','n','k','s','\0', - /* 34. [744]+16 MSGSIZE */ a_X(N_("Message too long")) - 'M','e','s','s','a','g','e',' ','t','o','o',' ','l','o','n','g','\0', - /* 35. [761]+18 MULTIHOP */ a_X(N_("Multihop attempted")) - 'M','u','l','t','i','h','o','p',' ','a','t','t','e','m','p','t','e','d','\0', - /* 36. [780]+18 NAMETOOLONG */ a_X(N_("File name too long")) - 'F','i','l','e',' ','n','a','m','e',' ','t','o','o',' ','l','o','n','g','\0', - /* 37. [799]+15 NETDOWN */ a_X(N_("Network is down")) - 'N','e','t','w','o','r','k',' ','i','s',' ','d','o','w','n','\0', - /* 38. [815]+35 NETRESET */ a_X(N_("Network dropped connection on reset")) - 'N','e','t','w','o','r','k',' ','d','r','o','p','p','e','d',' ','c','o','n','n','e','c','t','i','o','n',' ','o','n',' ','r','e','s','e','t','\0', - /* 39. [851]+22 NETUNREACH */ a_X(N_("Network is unreachable")) - 'N','e','t','w','o','r','k',' ','i','s',' ','u','n','r','e','a','c','h','a','b','l','e','\0', - /* 40. [874]+29 NFILE */ a_X(N_("Too many open files in system")) - 'T','o','o',' ','m','a','n','y',' ','o','p','e','n',' ','f','i','l','e','s',' ','i','n',' ','s','y','s','t','e','m','\0', - /* 41. [904]+25 NOBUFS */ a_X(N_("No buffer space available")) - 'N','o',' ','b','u','f','f','e','r',' ','s','p','a','c','e',' ','a','v','a','i','l','a','b','l','e','\0', - /* 42. [930]+17 NODATA */ a_X(N_("No data available")) - 'N','o',' ','d','a','t','a',' ','a','v','a','i','l','a','b','l','e','\0', - /* 43. [948]+33 NODEV */ a_X(N_("Operation not supported by device")) - 'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',' ','b','y',' ','d','e','v','i','c','e','\0', - /* 44. [982]+25 NOENT */ a_X(N_("No such file or directory")) - 'N','o',' ','s','u','c','h',' ','f','i','l','e',' ','o','r',' ','d','i','r','e','c','t','o','r','y','\0', - /* 45. [1008]+17 NOEXEC */ a_X(N_("Exec format error")) - 'E','x','e','c',' ','f','o','r','m','a','t',' ','e','r','r','o','r','\0', - /* 46. [1026]+18 NOLCK */ a_X(N_("No locks available")) - 'N','o',' ','l','o','c','k','s',' ','a','v','a','i','l','a','b','l','e','\0', - /* 47. [1045]+21 NOLINK */ a_X(N_("Link has been severed")) - 'L','i','n','k',' ','h','a','s',' ','b','e','e','n',' ','s','e','v','e','r','e','d','\0', - /* 48. [1067]+22 NOMEM */ a_X(N_("Cannot allocate memory")) - 'C','a','n','n','o','t',' ','a','l','l','o','c','a','t','e',' ','m','e','m','o','r','y','\0', - /* 49. [1090]+26 NOMSG */ a_X(N_("No message of desired type")) - 'N','o',' ','m','e','s','s','a','g','e',' ','o','f',' ','d','e','s','i','r','e','d',' ','t','y','p','e','\0', - /* 50. [1117]+22 NOPROTOOPT */ a_X(N_("Protocol not available")) - 'P','r','o','t','o','c','o','l',' ','n','o','t',' ','a','v','a','i','l','a','b','l','e','\0', - /* 51. [1140]+23 NOSPC */ a_X(N_("No space left on device")) - 'N','o',' ','s','p','a','c','e',' ','l','e','f','t',' ','o','n',' ','d','e','v','i','c','e','\0', - /* 52. [1164]+23 NOSR */ a_X(N_("Out of streams resource")) - 'O','u','t',' ','o','f',' ','s','t','r','e','a','m','s',' ','r','e','s','o','u','r','c','e','\0', - /* 53. [1188]+19 NOSTR */ a_X(N_("Device not a stream")) - 'D','e','v','i','c','e',' ','n','o','t',' ','a',' ','s','t','r','e','a','m','\0', - /* 54. [1208]+24 NOSYS */ a_X(N_("Function not implemented")) - 'F','u','n','c','t','i','o','n',' ','n','o','t',' ','i','m','p','l','e','m','e','n','t','e','d','\0', - /* 55. [1233]+23 NOTCONN */ a_X(N_("Socket is not connected")) - 'S','o','c','k','e','t',' ','i','s',' ','n','o','t',' ','c','o','n','n','e','c','t','e','d','\0', - /* 56. [1257]+15 NOTDIR */ a_X(N_("Not a directory")) - 'N','o','t',' ','a',' ','d','i','r','e','c','t','o','r','y','\0', - /* 57. [1273]+19 NOTEMPTY */ a_X(N_("Directory not empty")) - 'D','i','r','e','c','t','o','r','y',' ','n','o','t',' ','e','m','p','t','y','\0', - /* 58. [1293]+24 NOTOBACCO */ a_X(N_("Snorkeling on empty pipe")) - 'S','n','o','r','k','e','l','i','n','g',' ','o','n',' ','e','m','p','t','y',' ','p','i','p','e','\0', - /* 59. [1318]+30 NOTSOCK */ a_X(N_("Socket operation on non-socket")) - 'S','o','c','k','e','t',' ','o','p','e','r','a','t','i','o','n',' ','o','n',' ','n','o','n','-','s','o','c','k','e','t','\0', - /* 60. [1349]+23 NOTSUP */ a_X(N_("Operation not supported")) - 'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','\0', - /* 61. [1373]+30 NOTTY */ a_X(N_("Inappropriate ioctl for device")) - 'I','n','a','p','p','r','o','p','r','i','a','t','e',' ','i','o','c','t','l',' ','f','o','r',' ','d','e','v','i','c','e','\0', - /* 62. [1404]+21 NXIO */ a_X(N_("Device not configured")) - 'D','e','v','i','c','e',' ','n','o','t',' ','c','o','n','f','i','g','u','r','e','d','\0', - /* 63. [1426]+23 OPNOTSUPP */ a_X(N_("Operation not supported")) - 'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','\0', - /* 64. [1450]+41 OVERFLOW */ a_X(N_("Value too large to be stored in data type")) - 'V','a','l','u','e',' ','t','o','o',' ','l','a','r','g','e',' ','t','o',' ','b','e',' ','s','t','o','r','e','d',' ','i','n',' ','d','a','t','a',' ','t','y','p','e','\0', - /* 65. [1492]+23 PERM */ a_X(N_("Operation not permitted")) - 'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','p','e','r','m','i','t','t','e','d','\0', - /* 66. [1516]+11 PIPE */ a_X(N_("Broken pipe")) - 'B','r','o','k','e','n',' ','p','i','p','e','\0', - /* 67. [1528]+14 PROTO */ a_X(N_("Protocol error")) - 'P','r','o','t','o','c','o','l',' ','e','r','r','o','r','\0', - /* 68. [1543]+22 PROTONOSUPPORT */ a_X(N_("Protocol not supported")) - 'P','r','o','t','o','c','o','l',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','\0', - /* 69. [1566]+30 PROTOTYPE */ a_X(N_("Protocol wrong type for socket")) - 'P','r','o','t','o','c','o','l',' ','w','r','o','n','g',' ','t','y','p','e',' ','f','o','r',' ','s','o','c','k','e','t','\0', - /* 70. [1597]+16 RANGE */ a_X(N_("Result too large")) - 'R','e','s','u','l','t',' ','t','o','o',' ','l','a','r','g','e','\0', - /* 71. [1614]+20 ROFS */ a_X(N_("Read-only filesystem")) - 'R','e','a','d','-','o','n','l','y',' ','f','i','l','e','s','y','s','t','e','m','\0', - /* 72. [1635]+12 SPIPE */ a_X(N_("Invalid seek")) - 'I','n','v','a','l','i','d',' ','s','e','e','k','\0', - /* 73. [1648]+15 SRCH */ a_X(N_("No such process")) - 'N','o',' ','s','u','c','h',' ','p','r','o','c','e','s','s','\0', - /* 74. [1664]+21 STALE */ a_X(N_("Stale NFS file handle")) - 'S','t','a','l','e',' ','N','F','S',' ','f','i','l','e',' ','h','a','n','d','l','e','\0', - /* 75. [1686]+13 TIME */ a_X(N_("Timer expired")) - 'T','i','m','e','r',' ','e','x','p','i','r','e','d','\0', - /* 76. [1700]+19 TIMEDOUT */ a_X(N_("Operation timed out")) - 'O','p','e','r','a','t','i','o','n',' ','t','i','m','e','d',' ','o','u','t','\0', - /* 77. [1720]+14 TXTBSY */ a_X(N_("Text file busy")) - 'T','e','x','t',' ','f','i','l','e',' ','b','u','s','y','\0', - /* 78. [1735]+21 WOULDBLOCK */ a_X(N_("Operation would block")) - 'O','p','e','r','a','t','i','o','n',' ','w','o','u','l','d',' ','b','l','o','c','k','\0', - /* 79. [1757]+17 XDEV */ a_X(N_("Cross-device link")) - 'C','r','o','s','s','-','d','e','v','i','c','e',' ','l','i','n','k','\0', -}; -#undef a_X - -#undef a_X -#ifndef __CREATE_ERRORS_SH -# define a_X(X) X -#else -# define a_X(X) 0 -#endif -static struct a_aux_err_map const a_aux_err_map[] = { - {2891760u, 0u, 0u, a_X(n_ERR_NONE)}, - {1871204u, 5u, 9u, a_X(n_ERR_2BIG)}, - {79567967u, 10u, 32u, a_X(n_ERR_ACCES)}, - {2351536831u, 16u, 50u, a_X(n_ERR_ADDRINUSE)}, - {3273067129u, 26u, 73u, a_X(n_ERR_ADDRNOTAVAIL)}, - {518383073u, 39u, 105u, a_X(n_ERR_AFNOSUPPORT)}, - {79709664u, 51u, 153u, a_X(n_ERR_AGAIN)}, - {1120160226u, 57u, 186u, a_X(n_ERR_ALREADY)}, - {2444941u, 65u, 216u, a_X(n_ERR_BADF)}, - {2662551182u, 70u, 236u, a_X(n_ERR_BADMSG)}, - {2467235u, 77u, 248u, a_X(n_ERR_BUSY)}, - {463081807u, 82u, 260u, a_X(n_ERR_CANCELED)}, - {82126244u, 91u, 279u, a_X(n_ERR_CHILD)}, - {3418447855u, 97u, 298u, a_X(n_ERR_CONNABORTED)}, - {4005406460u, 109u, 331u, a_X(n_ERR_CONNREFUSED)}, - {2500215377u, 121u, 350u, a_X(n_ERR_CONNRESET)}, - {2745447813u, 131u, 375u, a_X(n_ERR_DEADLK)}, - {4237350771u, 138u, 401u, a_X(n_ERR_DESTADDRREQ)}, - {76736u, 150u, 430u, a_X(n_ERR_DOM)}, - {83648781u, 154u, 463u, a_X(n_ERR_DQUOT)}, - {85073325u, 160u, 483u, a_X(n_ERR_EXIST)}, - {85445532u, 166u, 495u, a_X(n_ERR_FAULT)}, - {2589944u, 172u, 507u, a_X(n_ERR_FBIG)}, - {1447271076u, 177u, 522u, a_X(n_ERR_HOSTUNREACH)}, - {2700236u, 189u, 539u, a_X(n_ERR_IDRM)}, - {89396190u, 194u, 558u, a_X(n_ERR_ILSEQ)}, - {3743566316u, 200u, 580u, a_X(n_ERR_INPROGRESS)}, - {2711197u, 211u, 606u, a_X(n_ERR_INTR)}, - {89471194u, 216u, 630u, a_X(n_ERR_INVAL)}, - {2488u, 222u, 647u, a_X(n_ERR_IO)}, - {2957811594u, 225u, 666u, a_X(n_ERR_ISCONN)}, - {89631547u, 232u, 694u, a_X(n_ERR_ISDIR)}, - {93913581u, 238u, 709u, a_X(n_ERR_MFILE)}, - {94129275u, 244u, 729u, a_X(n_ERR_MLINK)}, - {3994289122u, 250u, 744u, a_X(n_ERR_MSGSIZE)}, - {1447334482u, 258u, 761u, a_X(n_ERR_MULTIHOP)}, - {1614709027u, 267u, 780u, a_X(n_ERR_NAMETOOLONG)}, - {457778655u, 279u, 799u, a_X(n_ERR_NETDOWN)}, - {2238032682u, 287u, 815u, a_X(n_ERR_NETRESET)}, - {1901584685u, 296u, 851u, a_X(n_ERR_NETUNREACH)}, - {95099502u, 307u, 874u, a_X(n_ERR_NFILE)}, - {3148715213u, 313u, 904u, a_X(n_ERR_NOBUFS)}, - {3148765751u, 320u, 930u, a_X(n_ERR_NODATA)}, - {95417276u, 327u, 948u, a_X(n_ERR_NODEV)}, - {95418660u, 333u, 982u, a_X(n_ERR_NOENT)}, - {3148826242u, 339u, 1008u, a_X(n_ERR_NOEXEC)}, - {95425911u, 346u, 1026u, a_X(n_ERR_NOLCK)}, - {3149061771u, 352u, 1045u, a_X(n_ERR_NOLINK)}, - {95427068u, 359u, 1067u, a_X(n_ERR_NOMEM)}, - {95427524u, 365u, 1090u, a_X(n_ERR_NOMSG)}, - {1757238308u, 371u, 1117u, a_X(n_ERR_NOPROTOOPT)}, - {95433955u, 382u, 1140u, a_X(n_ERR_NOSPC)}, - {2891938u, 388u, 1164u, a_X(n_ERR_NOSR)}, - {95434102u, 393u, 1188u, a_X(n_ERR_NOSTR)}, - {95434268u, 399u, 1208u, a_X(n_ERR_NOSYS)}, - {849096351u, 405u, 1233u, a_X(n_ERR_NOTCONN)}, - {3149343664u, 413u, 1257u, a_X(n_ERR_NOTDIR)}, - {2252678240u, 420u, 1273u, a_X(n_ERR_NOTEMPTY)}, - {1701688472u, 429u, 1293u, a_X(n_ERR_NOTOBACCO)}, - {849670977u, 439u, 1318u, a_X(n_ERR_NOTSOCK)}, - {3149360393u, 447u, 1349u, a_X(n_ERR_NOTSUP)}, - {95435198u, 454u, 1373u, a_X(n_ERR_NOTTY)}, - {2901406u, 460u, 1404u, a_X(n_ERR_NXIO)}, - {4187911192u, 465u, 1426u, a_X(n_ERR_OPNOTSUPP)}, - {1799919444u, 475u, 1450u, a_X(n_ERR_OVERFLOW)}, - {2952884u, 484u, 1492u, a_X(n_ERR_PERM)}, - {2957166u, 489u, 1516u, a_X(n_ERR_PIPE)}, - {97909396u, 494u, 1528u, a_X(n_ERR_PROTO)}, - {885215854u, 500u, 1543u, a_X(n_ERR_PROTONOSUPPORT)}, - {2666051990u, 515u, 1566u, a_X(n_ERR_PROTOTYPE)}, - {99668781u, 525u, 1597u, a_X(n_ERR_RANGE)}, - {3035258u, 531u, 1614u, a_X(n_ERR_ROFS)}, - {101388609u, 536u, 1635u, a_X(n_ERR_SPIPE)}, - {3074352u, 542u, 1648u, a_X(n_ERR_SRCH)}, - {101523513u, 547u, 1664u, a_X(n_ERR_STALE)}, - {3100815u, 553u, 1686u, a_X(n_ERR_TIME)}, - {832152875u, 558u, 1700u, a_X(n_ERR_TIMEDOUT)}, - {3394827470u, 567u, 1720u, a_X(n_ERR_TXTBSY)}, - {1100483414u, 574u, 1735u, a_X(n_ERR_WOULDBLOCK)}, - {3238871u, 585u, 1757u, a_X(n_ERR_XDEV)}, -}; -#undef a_X - -#define a_AUX_ERR_REV_ILL 80u -#define a_AUX_ERR_REV_PRIME 131u -#define a_AUX_ERR_REV_LONGEST 5u -#define a_AUX_ERR_REV_WRAPAROUND 1 -static ui8_t const a_aux_err_revmap[a_AUX_ERR_REV_PRIME] = { - 1u, 41u, 59u, 76u, 60u, 80u, 80u, 80u, 2u, 46u, - 80u, 33u, 17u, 57u, 26u, 36u, 64u, 65u, 62u, 80u, - 43u, 27u, 80u, 80u, 9u, 80u, 80u, 79u, 28u, 80u, - 80u, 80u, 80u, 80u, 4u, 80u, 80u, 31u, 80u, 80u, - 80u, 19u, 80u, 56u, 58u, 73u, 75u, 80u, 80u, 80u, - 49u, 70u, 40u, 80u, 80u, 7u, 80u, 80u, 80u, 80u, - 30u, 80u, 47u, 51u, 24u, 80u, 0u, 77u, 80u, 80u, - 55u, 45u, 37u, 80u, 15u, 22u, 32u, 80u, 53u, 80u, - 80u, 80u, 11u, 39u, 80u, 74u, 34u, 25u, 8u, 80u, - 80u, 5u, 20u, 80u, 6u, 44u, 63u, 80u, 78u, 80u, - 80u, 18u, 42u, 66u, 13u, 80u, 23u, 80u, 35u, 3u, - 14u, 72u, 10u, 52u, 54u, 80u, 50u, 12u, 16u, 48u, - 69u, 71u, 68u, 80u, 38u, 80u, 61u, 21u, 67u, 80u, - 29u -}; +/*@ gen-errors.h, generated by ./make-errors.sh. + *@ See auxlily.c for more */ + +static char const a_aux_err_names[] = { +'N','O','N','E','\0', +'2','B','I','G','\0', +'A','C','C','E','S','\0', +'A','D','D','R','I','N','U','S','E','\0', +'A','D','D','R','N','O','T','A','V','A','I','L','\0', +'A','F','N','O','S','U','P','P','O','R','T','\0', +'A','G','A','I','N','\0', +'A','L','R','E','A','D','Y','\0', +'B','A','D','F','\0', +'B','A','D','M','S','G','\0', +'B','U','S','Y','\0', +'C','A','N','C','E','L','E','D','\0', +'C','H','I','L','D','\0', +'C','O','N','N','A','B','O','R','T','E','D','\0', +'C','O','N','N','R','E','F','U','S','E','D','\0', +'C','O','N','N','R','E','S','E','T','\0', +'D','E','A','D','L','K','\0', +'D','E','S','T','A','D','D','R','R','E','Q','\0', +'D','O','M','\0', +'D','Q','U','O','T','\0', +'E','X','I','S','T','\0', +'F','A','U','L','T','\0', +'F','B','I','G','\0', +'H','O','S','T','U','N','R','E','A','C','H','\0', +'I','D','R','M','\0', +'I','L','S','E','Q','\0', +'I','N','P','R','O','G','R','E','S','S','\0', +'I','N','T','R','\0', +'I','N','V','A','L','\0', +'I','O','\0', +'I','S','C','O','N','N','\0', +'I','S','D','I','R','\0', +'M','F','I','L','E','\0', +'M','L','I','N','K','\0', +'M','S','G','S','I','Z','E','\0', +'M','U','L','T','I','H','O','P','\0', +'N','A','M','E','T','O','O','L','O','N','G','\0', +'N','E','T','D','O','W','N','\0', +'N','E','T','R','E','S','E','T','\0', +'N','E','T','U','N','R','E','A','C','H','\0', +'N','F','I','L','E','\0', +'N','O','B','U','F','S','\0', +'N','O','D','A','T','A','\0', +'N','O','D','E','V','\0', +'N','O','E','N','T','\0', +'N','O','E','X','E','C','\0', +'N','O','L','C','K','\0', +'N','O','L','I','N','K','\0', +'N','O','M','E','M','\0', +'N','O','M','S','G','\0', +'N','O','P','R','O','T','O','O','P','T','\0', +'N','O','S','P','C','\0', +'N','O','S','R','\0', +'N','O','S','T','R','\0', +'N','O','S','Y','S','\0', +'N','O','T','C','O','N','N','\0', +'N','O','T','D','I','R','\0', +'N','O','T','E','M','P','T','Y','\0', +'N','O','T','O','B','A','C','C','O','\0', +'N','O','T','S','O','C','K','\0', +'N','O','T','S','U','P','\0', +'N','O','T','T','Y','\0', +'N','X','I','O','\0', +'O','P','N','O','T','S','U','P','P','\0', +'O','V','E','R','F','L','O','W','\0', +'P','E','R','M','\0', +'P','I','P','E','\0', +'P','R','O','T','O','\0', +'P','R','O','T','O','N','O','S','U','P','P','O','R','T','\0', +'P','R','O','T','O','T','Y','P','E','\0', +'R','A','N','G','E','\0', +'R','O','F','S','\0', +'S','P','I','P','E','\0', +'S','R','C','H','\0', +'S','T','A','L','E','\0', +'T','I','M','E','\0', +'T','I','M','E','D','O','U','T','\0', +'T','X','T','B','S','Y','\0', +'W','O','U','L','D','B','L','O','C','K','\0', +'X','D','E','V','\0', +}; + +#undef a_X +#define a_X(X) +static char const a_aux_err_docs[] = { +'N','o',' ','e','r','r','o','r','\0', +'A','r','g','u','m','e','n','t',' ','l','i','s','t',' ','t','o','o',' ','l','o','n','g','\0', +'P','e','r','m','i','s','s','i','o','n',' ','d','e','n','i','e','d','\0', +'A','d','d','r','e','s','s',' ','a','l','r','e','a','d','y',' ','i','n',' ','u','s','e','\0', +'C','a','n','n','o','t',' ','a','s','s','i','g','n',' ','r','e','q','u','e','s','t','e','d',' ','a','d','d','r','e','s','s','\0', +'A','d','d','r','e','s','s',' ','f','a','m','i','l','y',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',' ','b','y',' ','p','r','o','t','o','c','o','l',' ','f','a','m','i','l','y','\0', +'R','e','s','o','u','r','c','e',' ','t','e','m','p','o','r','a','r','i','l','y',' ','u','n','a','v','a','i','l','a','b','l','e','\0', +'O','p','e','r','a','t','i','o','n',' ','a','l','r','e','a','d','y',' ','i','n',' ','p','r','o','g','r','e','s','s','\0', +'B','a','d',' ','f','i','l','e',' ','d','e','s','c','r','i','p','t','o','r','\0', +'B','a','d',' ','m','e','s','s','a','g','e','\0', +'D','e','v','i','c','e',' ','b','u','s','y','\0', +'O','p','e','r','a','t','i','o','n',' ','c','a','n','c','e','l','e','d','\0', +'N','o',' ','c','h','i','l','d',' ','p','r','o','c','e','s','s','e','s','\0', +'S','o','f','t','w','a','r','e',' ','c','a','u','s','e','d',' ','c','o','n','n','e','c','t','i','o','n',' ','a','b','o','r','t','\0', +'C','o','n','n','e','c','t','i','o','n',' ','r','e','f','u','s','e','d','\0', +'C','o','n','n','e','c','t','i','o','n',' ','r','e','s','e','t',' ','b','y',' ','p','e','e','r','\0', +'R','e','s','o','u','r','c','e',' ','d','e','a','d','l','o','c','k',' ','a','v','o','i','d','e','d','\0', +'D','e','s','t','i','n','a','t','i','o','n',' ','a','d','d','r','e','s','s',' ','r','e','q','u','i','r','e','d','\0', +'N','u','m','e','r','i','c','a','l',' ','a','r','g','u','m','e','n','t',' ','o','u','t',' ','o','f',' ','d','o','m','a','i','n','\0', +'D','i','s','c',' ','q','u','o','t','a',' ','e','x','c','e','e','d','e','d','\0', +'F','i','l','e',' ','e','x','i','s','t','s','\0', +'B','a','d',' ','a','d','d','r','e','s','s','\0', +'F','i','l','e',' ','t','o','o',' ','l','a','r','g','e','\0', +'N','o',' ','r','o','u','t','e',' ','t','o',' ','h','o','s','t','\0', +'I','d','e','n','t','i','f','i','e','r',' ','r','e','m','o','v','e','d','\0', +'I','l','l','e','g','a','l',' ','b','y','t','e',' ','s','e','q','u','e','n','c','e','\0', +'O','p','e','r','a','t','i','o','n',' ','n','o','w',' ','i','n',' ','p','r','o','g','r','e','s','s','\0', +'I','n','t','e','r','r','u','p','t','e','d',' ','s','y','s','t','e','m',' ','c','a','l','l','\0', +'I','n','v','a','l','i','d',' ','a','r','g','u','m','e','n','t','\0', +'I','n','p','u','t','/','o','u','t','p','u','t',' ','e','r','r','o','r','\0', +'S','o','c','k','e','t',' ','i','s',' ','a','l','r','e','a','d','y',' ','c','o','n','n','e','c','t','e','d','\0', +'I','s',' ','a',' ','d','i','r','e','c','t','o','r','y','\0', +'T','o','o',' ','m','a','n','y',' ','o','p','e','n',' ','f','i','l','e','s','\0', +'T','o','o',' ','m','a','n','y',' ','l','i','n','k','s','\0', +'M','e','s','s','a','g','e',' ','t','o','o',' ','l','o','n','g','\0', +'M','u','l','t','i','h','o','p',' ','a','t','t','e','m','p','t','e','d','\0', +'F','i','l','e',' ','n','a','m','e',' ','t','o','o',' ','l','o','n','g','\0', +'N','e','t','w','o','r','k',' ','i','s',' ','d','o','w','n','\0', +'N','e','t','w','o','r','k',' ','d','r','o','p','p','e','d',' ','c','o','n','n','e','c','t','i','o','n',' ','o','n',' ','r','e','s','e','t','\0', +'N','e','t','w','o','r','k',' ','i','s',' ','u','n','r','e','a','c','h','a','b','l','e','\0', +'T','o','o',' ','m','a','n','y',' ','o','p','e','n',' ','f','i','l','e','s',' ','i','n',' ','s','y','s','t','e','m','\0', +'N','o',' ','b','u','f','f','e','r',' ','s','p','a','c','e',' ','a','v','a','i','l','a','b','l','e','\0', +'N','o',' ','d','a','t','a',' ','a','v','a','i','l','a','b','l','e','\0', +'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',' ','b','y',' ','d','e','v','i','c','e','\0', +'N','o',' ','s','u','c','h',' ','f','i','l','e',' ','o','r',' ','d','i','r','e','c','t','o','r','y','\0', +'E','x','e','c',' ','f','o','r','m','a','t',' ','e','r','r','o','r','\0', +'N','o',' ','l','o','c','k','s',' ','a','v','a','i','l','a','b','l','e','\0', +'L','i','n','k',' ','h','a','s',' ','b','e','e','n',' ','s','e','v','e','r','e','d','\0', +'C','a','n','n','o','t',' ','a','l','l','o','c','a','t','e',' ','m','e','m','o','r','y','\0', +'N','o',' ','m','e','s','s','a','g','e',' ','o','f',' ','d','e','s','i','r','e','d',' ','t','y','p','e','\0', +'P','r','o','t','o','c','o','l',' ','n','o','t',' ','a','v','a','i','l','a','b','l','e','\0', +'N','o',' ','s','p','a','c','e',' ','l','e','f','t',' ','o','n',' ','d','e','v','i','c','e','\0', +'O','u','t',' ','o','f',' ','s','t','r','e','a','m','s',' ','r','e','s','o','u','r','c','e','\0', +'D','e','v','i','c','e',' ','n','o','t',' ','a',' ','s','t','r','e','a','m','\0', +'F','u','n','c','t','i','o','n',' ','n','o','t',' ','i','m','p','l','e','m','e','n','t','e','d','\0', +'S','o','c','k','e','t',' ','i','s',' ','n','o','t',' ','c','o','n','n','e','c','t','e','d','\0', +'N','o','t',' ','a',' ','d','i','r','e','c','t','o','r','y','\0', +'D','i','r','e','c','t','o','r','y',' ','n','o','t',' ','e','m','p','t','y','\0', +'S','n','o','r','k','e','l','i','n','g',' ','o','n',' ','e','m','p','t','y',' ','p','i','p','e','\0', +'S','o','c','k','e','t',' ','o','p','e','r','a','t','i','o','n',' ','o','n',' ','n','o','n','-','s','o','c','k','e','t','\0', +'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','\0', +'I','n','a','p','p','r','o','p','r','i','a','t','e',' ','i','o','c','t','l',' ','f','o','r',' ','d','e','v','i','c','e','\0', +'D','e','v','i','c','e',' ','n','o','t',' ','c','o','n','f','i','g','u','r','e','d','\0', +'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','\0', +'V','a','l','u','e',' ','t','o','o',' ','l','a','r','g','e',' ','t','o',' ','b','e',' ','s','t','o','r','e','d',' ','i','n',' ','d','a','t','a',' ','t','y','p','e','\0', +'O','p','e','r','a','t','i','o','n',' ','n','o','t',' ','p','e','r','m','i','t','t','e','d','\0', +'B','r','o','k','e','n',' ','p','i','p','e','\0', +'P','r','o','t','o','c','o','l',' ','e','r','r','o','r','\0', +'P','r','o','t','o','c','o','l',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','\0', +'P','r','o','t','o','c','o','l',' ','w','r','o','n','g',' ','t','y','p','e',' ','f','o','r',' ','s','o','c','k','e','t','\0', +'R','e','s','u','l','t',' ','t','o','o',' ','l','a','r','g','e','\0', +'R','e','a','d','-','o','n','l','y',' ','f','i','l','e','s','y','s','t','e','m','\0', +'I','n','v','a','l','i','d',' ','s','e','e','k','\0', +'N','o',' ','s','u','c','h',' ','p','r','o','c','e','s','s','\0', +'S','t','a','l','e',' ','N','F','S',' ','f','i','l','e',' ','h','a','n','d','l','e','\0', +'T','i','m','e','r',' ','e','x','p','i','r','e','d','\0', +'O','p','e','r','a','t','i','o','n',' ','t','i','m','e','d',' ','o','u','t','\0', +'T','e','x','t',' ','f','i','l','e',' ','b','u','s','y','\0', +'O','p','e','r','a','t','i','o','n',' ','w','o','u','l','d',' ','b','l','o','c','k','\0', +'C','r','o','s','s','-','d','e','v','i','c','e',' ','l','i','n','k','\0', +}; +#undef a_X + +#undef a_X +#ifndef __CREATE_ERRORS_SH +# define a_X(X) X +#else +# define a_X(X) 0 +#endif +static struct a_aux_err_map const a_aux_err_map[] = { +{2891760u, 0u, 0u, a_X(n_ERR_NONE)}, +{1871204u, 5u, 9u, a_X(n_ERR_2BIG)}, +{79567967u, 10u, 32u, a_X(n_ERR_ACCES)}, +{2351536831u, 16u, 50u, a_X(n_ERR_ADDRINUSE)}, +{3273067129u, 26u, 73u, a_X(n_ERR_ADDRNOTAVAIL)}, +{518383073u, 39u, 105u, a_X(n_ERR_AFNOSUPPORT)}, +{79709664u, 51u, 153u, a_X(n_ERR_AGAIN)}, +{1120160226u, 57u, 186u, a_X(n_ERR_ALREADY)}, +{2444941u, 65u, 216u, a_X(n_ERR_BADF)}, +{2662551182u, 70u, 236u, a_X(n_ERR_BADMSG)}, +{2467235u, 77u, 248u, a_X(n_ERR_BUSY)}, +{463081807u, 82u, 260u, a_X(n_ERR_CANCELED)}, +{82126244u, 91u, 279u, a_X(n_ERR_CHILD)}, +{3418447855u, 97u, 298u, a_X(n_ERR_CONNABORTED)}, +{4005406460u, 109u, 331u, a_X(n_ERR_CONNREFUSED)}, +{2500215377u, 121u, 350u, a_X(n_ERR_CONNRESET)}, +{2745447813u, 131u, 375u, a_X(n_ERR_DEADLK)}, +{4237350771u, 138u, 401u, a_X(n_ERR_DESTADDRREQ)}, +{76736u, 150u, 430u, a_X(n_ERR_DOM)}, +{83648781u, 154u, 463u, a_X(n_ERR_DQUOT)}, +{85073325u, 160u, 483u, a_X(n_ERR_EXIST)}, +{85445532u, 166u, 495u, a_X(n_ERR_FAULT)}, +{2589944u, 172u, 507u, a_X(n_ERR_FBIG)}, +{1447271076u, 177u, 522u, a_X(n_ERR_HOSTUNREACH)}, +{2700236u, 189u, 539u, a_X(n_ERR_IDRM)}, +{89396190u, 194u, 558u, a_X(n_ERR_ILSEQ)}, +{3743566316u, 200u, 580u, a_X(n_ERR_INPROGRESS)}, +{2711197u, 211u, 606u, a_X(n_ERR_INTR)}, +{89471194u, 216u, 630u, a_X(n_ERR_INVAL)}, +{2488u, 222u, 647u, a_X(n_ERR_IO)}, +{2957811594u, 225u, 666u, a_X(n_ERR_ISCONN)}, +{89631547u, 232u, 694u, a_X(n_ERR_ISDIR)}, +{93913581u, 238u, 709u, a_X(n_ERR_MFILE)}, +{94129275u, 244u, 729u, a_X(n_ERR_MLINK)}, +{3994289122u, 250u, 744u, a_X(n_ERR_MSGSIZE)}, +{1447334482u, 258u, 761u, a_X(n_ERR_MULTIHOP)}, +{1614709027u, 267u, 780u, a_X(n_ERR_NAMETOOLONG)}, +{457778655u, 279u, 799u, a_X(n_ERR_NETDOWN)}, +{2238032682u, 287u, 815u, a_X(n_ERR_NETRESET)}, +{1901584685u, 296u, 851u, a_X(n_ERR_NETUNREACH)}, +{95099502u, 307u, 874u, a_X(n_ERR_NFILE)}, +{3148715213u, 313u, 904u, a_X(n_ERR_NOBUFS)}, +{3148765751u, 320u, 930u, a_X(n_ERR_NODATA)}, +{95417276u, 327u, 948u, a_X(n_ERR_NODEV)}, +{95418660u, 333u, 982u, a_X(n_ERR_NOENT)}, +{3148826242u, 339u, 1008u, a_X(n_ERR_NOEXEC)}, +{95425911u, 346u, 1026u, a_X(n_ERR_NOLCK)}, +{3149061771u, 352u, 1045u, a_X(n_ERR_NOLINK)}, +{95427068u, 359u, 1067u, a_X(n_ERR_NOMEM)}, +{95427524u, 365u, 1090u, a_X(n_ERR_NOMSG)}, +{1757238308u, 371u, 1117u, a_X(n_ERR_NOPROTOOPT)}, +{95433955u, 382u, 1140u, a_X(n_ERR_NOSPC)}, +{2891938u, 388u, 1164u, a_X(n_ERR_NOSR)}, +{95434102u, 393u, 1188u, a_X(n_ERR_NOSTR)}, +{95434268u, 399u, 1208u, a_X(n_ERR_NOSYS)}, +{849096351u, 405u, 1233u, a_X(n_ERR_NOTCONN)}, +{3149343664u, 413u, 1257u, a_X(n_ERR_NOTDIR)}, +{2252678240u, 420u, 1273u, a_X(n_ERR_NOTEMPTY)}, +{1701688472u, 429u, 1293u, a_X(n_ERR_NOTOBACCO)}, +{849670977u, 439u, 1318u, a_X(n_ERR_NOTSOCK)}, +{3149360393u, 447u, 1349u, a_X(n_ERR_NOTSUP)}, +{95435198u, 454u, 1373u, a_X(n_ERR_NOTTY)}, +{2901406u, 460u, 1404u, a_X(n_ERR_NXIO)}, +{4187911192u, 465u, 1426u, a_X(n_ERR_OPNOTSUPP)}, +{1799919444u, 475u, 1450u, a_X(n_ERR_OVERFLOW)}, +{2952884u, 484u, 1492u, a_X(n_ERR_PERM)}, +{2957166u, 489u, 1516u, a_X(n_ERR_PIPE)}, +{97909396u, 494u, 1528u, a_X(n_ERR_PROTO)}, +{885215854u, 500u, 1543u, a_X(n_ERR_PROTONOSUPPORT)}, +{2666051990u, 515u, 1566u, a_X(n_ERR_PROTOTYPE)}, +{99668781u, 525u, 1597u, a_X(n_ERR_RANGE)}, +{3035258u, 531u, 1614u, a_X(n_ERR_ROFS)}, +{101388609u, 536u, 1635u, a_X(n_ERR_SPIPE)}, +{3074352u, 542u, 1648u, a_X(n_ERR_SRCH)}, +{101523513u, 547u, 1664u, a_X(n_ERR_STALE)}, +{3100815u, 553u, 1686u, a_X(n_ERR_TIME)}, +{832152875u, 558u, 1700u, a_X(n_ERR_TIMEDOUT)}, +{3394827470u, 567u, 1720u, a_X(n_ERR_TXTBSY)}, +{1100483414u, 574u, 1735u, a_X(n_ERR_WOULDBLOCK)}, +{3238871u, 585u, 1757u, a_X(n_ERR_XDEV)}, +}; +#undef a_X + +#define a_AUX_ERR_REV_ILL 80u +#define a_AUX_ERR_REV_PRIME 131u +#define a_AUX_ERR_REV_LONGEST 5u +#define a_AUX_ERR_REV_WRAPAROUND 1 +static ui8_t const a_aux_err_revmap[a_AUX_ERR_REV_PRIME] = { +1u,41u,59u,76u,60u,80u,80u,80u,2u,46u, +80u,33u,17u,57u,26u,36u,64u,65u,62u,80u, +43u,27u,80u,80u,9u,80u,80u,79u,28u,80u, +80u,80u,80u,80u,4u,80u,80u,31u,80u,80u, +80u,19u,80u,56u,58u,73u,75u,80u,80u,80u, +49u,70u,40u,80u,80u,7u,80u,80u,80u,80u, +30u,80u,47u,51u,24u,80u,0u,77u,80u,80u, +55u,45u,37u,80u,15u,22u,32u,80u,53u,80u, +80u,80u,11u,39u,80u,74u,34u,25u,8u,80u, +80u,5u,20u,80u,6u,44u,63u,80u,78u,80u, +80u,18u,42u,66u,13u,80u,23u,80u,35u,3u, +14u,72u,10u,52u,54u,80u,50u,12u,16u,48u, +69u,71u,68u,80u,38u,80u,61u,21u,67u,80u, +29u +}; diff --git a/gen-okeys.h b/gen-okeys.h dissimilarity index 95% index 4d52d8f5..08b46712 100644 --- a/gen-okeys.h +++ b/gen-okeys.h @@ -1,1096 +1,810 @@ -/*@ gen-okeys.h, generated by ./make-okey-map.pl. - *@ See accmacvar.c for more */ - -static char const a_amv_var_names[] = { - /* 0. [0]+15 --special-param, a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - '-','-','s','p','e','c','i','a','l','-','p','a','r','a','m','\0', - /* 1. [16]+1 ?, a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - '?','\0', - /* 2. [18]+1 !, a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - '!','\0', - /* 3. [20]+7 account, a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'a','c','c','o','u','n','t','\0', - /* 4. [28]+19 add-file-recipients, a_AMV_VF_BOOL */ - 'a','d','d','-','f','i','l','e','-','r','e','c','i','p','i','e','n','t','s','\0', - /* 5. [48]+18 agent-shell-lookup */ - 'a','g','e','n','t','-','s','h','e','l','l','-','l','o','o','k','u','p','\0', - /* 6. [67]+6 allnet, a_AMV_VF_BOOL */ - 'a','l','l','n','e','t','\0', - /* 7. [74]+6 append, a_AMV_VF_BOOL */ - 'a','p','p','e','n','d','\0', - /* 8. [81]+3 ask, a_AMV_VF_BOOL */ - 'a','s','k','\0', - /* 9. [85]+8 askatend, a_AMV_VF_BOOL */ - 'a','s','k','a','t','e','n','d','\0', - /* 10. [94]+9 askattach, a_AMV_VF_BOOL */ - 'a','s','k','a','t','t','a','c','h','\0', - /* 11. [104]+6 askbcc, a_AMV_VF_BOOL */ - 'a','s','k','b','c','c','\0', - /* 12. [111]+5 askcc, a_AMV_VF_BOOL */ - 'a','s','k','c','c','\0', - /* 13. [117]+7 asksign, a_AMV_VF_BOOL */ - 'a','s','k','s','i','g','n','\0', - /* 14. [125]+6 asksub, a_AMV_VF_BOOL|a_AMV_VF_I3VAL */ - 'a','s','k','s','u','b','\0', - /* 15. [132]+8 attrlist */ - 'a','t','t','r','l','i','s','t','\0', - /* 16. [141]+7 autobcc */ - 'a','u','t','o','b','c','c','\0', - /* 17. [149]+6 autocc */ - 'a','u','t','o','c','c','\0', - /* 18. [156]+12 autocollapse, a_AMV_VF_BOOL */ - 'a','u','t','o','c','o','l','l','a','p','s','e','\0', - /* 19. [169]+9 autoprint, a_AMV_VF_BOOL */ - 'a','u','t','o','p','r','i','n','t','\0', - /* 20. [179]+10 autothread, a_AMV_VF_BOOL */ - 'a','u','t','o','t','h','r','e','a','d','\0', - /* 21. [190]+8 autosort */ - 'a','u','t','o','s','o','r','t','\0', - /* 22. [199]+4 bang, a_AMV_VF_BOOL */ - 'b','a','n','g','\0', - /* 23. [204]+19 batch-exit-on-error, a_AMV_VF_BOOL */ - 'b','a','t','c','h','-','e','x','i','t','-','o','n','-','e','r','r','o','r','\0', - /* 24. [224]+12 bind-timeout, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM */ - 'b','i','n','d','-','t','i','m','e','o','u','t','\0', - /* 25. [237]+11 bsdannounce, a_AMV_VF_BOOL */ - 'b','s','d','a','n','n','o','u','n','c','e','\0', - /* 26. [249]+9 bsdcompat, a_AMV_VF_BOOL */ - 'b','s','d','c','o','m','p','a','t','\0', - /* 27. [259]+8 bsdflags, a_AMV_VF_BOOL */ - 'b','s','d','f','l','a','g','s','\0', - /* 28. [268]+11 bsdheadline, a_AMV_VF_BOOL */ - 'b','s','d','h','e','a','d','l','i','n','e','\0', - /* 29. [280]+7 bsdmsgs, a_AMV_VF_BOOL */ - 'b','s','d','m','s','g','s','\0', - /* 30. [288]+8 bsdorder, a_AMV_VF_BOOL */ - 'b','s','d','o','r','d','e','r','\0', - /* 31. [297]+8 build-os, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'b','u','i','l','d','-','o','s','\0', - /* 32. [306]+11 build-osenv, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'b','u','i','l','d','-','o','s','e','n','v','\0', - /* 33. [318]+7 COLUMNS, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV */ - 'C','O','L','U','M','N','S','\0', - /* 34. [326]+12 charset-7bit, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER */ - 'c','h','a','r','s','e','t','-','7','b','i','t','\0', - /* 35. [339]+12 charset-8bit, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER */ - 'c','h','a','r','s','e','t','-','8','b','i','t','\0', - /* 36. [352]+20 charset-unknown-8bit, a_AMV_VF_LOWER */ - 'c','h','a','r','s','e','t','-','u','n','k','n','o','w','n','-','8','b','i','t','\0', - /* 37. [373]+3 cmd */ - 'c','m','d','\0', - /* 38. [377]+14 colour-disable, a_AMV_VF_BOOL */ - 'c','o','l','o','u','r','-','d','i','s','a','b','l','e','\0', - /* 39. [392]+12 colour-pager, a_AMV_VF_BOOL */ - 'c','o','l','o','u','r','-','p','a','g','e','r','\0', - /* 40. [405]+12 contact-mail, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'c','o','n','t','a','c','t','-','m','a','i','l','\0', - /* 41. [418]+11 contact-web, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'c','o','n','t','a','c','t','-','w','e','b','\0', - /* 42. [430]+3 crt, a_AMV_VF_POSNUM */ - 'c','r','t','\0', - /* 43. [434]+9 customhdr, a_AMV_VF_NOCNTRLS */ - 'c','u','s','t','o','m','h','d','r','\0', - /* 44. [444]+4 DEAD, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'D','E','A','D','\0', - /* 45. [449]+9 datefield, a_AMV_VF_I3VAL */ - 'd','a','t','e','f','i','e','l','d','\0', - /* 46. [459]+23 datefield-markout-older, a_AMV_VF_I3VAL */ - 'd','a','t','e','f','i','e','l','d','-','m','a','r','k','o','u','t','-','o','l','d','e','r','\0', - /* 47. [483]+5 debug, a_AMV_VF_BOOL|a_AMV_VF_VIP */ - 'd','e','b','u','g','\0', - /* 48. [489]+29 disposition-notification-send, a_AMV_VF_BOOL */ - 'd','i','s','p','o','s','i','t','i','o','n','-','n','o','t','i','f','i','c','a','t','i','o','n','-','s','e','n','d','\0', - /* 49. [519]+3 dot, a_AMV_VF_BOOL */ - 'd','o','t','\0', - /* 50. [523]+20 dotlock-ignore-error, a_AMV_VF_BOOL */ - 'd','o','t','l','o','c','k','-','i','g','n','o','r','e','-','e','r','r','o','r','\0', - /* 51. [544]+6 EDITOR, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'E','D','I','T','O','R','\0', - /* 52. [551]+9 editalong, a_AMV_VF_BOOL */ - 'e','d','i','t','a','l','o','n','g','\0', - /* 53. [561]+11 editheaders, a_AMV_VF_BOOL */ - 'e','d','i','t','h','e','a','d','e','r','s','\0', - /* 54. [573]+10 emptystart, a_AMV_VF_BOOL */ - 'e','m','p','t','y','s','t','a','r','t','\0', - /* 55. [584]+8 encoding */ - 'e','n','c','o','d','i','n','g','\0', - /* 56. [593]+7 errexit, a_AMV_VF_BOOL */ - 'e','r','r','e','x','i','t','\0', - /* 57. [601]+6 escape, a_AMV_VF_DEFVAL */ - 'e','s','c','a','p','e','\0', - /* 58. [608]+10 expandaddr */ - 'e','x','p','a','n','d','a','d','d','r','\0', - /* 59. [619]+10 expandargv */ - 'e','x','p','a','n','d','a','r','g','v','\0', - /* 60. [630]+8 features, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'f','e','a','t','u','r','e','s','\0', - /* 61. [639]+5 flipr, a_AMV_VF_BOOL */ - 'f','l','i','p','r','\0', - /* 62. [645]+6 folder, a_AMV_VF_VIP */ - 'f','o','l','d','e','r','\0', - /* 63. [652]+15 folder-resolved, a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'f','o','l','d','e','r','-','r','e','s','o','l','v','e','d','\0', - /* 64. [668]+11 folder-hook */ - 'f','o','l','d','e','r','-','h','o','o','k','\0', - /* 65. [680]+11 followup-to, a_AMV_VF_BOOL */ - 'f','o','l','l','o','w','u','p','-','t','o','\0', - /* 66. [692]+18 followup-to-honour */ - 'f','o','l','l','o','w','u','p','-','t','o','-','h','o','n','o','u','r','\0', - /* 67. [711]+21 forward-as-attachment, a_AMV_VF_BOOL */ - 'f','o','r','w','a','r','d','-','a','s','-','a','t','t','a','c','h','m','e','n','t','\0', - /* 68. [733]+19 forward-inject-head */ - 'f','o','r','w','a','r','d','-','i','n','j','e','c','t','-','h','e','a','d','\0', - /* 69. [753]+4 from */ - 'f','r','o','m','\0', - /* 70. [758]+9 fullnames, a_AMV_VF_BOOL */ - 'f','u','l','l','n','a','m','e','s','\0', - /* 71. [768]+10 fwdheading */ - 'f','w','d','h','e','a','d','i','n','g','\0', - /* 72. [779]+4 HOME, a_AMV_VF_IMPORT|a_AMV_VF_NODEL|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV */ - 'H','O','M','E','\0', - /* 73. [784]+6 header, a_AMV_VF_BOOL|a_AMV_VF_I3VAL */ - 'h','e','a','d','e','r','\0', - /* 74. [791]+8 headline */ - 'h','e','a','d','l','i','n','e','\0', - /* 75. [800]+13 headline-bidi */ - 'h','e','a','d','l','i','n','e','-','b','i','d','i','\0', - /* 76. [814]+12 history-file */ - 'h','i','s','t','o','r','y','-','f','i','l','e','\0', - /* 77. [827]+13 history-gabby, a_AMV_VF_BOOL */ - 'h','i','s','t','o','r','y','-','g','a','b','b','y','\0', - /* 78. [841]+21 history-gabby-persist, a_AMV_VF_BOOL */ - 'h','i','s','t','o','r','y','-','g','a','b','b','y','-','p','e','r','s','i','s','t','\0', - /* 79. [863]+12 history-size, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM */ - 'h','i','s','t','o','r','y','-','s','i','z','e','\0', - /* 80. [876]+4 hold, a_AMV_VF_BOOL */ - 'h','o','l','d','\0', - /* 81. [881]+8 hostname */ - 'h','o','s','t','n','a','m','e','\0', - /* 82. [890]+12 idna-disable, a_AMV_VF_BOOL */ - 'i','d','n','a','-','d','i','s','a','b','l','e','\0', - /* 83. [903]+3 ifs, a_AMV_VF_DEFVAL|a_AMV_VF_VIP */ - 'i','f','s','\0', - /* 84. [907]+6 ifs-ws, a_AMV_VF_I3VAL|a_AMV_VF_RDONLY|a_AMV_VF_NODEL|a_AMV_VF_VIP */ - 'i','f','s','-','w','s','\0', - /* 85. [914]+6 ignore, a_AMV_VF_BOOL */ - 'i','g','n','o','r','e','\0', - /* 86. [921]+9 ignoreeof, a_AMV_VF_BOOL */ - 'i','g','n','o','r','e','e','o','f','\0', - /* 87. [931]+5 inbox */ - 'i','n','b','o','x','\0', - /* 88. [937]+12 indentprefix */ - 'i','n','d','e','n','t','p','r','e','f','i','x','\0', - /* 89. [950]+4 keep, a_AMV_VF_BOOL */ - 'k','e','e','p','\0', - /* 90. [955]+19 keep-content-length, a_AMV_VF_BOOL */ - 'k','e','e','p','-','c','o','n','t','e','n','t','-','l','e','n','g','t','h','\0', - /* 91. [975]+8 keepsave, a_AMV_VF_BOOL */ - 'k','e','e','p','s','a','v','e','\0', - /* 92. [984]+4 LANG, a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV */ - 'L','A','N','G','\0', - /* 93. [989]+6 LC_ALL, a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV */ - 'L','C','_','A','L','L','\0', - /* 94. [996]+8 LC_CTYPE, a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV */ - 'L','C','_','C','T','Y','P','E','\0', - /* 95. [1005]+5 LINES, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV */ - 'L','I','N','E','S','\0', - /* 96. [1011]+6 LISTER, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'L','I','S','T','E','R','\0', - /* 97. [1018]+7 LOGNAME, a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_ENV */ - 'L','O','G','N','A','M','E','\0', - /* 98. [1026]+19 line-editor-disable, a_AMV_VF_BOOL */ - 'l','i','n','e','-','e','d','i','t','o','r','-','d','i','s','a','b','l','e','\0', - /* 99. [1046]+23 line-editor-no-defaults, a_AMV_VF_BOOL */ - 'l','i','n','e','-','e','d','i','t','o','r','-','n','o','-','d','e','f','a','u','l','t','s','\0', - /* 100. [1070]+10 log-prefix, a_AMV_VF_I3VAL|a_AMV_VF_NODEL */ - 'l','o','g','-','p','r','e','f','i','x','\0', - /* 101. [1081]+4 MAIL, a_AMV_VF_ENV */ - 'M','A','I','L','\0', - /* 102. [1086]+6 MAILRC, a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'M','A','I','L','R','C','\0', - /* 103. [1093]+18 MAILX_NO_SYSTEM_RC, a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_ENV */ - 'M','A','I','L','X','_','N','O','_','S','Y','S','T','E','M','_','R','C','\0', - /* 104. [1112]+4 MBOX, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'M','B','O','X','\0', - /* 105. [1117]+16 mailbox-resolved, a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'm','a','i','l','b','o','x','-','r','e','s','o','l','v','e','d','\0', - /* 106. [1134]+15 mailbox-display, a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'm','a','i','l','b','o','x','-','d','i','s','p','l','a','y','\0', - /* 107. [1150]+14 mailx-extra-rc */ - 'm','a','i','l','x','-','e','x','t','r','a','-','r','c','\0', - /* 108. [1165]+12 markanswered, a_AMV_VF_BOOL */ - 'm','a','r','k','a','n','s','w','e','r','e','d','\0', - /* 109. [1178]+12 mbox-rfc4155, a_AMV_VF_BOOL */ - 'm','b','o','x','-','r','f','c','4','1','5','5','\0', - /* 110. [1191]+8 memdebug, a_AMV_VF_BOOL|a_AMV_VF_VIP */ - 'm','e','m','d','e','b','u','g','\0', - /* 111. [1200]+18 message-id-disable, a_AMV_VF_BOOL */ - 'm','e','s','s','a','g','e','-','i','d','-','d','i','s','a','b','l','e','\0', - /* 112. [1219]+19 message-inject-head */ - 'm','e','s','s','a','g','e','-','i','n','j','e','c','t','-','h','e','a','d','\0', - /* 113. [1239]+19 message-inject-tail */ - 'm','e','s','s','a','g','e','-','i','n','j','e','c','t','-','t','a','i','l','\0', - /* 114. [1259]+5 metoo, a_AMV_VF_BOOL */ - 'm','e','t','o','o','\0', - /* 115. [1265]+24 mime-allow-text-controls, a_AMV_VF_BOOL */ - 'm','i','m','e','-','a','l','l','o','w','-','t','e','x','t','-','c','o','n','t','r','o','l','s','\0', - /* 116. [1290]+28 mime-alternative-favour-rich, a_AMV_VF_BOOL */ - 'm','i','m','e','-','a','l','t','e','r','n','a','t','i','v','e','-','f','a','v','o','u','r','-','r','i','c','h','\0', - /* 117. [1319]+21 mime-counter-evidence, a_AMV_VF_POSNUM */ - 'm','i','m','e','-','c','o','u','n','t','e','r','-','e','v','i','d','e','n','c','e','\0', - /* 118. [1341]+13 mime-encoding */ - 'm','i','m','e','-','e','n','c','o','d','i','n','g','\0', - /* 119. [1355]+22 mimetypes-load-control */ - 'm','i','m','e','t','y','p','e','s','-','l','o','a','d','-','c','o','n','t','r','o','l','\0', - /* 120. [1378]+3 mta, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY */ - 'm','t','a','\0', - /* 121. [1382]+13 mta-arguments */ - 'm','t','a','-','a','r','g','u','m','e','n','t','s','\0', - /* 122. [1396]+24 mta-no-default-arguments, a_AMV_VF_BOOL */ - 'm','t','a','-','n','o','-','d','e','f','a','u','l','t','-','a','r','g','u','m','e','n','t','s','\0', - /* 123. [1421]+9 mta-argv0, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY */ - 'm','t','a','-','a','r','g','v','0','\0', - /* 124. [1431]+13 mailx-command, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','c','o','m','m','a','n','d','\0', - /* 125. [1445]+13 mailx-subject, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','s','u','b','j','e','c','t','\0', - /* 126. [1459]+10 mailx-from, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','f','r','o','m','\0', - /* 127. [1470]+12 mailx-sender, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','s','e','n','d','e','r','\0', - /* 128. [1483]+8 mailx-to, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','t','o','\0', - /* 129. [1492]+8 mailx-cc, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','c','c','\0', - /* 130. [1501]+9 mailx-bcc, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','b','c','c','\0', - /* 131. [1511]+12 mailx-raw-to, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','r','a','w','-','t','o','\0', - /* 132. [1524]+12 mailx-raw-cc, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','r','a','w','-','c','c','\0', - /* 133. [1537]+13 mailx-raw-bcc, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','r','a','w','-','b','c','c','\0', - /* 134. [1551]+15 mailx-orig-from, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','o','r','i','g','-','f','r','o','m','\0', - /* 135. [1567]+13 mailx-orig-to, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','o','r','i','g','-','t','o','\0', - /* 136. [1581]+13 mailx-orig-cc, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','o','r','i','g','-','c','c','\0', - /* 137. [1595]+14 mailx-orig-bcc, a_AMV_VF_RDONLY */ - 'm','a','i','l','x','-','o','r','i','g','-','b','c','c','\0', - /* 138. [1610]+13 NAIL_EXTRA_RC */ - 'N','A','I','L','_','E','X','T','R','A','_','R','C','\0', - /* 139. [1624]+17 NAIL_NO_SYSTEM_RC, a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_ENV */ - 'N','A','I','L','_','N','O','_','S','Y','S','T','E','M','_','R','C','\0', - /* 140. [1642]+9 NAIL_HEAD */ - 'N','A','I','L','_','H','E','A','D','\0', - /* 141. [1652]+13 NAIL_HISTFILE */ - 'N','A','I','L','_','H','I','S','T','F','I','L','E','\0', - /* 142. [1666]+13 NAIL_HISTSIZE, a_AMV_VF_NOTEMPTY|a_AMV_VF_NUM */ - 'N','A','I','L','_','H','I','S','T','S','I','Z','E','\0', - /* 143. [1680]+9 NAIL_TAIL */ - 'N','A','I','L','_','T','A','I','L','\0', - /* 144. [1690]+5 NETRC, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'N','E','T','R','C','\0', - /* 145. [1696]+12 netrc-lookup, a_AMV_VF_BOOL */ - 'n','e','t','r','c','-','l','o','o','k','u','p','\0', - /* 146. [1709]+10 netrc-pipe */ - 'n','e','t','r','c','-','p','i','p','e','\0', - /* 147. [1720]+10 newfolders */ - 'n','e','w','f','o','l','d','e','r','s','\0', - /* 148. [1731]+7 newmail */ - 'n','e','w','m','a','i','l','\0', - /* 149. [1739]+18 on-compose-cleanup, a_AMV_VF_NOTEMPTY */ - 'o','n','-','c','o','m','p','o','s','e','-','c','l','e','a','n','u','p','\0', - /* 150. [1758]+16 on-compose-enter, a_AMV_VF_NOTEMPTY */ - 'o','n','-','c','o','m','p','o','s','e','-','e','n','t','e','r','\0', - /* 151. [1775]+16 on-compose-leave, a_AMV_VF_NOTEMPTY */ - 'o','n','-','c','o','m','p','o','s','e','-','l','e','a','v','e','\0', - /* 152. [1792]+17 on-compose-splice, a_AMV_VF_NOTEMPTY */ - 'o','n','-','c','o','m','p','o','s','e','-','s','p','l','i','c','e','\0', - /* 153. [1810]+23 on-compose-splice-shell, a_AMV_VF_NOTEMPTY */ - 'o','n','-','c','o','m','p','o','s','e','-','s','p','l','i','c','e','-','s','h','e','l','l','\0', - /* 154. [1834]+17 on-resend-cleanup, a_AMV_VF_NOTEMPTY */ - 'o','n','-','r','e','s','e','n','d','-','c','l','e','a','n','u','p','\0', - /* 155. [1852]+15 on-resend-enter, a_AMV_VF_NOTEMPTY */ - 'o','n','-','r','e','s','e','n','d','-','e','n','t','e','r','\0', - /* 156. [1868]+9 outfolder, a_AMV_VF_BOOL */ - 'o','u','t','f','o','l','d','e','r','\0', - /* 157. [1878]+5 PAGER, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'P','A','G','E','R','\0', - /* 158. [1884]+4 PATH, a_AMV_VF_IMPORT|a_AMV_VF_NODEL|a_AMV_VF_ENV */ - 'P','A','T','H','\0', - /* 159. [1889]+15 POSIXLY_CORRECT, a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_VIP|a_AMV_VF_ENV */ - 'P','O','S','I','X','L','Y','_','C','O','R','R','E','C','T','\0', - /* 160. [1905]+4 page, a_AMV_VF_BOOL */ - 'p','a','g','e','\0', - /* 161. [1910]+8 password */ - 'p','a','s','s','w','o','r','d','\0', - /* 162. [1919]+7 piperaw, a_AMV_VF_BOOL */ - 'p','i','p','e','r','a','w','\0', - /* 163. [1927]+9 pop3-auth */ - 'p','o','p','3','-','a','u','t','h','\0', - /* 164. [1937]+14 pop3-bulk-load, a_AMV_VF_BOOL */ - 'p','o','p','3','-','b','u','l','k','-','l','o','a','d','\0', - /* 165. [1952]+14 pop3-keepalive, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM */ - 'p','o','p','3','-','k','e','e','p','a','l','i','v','e','\0', - /* 166. [1967]+12 pop3-no-apop, a_AMV_VF_BOOL */ - 'p','o','p','3','-','n','o','-','a','p','o','p','\0', - /* 167. [1980]+17 pop3-use-starttls, a_AMV_VF_BOOL */ - 'p','o','p','3','-','u','s','e','-','s','t','a','r','t','t','l','s','\0', - /* 168. [1998]+5 posix, a_AMV_VF_BOOL|a_AMV_VF_VIP */ - 'p','o','s','i','x','\0', - /* 169. [2004]+18 print-alternatives, a_AMV_VF_BOOL */ - 'p','r','i','n','t','-','a','l','t','e','r','n','a','t','i','v','e','s','\0', - /* 170. [2023]+6 prompt, a_AMV_VF_I3VAL */ - 'p','r','o','m','p','t','\0', - /* 171. [2030]+7 prompt2, a_AMV_VF_I3VAL */ - 'p','r','o','m','p','t','2','\0', - /* 172. [2038]+5 quiet, a_AMV_VF_BOOL */ - 'q','u','i','e','t','\0', - /* 173. [2044]+5 quote */ - 'q','u','o','t','e','\0', - /* 174. [2050]+19 quote-as-attachment, a_AMV_VF_BOOL */ - 'q','u','o','t','e','-','a','s','-','a','t','t','a','c','h','m','e','n','t','\0', - /* 175. [2070]+10 quote-fold */ - 'q','u','o','t','e','-','f','o','l','d','\0', - /* 176. [2081]+17 r-option-implicit, a_AMV_VF_BOOL */ - 'r','-','o','p','t','i','o','n','-','i','m','p','l','i','c','i','t','\0', - /* 177. [2099]+16 recipients-in-cc, a_AMV_VF_BOOL */ - 'r','e','c','i','p','i','e','n','t','s','-','i','n','-','c','c','\0', - /* 178. [2116]+6 record */ - 'r','e','c','o','r','d','\0', - /* 179. [2123]+12 record-files, a_AMV_VF_BOOL */ - 'r','e','c','o','r','d','-','f','i','l','e','s','\0', - /* 180. [2136]+13 record-resent, a_AMV_VF_BOOL */ - 'r','e','c','o','r','d','-','r','e','s','e','n','t','\0', - /* 181. [2150]+21 reply-in-same-charset, a_AMV_VF_BOOL */ - 'r','e','p','l','y','-','i','n','-','s','a','m','e','-','c','h','a','r','s','e','t','\0', - /* 182. [2172]+13 reply-strings */ - 'r','e','p','l','y','-','s','t','r','i','n','g','s','\0', - /* 183. [2186]+7 replyto */ - 'r','e','p','l','y','t','o','\0', - /* 184. [2194]+15 reply-to-honour */ - 'r','e','p','l','y','-','t','o','-','h','o','n','o','u','r','\0', - /* 185. [2210]+17 rfc822-body-from_, a_AMV_VF_BOOL */ - 'r','f','c','8','2','2','-','b','o','d','y','-','f','r','o','m','_','\0', - /* 186. [2228]+5 SHELL, a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'S','H','E','L','L','\0', - /* 187. [2234]+5 SYSV3, a_AMV_VF_BOOL|a_AMV_VF_ENV */ - 'S','Y','S','V','3','\0', - /* 188. [2240]+4 save, a_AMV_VF_BOOL|a_AMV_VF_I3VAL */ - 's','a','v','e','\0', - /* 189. [2245]+6 screen, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM */ - 's','c','r','e','e','n','\0', - /* 190. [2252]+13 searchheaders, a_AMV_VF_BOOL */ - 's','e','a','r','c','h','h','e','a','d','e','r','s','\0', - /* 191. [2266]+12 sendcharsets, a_AMV_VF_LOWER */ - 's','e','n','d','c','h','a','r','s','e','t','s','\0', - /* 192. [2279]+28 sendcharsets-else-ttycharset, a_AMV_VF_BOOL */ - 's','e','n','d','c','h','a','r','s','e','t','s','-','e','l','s','e','-','t','t','y','c','h','a','r','s','e','t','\0', - /* 193. [2308]+6 sender */ - 's','e','n','d','e','r','\0', - /* 194. [2315]+8 sendmail */ - 's','e','n','d','m','a','i','l','\0', - /* 195. [2324]+18 sendmail-arguments */ - 's','e','n','d','m','a','i','l','-','a','r','g','u','m','e','n','t','s','\0', - /* 196. [2343]+29 sendmail-no-default-arguments, a_AMV_VF_BOOL */ - 's','e','n','d','m','a','i','l','-','n','o','-','d','e','f','a','u','l','t','-','a','r','g','u','m','e','n','t','s','\0', - /* 197. [2373]+17 sendmail-progname */ - 's','e','n','d','m','a','i','l','-','p','r','o','g','n','a','m','e','\0', - /* 198. [2391]+8 sendwait, a_AMV_VF_BOOL */ - 's','e','n','d','w','a','i','t','\0', - /* 199. [2400]+8 showlast, a_AMV_VF_BOOL */ - 's','h','o','w','l','a','s','t','\0', - /* 200. [2409]+8 showname, a_AMV_VF_BOOL */ - 's','h','o','w','n','a','m','e','\0', - /* 201. [2418]+6 showto, a_AMV_VF_BOOL */ - 's','h','o','w','t','o','\0', - /* 202. [2425]+4 Sign */ - 'S','i','g','n','\0', - /* 203. [2430]+4 sign */ - 's','i','g','n','\0', - /* 204. [2435]+9 signature */ - 's','i','g','n','a','t','u','r','e','\0', - /* 205. [2445]+13 skipemptybody, a_AMV_VF_BOOL|a_AMV_VF_VIP */ - 's','k','i','p','e','m','p','t','y','b','o','d','y','\0', - /* 206. [2459]+12 smime-ca-dir */ - 's','m','i','m','e','-','c','a','-','d','i','r','\0', - /* 207. [2472]+13 smime-ca-file */ - 's','m','i','m','e','-','c','a','-','f','i','l','e','\0', - /* 208. [2486]+14 smime-ca-flags */ - 's','m','i','m','e','-','c','a','-','f','l','a','g','s','\0', - /* 209. [2501]+20 smime-ca-no-defaults, a_AMV_VF_BOOL */ - 's','m','i','m','e','-','c','a','-','n','o','-','d','e','f','a','u','l','t','s','\0', - /* 210. [2522]+12 smime-cipher */ - 's','m','i','m','e','-','c','i','p','h','e','r','\0', - /* 211. [2535]+13 smime-crl-dir */ - 's','m','i','m','e','-','c','r','l','-','d','i','r','\0', - /* 212. [2549]+14 smime-crl-file */ - 's','m','i','m','e','-','c','r','l','-','f','i','l','e','\0', - /* 213. [2564]+22 smime-force-encryption, a_AMV_VF_BOOL */ - 's','m','i','m','e','-','f','o','r','c','e','-','e','n','c','r','y','p','t','i','o','n','\0', - /* 214. [2587]+19 smime-no-default-ca, a_AMV_VF_BOOL */ - 's','m','i','m','e','-','n','o','-','d','e','f','a','u','l','t','-','c','a','\0', - /* 215. [2607]+10 smime-sign, a_AMV_VF_BOOL */ - 's','m','i','m','e','-','s','i','g','n','\0', - /* 216. [2618]+15 smime-sign-cert */ - 's','m','i','m','e','-','s','i','g','n','-','c','e','r','t','\0', - /* 217. [2634]+24 smime-sign-include-certs */ - 's','m','i','m','e','-','s','i','g','n','-','i','n','c','l','u','d','e','-','c','e','r','t','s','\0', - /* 218. [2659]+25 smime-sign-message-digest */ - 's','m','i','m','e','-','s','i','g','n','-','m','e','s','s','a','g','e','-','d','i','g','e','s','t','\0', - /* 219. [2685]+4 smtp */ - 's','m','t','p','\0', - /* 220. [2690]+9 smtp-auth */ - 's','m','t','p','-','a','u','t','h','\0', - /* 221. [2700]+18 smtp-auth-password */ - 's','m','t','p','-','a','u','t','h','-','p','a','s','s','w','o','r','d','\0', - /* 222. [2719]+14 smtp-auth-user */ - 's','m','t','p','-','a','u','t','h','-','u','s','e','r','\0', - /* 223. [2734]+13 smtp-hostname */ - 's','m','t','p','-','h','o','s','t','n','a','m','e','\0', - /* 224. [2748]+17 smtp-use-starttls, a_AMV_VF_BOOL */ - 's','m','t','p','-','u','s','e','-','s','t','a','r','t','t','l','s','\0', - /* 225. [2766]+17 SOURCE_DATE_EPOCH, a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV */ - 'S','O','U','R','C','E','_','D','A','T','E','_','E','P','O','C','H','\0', - /* 226. [2784]+11 socks-proxy, a_AMV_VF_NOTEMPTY */ - 's','o','c','k','s','-','p','r','o','x','y','\0', - /* 227. [2796]+14 spam-interface */ - 's','p','a','m','-','i','n','t','e','r','f','a','c','e','\0', - /* 228. [2811]+12 spam-maxsize, a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM */ - 's','p','a','m','-','m','a','x','s','i','z','e','\0', - /* 229. [2824]+13 spamc-command */ - 's','p','a','m','c','-','c','o','m','m','a','n','d','\0', - /* 230. [2838]+15 spamc-arguments */ - 's','p','a','m','c','-','a','r','g','u','m','e','n','t','s','\0', - /* 231. [2854]+10 spamc-user */ - 's','p','a','m','c','-','u','s','e','r','\0', - /* 232. [2865]+12 spamd-socket */ - 's','p','a','m','d','-','s','o','c','k','e','t','\0', - /* 233. [2878]+10 spamd-user */ - 's','p','a','m','d','-','u','s','e','r','\0', - /* 234. [2889]+14 spamfilter-ham */ - 's','p','a','m','f','i','l','t','e','r','-','h','a','m','\0', - /* 235. [2904]+16 spamfilter-noham */ - 's','p','a','m','f','i','l','t','e','r','-','n','o','h','a','m','\0', - /* 236. [2921]+17 spamfilter-nospam */ - 's','p','a','m','f','i','l','t','e','r','-','n','o','s','p','a','m','\0', - /* 237. [2939]+15 spamfilter-rate */ - 's','p','a','m','f','i','l','t','e','r','-','r','a','t','e','\0', - /* 238. [2955]+25 spamfilter-rate-scanscore */ - 's','p','a','m','f','i','l','t','e','r','-','r','a','t','e','-','s','c','a','n','s','c','o','r','e','\0', - /* 239. [2981]+15 spamfilter-spam */ - 's','p','a','m','f','i','l','t','e','r','-','s','p','a','m','\0', - /* 240. [2997]+10 ssl-ca-dir */ - 's','s','l','-','c','a','-','d','i','r','\0', - /* 241. [3008]+11 ssl-ca-file */ - 's','s','l','-','c','a','-','f','i','l','e','\0', - /* 242. [3020]+12 ssl-ca-flags */ - 's','s','l','-','c','a','-','f','l','a','g','s','\0', - /* 243. [3033]+18 ssl-ca-no-defaults, a_AMV_VF_BOOL */ - 's','s','l','-','c','a','-','n','o','-','d','e','f','a','u','l','t','s','\0', - /* 244. [3052]+8 ssl-cert */ - 's','s','l','-','c','e','r','t','\0', - /* 245. [3061]+15 ssl-cipher-list */ - 's','s','l','-','c','i','p','h','e','r','-','l','i','s','t','\0', - /* 246. [3077]+15 ssl-config-file */ - 's','s','l','-','c','o','n','f','i','g','-','f','i','l','e','\0', - /* 247. [3093]+10 ssl-curves */ - 's','s','l','-','c','u','r','v','e','s','\0', - /* 248. [3104]+11 ssl-crl-dir */ - 's','s','l','-','c','r','l','-','d','i','r','\0', - /* 249. [3116]+12 ssl-crl-file */ - 's','s','l','-','c','r','l','-','f','i','l','e','\0', - /* 250. [3129]+7 ssl-key */ - 's','s','l','-','k','e','y','\0', - /* 251. [3137]+10 ssl-method */ - 's','s','l','-','m','e','t','h','o','d','\0', - /* 252. [3148]+17 ssl-no-default-ca, a_AMV_VF_BOOL */ - 's','s','l','-','n','o','-','d','e','f','a','u','l','t','-','c','a','\0', - /* 253. [3166]+12 ssl-protocol */ - 's','s','l','-','p','r','o','t','o','c','o','l','\0', - /* 254. [3179]+12 ssl-rand-egd */ - 's','s','l','-','r','a','n','d','-','e','g','d','\0', - /* 255. [3192]+13 ssl-rand-file */ - 's','s','l','-','r','a','n','d','-','f','i','l','e','\0', - /* 256. [3206]+10 ssl-verify */ - 's','s','l','-','v','e','r','i','f','y','\0', - /* 257. [3217]+10 stealthmua */ - 's','t','e','a','l','t','h','m','u','a','\0', - /* 258. [3228]+4 TERM, a_AMV_VF_ENV */ - 'T','E','R','M','\0', - /* 259. [3233]+6 TMPDIR, a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV */ - 'T','M','P','D','I','R','\0', - /* 260. [3240]+7 termcap */ - 't','e','r','m','c','a','p','\0', - /* 261. [3248]+15 termcap-ca-mode, a_AMV_VF_BOOL */ - 't','e','r','m','c','a','p','-','c','a','-','m','o','d','e','\0', - /* 262. [3264]+15 termcap-disable, a_AMV_VF_BOOL */ - 't','e','r','m','c','a','p','-','d','i','s','a','b','l','e','\0', - /* 263. [3280]+8 toplines, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_NUM */ - 't','o','p','l','i','n','e','s','\0', - /* 264. [3289]+10 topsqueeze, a_AMV_VF_BOOL */ - 't','o','p','s','q','u','e','e','z','e','\0', - /* 265. [3300]+10 ttycharset, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER */ - 't','t','y','c','h','a','r','s','e','t','\0', - /* 266. [3311]+15 typescript-mode, a_AMV_VF_BOOL|a_AMV_VF_VIP */ - 't','y','p','e','s','c','r','i','p','t','-','m','o','d','e','\0', - /* 267. [3327]+4 USER, a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_ENV */ - 'U','S','E','R','\0', - /* 268. [3332]+5 umask, a_AMV_VF_I3VAL|a_AMV_VF_NODEL|a_AMV_VF_POSNUM|a_AMV_VF_VIP */ - 'u','m','a','s','k','\0', - /* 269. [3338]+4 user */ - 'u','s','e','r','\0', - /* 270. [3343]+6 VISUAL, a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV */ - 'V','I','S','U','A','L','\0', - /* 271. [3350]+10 v15-compat, a_AMV_VF_BOOL */ - 'v','1','5','-','c','o','m','p','a','t','\0', - /* 272. [3361]+7 verbose, a_AMV_VF_BOOL|a_AMV_VF_VIP */ - 'v','e','r','b','o','s','e','\0', - /* 273. [3369]+7 version, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'v','e','r','s','i','o','n','\0', - /* 274. [3377]+12 version-date, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'v','e','r','s','i','o','n','-','d','a','t','e','\0', - /* 275. [3390]+13 version-major, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'v','e','r','s','i','o','n','-','m','a','j','o','r','\0', - /* 276. [3404]+13 version-minor, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'v','e','r','s','i','o','n','-','m','i','n','o','r','\0', - /* 277. [3418]+14 version-update, a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL */ - 'v','e','r','s','i','o','n','-','u','p','d','a','t','e','\0', - /* 278. [3433]+15 writebackedited, a_AMV_VF_BOOL */ - 'w','r','i','t','e','b','a','c','k','e','d','i','t','e','d','\0', - /* 279. [3449]+12 disconnected, a_AMV_VF_BOOL */ - 'd','i','s','c','o','n','n','e','c','t','e','d','\0', - /* 280. [3462]+9 imap-auth */ - 'i','m','a','p','-','a','u','t','h','\0', - /* 281. [3472]+10 imap-cache */ - 'i','m','a','p','-','c','a','c','h','e','\0', - /* 282. [3483]+10 imap-delim */ - 'i','m','a','p','-','d','e','l','i','m','\0', - /* 283. [3494]+14 imap-keepalive */ - 'i','m','a','p','-','k','e','e','p','a','l','i','v','e','\0', - /* 284. [3509]+15 imap-list-depth */ - 'i','m','a','p','-','l','i','s','t','-','d','e','p','t','h','\0', - /* 285. [3525]+17 imap-use-starttls, a_AMV_VF_BOOL */ - 'i','m','a','p','-','u','s','e','-','s','t','a','r','t','t','l','s','\0', -}; - -n_CTA(a_AMV_VF_NONE == 0, "Value not 0 as expected"); -static struct a_amv_var_map const a_amv_var_map[] = { - {2488521081u, 0u, a_AMV_VF_NONE|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* --special-param */ - {63u, 16u, a_AMV_VF_NONE|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* ? */ - {33u, 18u, a_AMV_VF_NONE|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* ! */ - {419304365u, 20u, a_AMV_VF_NONE|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* account */ - {3722159545u, 28u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* add-file-recipients */ - {838023451u, 48u, a_AMV_VF_NONE}, /* agent-shell-lookup */ - {3928217024u, 67u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* allnet */ - {3933094936u, 74u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* append */ - {109535u, 81u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* ask */ - {437227595u, 85u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* askatend */ - {1544133716u, 94u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* askattach */ - {3936469383u, 104u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* askbcc */ - {119286981u, 111u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* askcc */ - {1055088464u, 117u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* asksign */ - {3936488489u, 125u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_I3VAL}, /* asksub */ - {2100791799u, 132u, a_AMV_VF_NONE}, /* attrlist */ - {1143881025u, 141u, a_AMV_VF_NONE}, /* autobcc */ - {3939178815u, 149u, a_AMV_VF_NONE}, /* autocc */ - {2551200844u, 156u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* autocollapse */ - {163072614u, 169u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* autoprint */ - {1231424433u, 179u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* autothread */ - {3388960065u, 190u, a_AMV_VF_NONE}, /* autosort */ - {3631192u, 199u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bang */ - {625280330u, 204u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* batch-exit-on-error */ - {321383761u, 224u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, /* bind-timeout */ - {170960u, 237u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bsdannounce */ - {3120210877u, 249u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bsdcompat */ - {4132654694u, 259u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bsdflags */ - {2716084787u, 268u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bsdheadline */ - {2338050259u, 280u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bsdmsgs */ - {4143546805u, 288u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* bsdorder */ - {2623071967u, 297u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* build-os */ - {3690146504u, 306u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* build-osenv */ - {3813975201u, 318u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV}, /* COLUMNS */ - {358823789u, 326u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER}, /* charset-7bit */ - {358859726u, 339u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER}, /* charset-8bit */ - {3269304427u, 352u, a_AMV_VF_NONE|a_AMV_VF_LOWER}, /* charset-unknown-8bit */ - {111508u, 373u, a_AMV_VF_NONE}, /* cmd */ - {482327989u, 377u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* colour-disable */ - {2857965296u, 392u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* colour-pager */ - {2717291452u, 405u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* contact-mail */ - {2294912087u, 418u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* contact-web */ - {111689u, 430u, a_AMV_VF_NONE|a_AMV_VF_POSNUM}, /* crt */ - {2974539481u, 434u, a_AMV_VF_NONE|a_AMV_VF_NOCNTRLS}, /* customhdr */ - {2521070u, 444u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* DEAD */ - {3657134018u, 449u, a_AMV_VF_NONE|a_AMV_VF_I3VAL}, /* datefield */ - {2384089013u, 459u, a_AMV_VF_NONE|a_AMV_VF_I3VAL}, /* datefield-markout-older */ - {122332423u, 483u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_VIP}, /* debug */ - {1691626112u, 489u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* disposition-notification-send */ - {112679u, 519u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* dot */ - {1781498776u, 523u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* dotlock-ignore-error */ - {2783702311u, 544u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* EDITOR */ - {3877730807u, 551u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* editalong */ - {1055429730u, 561u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* editheaders */ - {2449114909u, 573u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* emptystart */ - {947851527u, 584u, a_AMV_VF_NONE}, /* encoding */ - {1894672387u, 593u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* errexit */ - {4092722801u, 601u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL}, /* escape */ - {3254669595u, 608u, a_AMV_VF_NONE}, /* expandaddr */ - {3254684944u, 619u, a_AMV_VF_NONE}, /* expandargv */ - {1806590975u, 630u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* features */ - {124963293u, 639u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* flipr */ - {4127440860u, 645u, a_AMV_VF_NONE|a_AMV_VF_VIP}, /* folder */ - {3875607917u, 652u, a_AMV_VF_NONE|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* folder-resolved */ - {3184215642u, 668u, a_AMV_VF_NONE}, /* folder-hook */ - {845432648u, 680u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* followup-to */ - {1360940784u, 692u, a_AMV_VF_NONE}, /* followup-to-honour */ - {2102400300u, 711u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* forward-as-attachment */ - {1488952766u, 733u, a_AMV_VF_NONE}, /* forward-inject-head */ - {3793492u, 753u, a_AMV_VF_NONE}, /* from */ - {3777473511u, 758u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* fullnames */ - {1142629489u, 768u, a_AMV_VF_NONE}, /* fwdheading */ - {2676105u, 779u, a_AMV_VF_NONE|a_AMV_VF_IMPORT|a_AMV_VF_NODEL|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, /* HOME */ - {4193457129u, 784u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_I3VAL}, /* header */ - {1124823322u, 791u, a_AMV_VF_NONE}, /* headline */ - {3102083359u, 800u, a_AMV_VF_NONE}, /* headline-bidi */ - {78202687u, 814u, a_AMV_VF_NONE}, /* history-file */ - {2581576228u, 827u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* history-gabby */ - {4251937947u, 841u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* history-gabby-persist */ - {78670330u, 863u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, /* history-size */ - {3861991u, 876u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* hold */ - {1878076063u, 881u, a_AMV_VF_NONE}, /* hostname */ - {2723216029u, 890u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* idna-disable */ - {117826u, 903u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_VIP}, /* ifs */ - {4234366009u, 907u, a_AMV_VF_NONE|a_AMV_VF_I3VAL|a_AMV_VF_RDONLY|a_AMV_VF_NODEL|a_AMV_VF_VIP}, /* ifs-ws */ - {4235443940u, 914u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* ignore */ - {4097949886u, 921u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* ignoreeof */ - {128585280u, 931u, a_AMV_VF_NONE}, /* inbox */ - {1578583856u, 937u, a_AMV_VF_NONE}, /* indentprefix */ - {3958693u, 950u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* keep */ - {3727474588u, 955u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* keep-content-length */ - {302149108u, 975u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* keepsave */ - {2804642u, 984u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, /* LANG */ - {3057233959u, 989u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, /* LC_ALL */ - {730803155u, 996u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, /* LC_CTYPE */ - {92840699u, 1005u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV}, /* LINES */ - {3063938707u, 1011u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* LISTER */ - {2546090755u, 1018u, a_AMV_VF_NONE|a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_ENV}, /* LOGNAME */ - {4215099357u, 1026u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* line-editor-disable */ - {141716907u, 1046u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* line-editor-no-defaults */ - {3664601053u, 1070u, a_AMV_VF_NONE|a_AMV_VF_I3VAL|a_AMV_VF_NODEL}, /* log-prefix */ - {2840419u, 1081u, a_AMV_VF_NONE|a_AMV_VF_ENV}, /* MAIL */ - {3093219064u, 1086u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* MAILRC */ - {3820534927u, 1093u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_ENV}, /* MAILX_NO_SYSTEM_RC */ - {2841718u, 1112u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* MBOX */ - {1907587133u, 1117u, a_AMV_VF_NONE|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* mailbox-resolved */ - {745355887u, 1134u, a_AMV_VF_NONE|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* mailbox-display */ - {1698534702u, 1150u, a_AMV_VF_NONE}, /* mailx-extra-rc */ - {2312309028u, 1165u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* markanswered */ - {68323757u, 1178u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* mbox-rfc4155 */ - {4233006470u, 1191u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_VIP}, /* memdebug */ - {130334368u, 1200u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* message-id-disable */ - {125627982u, 1219u, a_AMV_VF_NONE}, /* message-inject-head */ - {126055142u, 1239u, a_AMV_VF_NONE}, /* message-inject-tail */ - {133025124u, 1259u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* metoo */ - {3414355303u, 1265u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* mime-allow-text-controls */ - {3908858503u, 1290u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* mime-alternative-favour-rich */ - {3192709189u, 1319u, a_AMV_VF_NONE|a_AMV_VF_POSNUM}, /* mime-counter-evidence */ - {4065047964u, 1341u, a_AMV_VF_NONE}, /* mime-encoding */ - {1028657528u, 1355u, a_AMV_VF_NONE}, /* mimetypes-load-control */ - {122626u, 1378u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY}, /* mta */ - {2713248165u, 1382u, a_AMV_VF_NONE}, /* mta-arguments */ - {4035420705u, 1396u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* mta-no-default-arguments */ - {1102401135u, 1421u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY}, /* mta-argv0 */ - {2964610855u, 1431u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-command */ - {2374925304u, 1445u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-subject */ - {1468779164u, 1459u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-from */ - {2265976329u, 1470u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-sender */ - {3215672747u, 1483u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-to */ - {3215672174u, 1492u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-cc */ - {3037965648u, 1501u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-bcc */ - {2222361282u, 1511u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-raw-to */ - {2222360709u, 1524u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-raw-cc */ - {323458375u, 1537u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-raw-bcc */ - {2756351450u, 1551u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-orig-from */ - {1394747753u, 1567u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-orig-to */ - {1394747180u, 1581u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-orig-cc */ - {3076982990u, 1595u, a_AMV_VF_NONE|a_AMV_VF_RDONLY}, /* mailx-orig-bcc */ - {4280681563u, 1610u, a_AMV_VF_NONE}, /* NAIL_EXTRA_RC */ - {2845755096u, 1624u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_ENV}, /* NAIL_NO_SYSTEM_RC */ - {639934357u, 1642u, a_AMV_VF_NONE}, /* NAIL_HEAD */ - {1058233243u, 1652u, a_AMV_VF_NONE}, /* NAIL_HISTFILE */ - {1058700886u, 1666u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_NUM}, /* NAIL_HISTSIZE */ - {640361517u, 1680u, a_AMV_VF_NONE}, /* NAIL_TAIL */ - {95075740u, 1690u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* NETRC */ - {1137717571u, 1696u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* netrc-lookup */ - {4047680087u, 1709u, a_AMV_VF_NONE}, /* netrc-pipe */ - {985178617u, 1720u, a_AMV_VF_NONE}, /* newfolders */ - {130414157u, 1731u, a_AMV_VF_NONE}, /* newmail */ - {1856115125u, 1739u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-compose-cleanup */ - {3372302411u, 1758u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-compose-enter */ - {3380260282u, 1775u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-compose-leave */ - {166813677u, 1792u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-compose-splice */ - {2352662354u, 1810u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-compose-splice-shell */ - {2040708256u, 1834u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-resend-cleanup */ - {1802777718u, 1852u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* on-resend-enter */ - {1400017300u, 1868u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* outfolder */ - {97289263u, 1878u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* PAGER */ - {2948589u, 1884u, a_AMV_VF_NONE|a_AMV_VF_IMPORT|a_AMV_VF_NODEL|a_AMV_VF_ENV}, /* PATH */ - {449570441u, 1889u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_VIP|a_AMV_VF_ENV}, /* POSIXLY_CORRECT */ - {4134077u, 1905u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* page */ - {2621674035u, 1910u, a_AMV_VF_NONE}, /* password */ - {2861320984u, 1919u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* piperaw */ - {2396252929u, 1927u, a_AMV_VF_NONE}, /* pop3-auth */ - {275342634u, 1937u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* pop3-bulk-load */ - {1495995749u, 1952u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, /* pop3-keepalive */ - {3632267817u, 1967u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* pop3-no-apop */ - {43237290u, 1980u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* pop3-use-starttls */ - {136940979u, 1998u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_VIP}, /* posix */ - {1388395788u, 2004u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* print-alternatives */ - {227503234u, 2023u, a_AMV_VF_NONE|a_AMV_VF_I3VAL}, /* prompt */ - {3212639476u, 2030u, a_AMV_VF_NONE|a_AMV_VF_I3VAL}, /* prompt2 */ - {138331496u, 2038u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* quiet */ - {138338510u, 2044u, a_AMV_VF_NONE}, /* quote */ - {3820786885u, 2050u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* quote-as-attachment */ - {1182381408u, 2070u, a_AMV_VF_NONE}, /* quote-fold */ - {295311392u, 2081u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* r-option-implicit */ - {682388781u, 2099u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* recipients-in-cc */ - {289928031u, 2116u, a_AMV_VF_NONE}, /* record */ - {863507199u, 2123u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* record-files */ - {3191066333u, 2136u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* record-resent */ - {3710195994u, 2150u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* reply-in-same-charset */ - {4144529571u, 2172u, a_AMV_VF_NONE}, /* reply-strings */ - {993007855u, 2186u, a_AMV_VF_NONE}, /* replyto */ - {4037862148u, 2194u, a_AMV_VF_NONE}, /* reply-to-honour */ - {145783858u, 2210u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* rfc822-body-from_ */ - {101096632u, 2228u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* SHELL */ - {101723112u, 2234u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_ENV}, /* SYSV3 */ - {4242383u, 2240u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_I3VAL}, /* save */ - {327219328u, 2245u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, /* screen */ - {2344495826u, 2252u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* searchheaders */ - {1707020871u, 2266u, a_AMV_VF_NONE|a_AMV_VF_LOWER}, /* sendcharsets */ - {259282709u, 2279u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* sendcharsets-else-ttycharset */ - {329446337u, 2308u, a_AMV_VF_NONE}, /* sender */ - {2285047981u, 2315u, a_AMV_VF_NONE}, /* sendmail */ - {2932368656u, 2324u, a_AMV_VF_NONE}, /* sendmail-arguments */ - {1421298860u, 2343u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* sendmail-no-default-arguments */ - {4267157331u, 2373u, a_AMV_VF_NONE}, /* sendmail-progname */ - {2285407359u, 2391u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* sendwait */ - {1926116885u, 2400u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* showlast */ - {1926188546u, 2409u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* showname */ - {333061220u, 2418u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* showto */ - {3100625u, 2425u, a_AMV_VF_NONE}, /* Sign */ - {4250609u, 2430u, a_AMV_VF_NONE}, /* sign */ - {994697266u, 2435u, a_AMV_VF_NONE}, /* signature */ - {3875901652u, 2445u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_VIP}, /* skipemptybody */ - {3002585464u, 2459u, a_AMV_VF_NONE}, /* smime-ca-dir */ - {301144281u, 2472u, a_AMV_VF_NONE}, /* smime-ca-file */ - {1347922694u, 2486u, a_AMV_VF_NONE}, /* smime-ca-flags */ - {1918790587u, 2501u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* smime-ca-no-defaults */ - {3014484835u, 2522u, a_AMV_VF_NONE}, /* smime-cipher */ - {1039105045u, 2535u, a_AMV_VF_NONE}, /* smime-crl-dir */ - {4225767190u, 2549u, a_AMV_VF_NONE}, /* smime-crl-file */ - {3116904399u, 2564u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* smime-force-encryption */ - {3384448360u, 2587u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* smime-no-default-ca */ - {105885657u, 2607u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* smime-sign */ - {2215302260u, 2618u, a_AMV_VF_NONE}, /* smime-sign-cert */ - {1036659416u, 2634u, a_AMV_VF_NONE}, /* smime-sign-include-certs */ - {3719373112u, 2659u, a_AMV_VF_NONE}, /* smime-sign-message-digest */ - {4255396u, 2685u, a_AMV_VF_NONE}, /* smtp */ - {3589879203u, 2690u, a_AMV_VF_NONE}, /* smtp-auth */ - {1996663907u, 2700u, a_AMV_VF_NONE}, /* smtp-auth-password */ - {2594939183u, 2719u, a_AMV_VF_NONE}, /* smtp-auth-user */ - {2613227248u, 2734u, a_AMV_VF_NONE}, /* smtp-hostname */ - {1310886988u, 2748u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* smtp-use-starttls */ - {3578734108u, 2766u, a_AMV_VF_NONE|a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV}, /* SOURCE_DATE_EPOCH */ - {2053806514u, 2784u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY}, /* socks-proxy */ - {2190606319u, 2796u, a_AMV_VF_NONE}, /* spam-interface */ - {2952684415u, 2811u, a_AMV_VF_NONE|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, /* spam-maxsize */ - {3055596256u, 2824u, a_AMV_VF_NONE}, /* spamc-command */ - {3800420503u, 2838u, a_AMV_VF_NONE}, /* spamc-arguments */ - {4245507488u, 2854u, a_AMV_VF_NONE}, /* spamc-user */ - {1558523435u, 2865u, a_AMV_VF_NONE}, /* spamd-socket */ - {4284642881u, 2878u, a_AMV_VF_NONE}, /* spamd-user */ - {2420736634u, 2889u, a_AMV_VF_NONE}, /* spamfilter-ham */ - {3374858487u, 2904u, a_AMV_VF_NONE}, /* spamfilter-noham */ - {3996559026u, 2921u, a_AMV_VF_NONE}, /* spamfilter-nospam */ - {2575257296u, 2939u, a_AMV_VF_NONE}, /* spamfilter-rate */ - {4190460190u, 2955u, a_AMV_VF_NONE}, /* spamfilter-rate-scanscore */ - {2575308949u, 2981u, a_AMV_VF_NONE}, /* spamfilter-spam */ - {1179440559u, 2997u, a_AMV_VF_NONE}, /* ssl-ca-dir */ - {266904560u, 3008u, a_AMV_VF_NONE}, /* ssl-ca-file */ - {218011901u, 3020u, a_AMV_VF_NONE}, /* ssl-ca-flags */ - {2201204466u, 3033u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* ssl-ca-no-defaults */ - {3041879213u, 3052u, a_AMV_VF_NONE}, /* ssl-cert */ - {2789248355u, 3061u, a_AMV_VF_NONE}, /* ssl-cipher-list */ - {390091074u, 3077u, a_AMV_VF_NONE}, /* ssl-config-file */ - {1205658103u, 3093u, a_AMV_VF_NONE}, /* ssl-curves */ - {1004865324u, 3104u, a_AMV_VF_NONE}, /* ssl-crl-dir */ - {3095856397u, 3116u, a_AMV_VF_NONE}, /* ssl-crl-file */ - {2825347880u, 3129u, a_AMV_VF_NONE}, /* ssl-key */ - {1578094240u, 3137u, a_AMV_VF_NONE}, /* ssl-method */ - {1961350591u, 3148u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* ssl-no-default-ca */ - {3286757489u, 3166u, a_AMV_VF_NONE}, /* ssl-protocol */ - {2083698465u, 3179u, a_AMV_VF_NONE}, /* ssl-rand-egd */ - {42611089u, 3192u, a_AMV_VF_NONE}, /* ssl-rand-file */ - {1930241716u, 3206u, a_AMV_VF_NONE}, /* ssl-verify */ - {4266102040u, 3217u, a_AMV_VF_NONE}, /* stealthmua */ - {3096632u, 3228u, a_AMV_VF_NONE|a_AMV_VF_ENV}, /* TERM */ - {3381640432u, 3233u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, /* TMPDIR */ - {3578326988u, 3240u, a_AMV_VF_NONE}, /* termcap */ - {3489285231u, 3248u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* termcap-ca-mode */ - {881438381u, 3264u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* termcap-disable */ - {2071224238u, 3280u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_NUM}, /* toplines */ - {1477079445u, 3289u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* topsqueeze */ - {113531019u, 3300u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER}, /* ttycharset */ - {99884489u, 3311u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_VIP}, /* typescript-mode */ - {3147391u, 3327u, a_AMV_VF_NONE|a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_ENV}, /* USER */ - {142779425u, 3332u, a_AMV_VF_NONE|a_AMV_VF_I3VAL|a_AMV_VF_NODEL|a_AMV_VF_POSNUM|a_AMV_VF_VIP}, /* umask */ - {4333311u, 3338u, a_AMV_VF_NONE}, /* user */ - {3455293588u, 3343u, a_AMV_VF_NONE|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, /* VISUAL */ - {2303937485u, 3350u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* v15-compat */ - {1865913974u, 3361u, a_AMV_VF_NONE|a_AMV_VF_BOOL|a_AMV_VF_VIP}, /* verbose */ - {1866518246u, 3369u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* version */ - {2581258033u, 3377u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* version-date */ - {3587799308u, 3390u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* version-major */ - {3588091160u, 3404u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* version-minor */ - {2763901430u, 3418u, a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, /* version-update */ - {3469190955u, 3433u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* writebackedited */ - {989496243u, 3449u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* disconnected */ - {2458536262u, 3462u, a_AMV_VF_NONE}, /* imap-auth */ - {3823920008u, 3472u, a_AMV_VF_NONE}, /* imap-cache */ - {3825259519u, 3483u, a_AMV_VF_NONE}, /* imap-delim */ - {75507402u, 3494u, a_AMV_VF_NONE}, /* imap-keepalive */ - {270835474u, 3509u, a_AMV_VF_NONE}, /* imap-list-depth */ - {1934791407u, 3525u, a_AMV_VF_NONE|a_AMV_VF_BOOL}, /* imap-use-starttls */ -}; - -#ifndef __CREATE_OKEY_MAP_PL -# ifdef HAVE_PUTENV -# define a_X(X) X -# else -# define a_X(X) -# endif - -/* Unfortunately init of varsized buffer won't work: define "subclass"es */ -static char const a_amv_var_virt_build_os_val[] = {VAL_BUILD_OS}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[8 +1]; -} const a_amv_var_virt_build_os = {NULL, a_amv_var_virt_build_os_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "build-os"}; - -static char const a_amv_var_virt_build_osenv_val[] = {VAL_BUILD_OSENV}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[11 +1]; -} const a_amv_var_virt_build_osenv = {NULL, a_amv_var_virt_build_osenv_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "build-osenv"}; - -static char const a_amv_var_virt_contact_mail_val[] = {VAL_CONTACT_MAIL}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[12 +1]; -} const a_amv_var_virt_contact_mail = {NULL, a_amv_var_virt_contact_mail_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "contact-mail"}; - -static char const a_amv_var_virt_contact_web_val[] = {VAL_CONTACT_WEB}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[11 +1]; -} const a_amv_var_virt_contact_web = {NULL, a_amv_var_virt_contact_web_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "contact-web"}; - -static char const a_amv_var_virt_features_val[] = {VAL_FEATURES}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[8 +1]; -} const a_amv_var_virt_features = {NULL, a_amv_var_virt_features_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "features"}; - -static char const a_amv_var_virt_version_val[] = {n_VERSION}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[7 +1]; -} const a_amv_var_virt_version = {NULL, a_amv_var_virt_version_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version"}; - -static char const a_amv_var_virt_version_date_val[] = {n_VERSION_DATE}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[12 +1]; -} const a_amv_var_virt_version_date = {NULL, a_amv_var_virt_version_date_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-date"}; - -static char const a_amv_var_virt_version_major_val[] = {n_VERSION_MAJOR}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[13 +1]; -} const a_amv_var_virt_version_major = {NULL, a_amv_var_virt_version_major_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-major"}; - -static char const a_amv_var_virt_version_minor_val[] = {n_VERSION_MINOR}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[13 +1]; -} const a_amv_var_virt_version_minor = {NULL, a_amv_var_virt_version_minor_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-minor"}; - -static char const a_amv_var_virt_version_update_val[] = {n_VERSION_UPDATE}; -static struct{ - struct a_amv_var *av_link; - char const *av_value; - a_X(char *av_env;) - ui16_t av_flags; - char const av_name[14 +1]; -} const a_amv_var_virt_version_update = {NULL, a_amv_var_virt_version_update_val, a_X(0 COMMA) a_AMV_VF_NONE|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-update"}; - -# undef a_X - -#define a_AMV_VAR_VIRTS_CNT 10 -static struct a_amv_var_virt const a_amv_var_virts[] = { - {ok_v_build_os, {0,}, (void const*)&a_amv_var_virt_build_os}, - {ok_v_build_osenv, {0,}, (void const*)&a_amv_var_virt_build_osenv}, - {ok_v_contact_mail, {0,}, (void const*)&a_amv_var_virt_contact_mail}, - {ok_v_contact_web, {0,}, (void const*)&a_amv_var_virt_contact_web}, - {ok_v_features, {0,}, (void const*)&a_amv_var_virt_features}, - {ok_v_version, {0,}, (void const*)&a_amv_var_virt_version}, - {ok_v_version_date, {0,}, (void const*)&a_amv_var_virt_version_date}, - {ok_v_version_major, {0,}, (void const*)&a_amv_var_virt_version_major}, - {ok_v_version_minor, {0,}, (void const*)&a_amv_var_virt_version_minor}, - {ok_v_version_update, {0,}, (void const*)&a_amv_var_virt_version_update}, -}; - -#define a_AMV_VAR_I3VALS_CNT 10 -static struct a_amv_var_defval const a_amv_var_i3vals[] = { - {ok_b_asksub, {0,}, NULL}, - {ok_v_datefield, {0,}, "%Y-%m-%d %H:%M"}, - {ok_v_datefield_markout_older, {0,}, "%Y-%m-%d"}, - {ok_b_header, {0,}, NULL}, - {ok_v_ifs_ws, {0,}, " \t\n"}, - {ok_v_log_prefix, {0,}, VAL_UAGENT ": "}, - {ok_v_prompt, {0,}, "? "}, - {ok_v_prompt2, {0,}, ".. "}, - {ok_b_save, {0,}, NULL}, - {ok_v_umask, {0,}, "0077"}, -}; - -#define a_AMV_VAR_DEFVALS_CNT 18 -static struct a_amv_var_defval const a_amv_var_defvals[] = { - {ok_v_DEAD, {0,}, VAL_DEAD}, - {ok_v_EDITOR, {0,}, VAL_EDITOR}, - {ok_v_LISTER, {0,}, VAL_LISTER}, - {ok_v_MAILRC, {0,}, VAL_MAILRC}, - {ok_v_MBOX, {0,}, VAL_MBOX}, - {ok_v_NETRC, {0,}, VAL_NETRC}, - {ok_v_PAGER, {0,}, VAL_PAGER}, - {ok_v_SHELL, {0,}, VAL_SHELL}, - {ok_v_TMPDIR, {0,}, VAL_TMPDIR}, - {ok_v_VISUAL, {0,}, VAL_VISUAL}, - {ok_v_charset_7bit, {0,}, CHARSET_7BIT}, - {ok_v_charset_8bit, {0,}, CHARSET_8BIT}, - {ok_v_escape, {0,}, n_ESCAPE}, - {ok_v_ifs, {0,}, " \t\n"}, - {ok_v_mta, {0,}, VAL_MTA}, - {ok_v_mta_argv0, {0,}, VAL_MTA_ARGV0}, - {ok_v_toplines, {0,}, "5"}, - {ok_v_ttycharset, {0,}, CHARSET_8BIT}, -}; -#endif /* __CREATE_OKEY_MAP_PL */ - -#define a_AMV_VAR__SPECIAL_PARAM_MAP_IDX 0u -#define a_AMV_VAR__QM_MAP_IDX 1u -#define a_AMV_VAR__EM_MAP_IDX 2u - -#define a_AMV_VAR_REV_ILL 286u -#define a_AMV_VAR_REV_PRIME 661u -#define a_AMV_VAR_REV_LONGEST 5u -#define a_AMV_VAR_REV_WRAPAROUND 0 -static ui16_t const a_amv_var_revmap[a_AMV_VAR_REV_PRIME] = { - 286u, 55u, 286u, 286u, 286u, 141u, 286u, 286u, 133u, 84u, - 204u, 286u, 286u, 69u, 286u, 286u, 44u, 286u, 107u, 92u, - 286u, 286u, 286u, 286u, 149u, 286u, 286u, 286u, 286u, 155u, - 68u, 241u, 286u, 2u, 16u, 270u, 286u, 26u, 286u, 10u, - 286u, 235u, 286u, 286u, 286u, 286u, 286u, 286u, 162u, 139u, - 132u, 283u, 150u, 247u, 286u, 286u, 286u, 286u, 29u, 91u, - 97u, 165u, 172u, 1u, 228u, 194u, 276u, 215u, 41u, 27u, - 239u, 286u, 286u, 286u, 119u, 286u, 124u, 135u, 286u, 104u, - 286u, 182u, 286u, 286u, 286u, 188u, 52u, 153u, 286u, 286u, - 286u, 286u, 256u, 28u, 79u, 286u, 286u, 286u, 286u, 286u, - 227u, 220u, 101u, 223u, 249u, 286u, 286u, 166u, 257u, 23u, - 286u, 286u, 286u, 286u, 183u, 286u, 286u, 286u, 58u, 96u, - 266u, 268u, 285u, 286u, 115u, 286u, 214u, 209u, 225u, 259u, - 286u, 156u, 286u, 286u, 286u, 195u, 196u, 286u, 286u, 212u, - 286u, 286u, 286u, 177u, 144u, 151u, 218u, 110u, 126u, 45u, - 108u, 229u, 286u, 109u, 274u, 286u, 14u, 286u, 286u, 102u, - 286u, 286u, 46u, 286u, 136u, 286u, 286u, 286u, 83u, 262u, - 286u, 192u, 64u, 271u, 200u, 286u, 286u, 7u, 244u, 0u, - 148u, 88u, 35u, 54u, 160u, 98u, 260u, 286u, 286u, 286u, - 286u, 286u, 286u, 286u, 226u, 286u, 114u, 286u, 286u, 286u, - 48u, 286u, 286u, 62u, 286u, 286u, 286u, 286u, 286u, 272u, - 286u, 178u, 17u, 184u, 190u, 245u, 286u, 286u, 286u, 11u, - 242u, 286u, 30u, 286u, 286u, 286u, 286u, 286u, 137u, 286u, - 286u, 286u, 286u, 94u, 286u, 206u, 286u, 286u, 286u, 286u, - 286u, 286u, 286u, 286u, 286u, 286u, 127u, 286u, 286u, 286u, - 286u, 286u, 264u, 286u, 170u, 38u, 286u, 39u, 208u, 180u, - 286u, 286u, 286u, 286u, 13u, 59u, 286u, 286u, 286u, 191u, - 286u, 286u, 286u, 24u, 286u, 286u, 286u, 12u, 15u, 286u, - 286u, 286u, 286u, 74u, 210u, 286u, 286u, 128u, 168u, 87u, - 286u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, - 282u, 286u, 286u, 265u, 280u, 112u, 286u, 286u, 185u, 49u, - 286u, 286u, 32u, 154u, 286u, 286u, 286u, 146u, 286u, 22u, - 286u, 142u, 169u, 286u, 252u, 286u, 286u, 273u, 63u, 286u, - 286u, 286u, 286u, 231u, 286u, 236u, 286u, 3u, 286u, 286u, - 286u, 120u, 230u, 286u, 286u, 171u, 286u, 286u, 286u, 286u, - 181u, 286u, 286u, 286u, 286u, 286u, 163u, 286u, 286u, 286u, - 286u, 286u, 286u, 286u, 286u, 286u, 251u, 286u, 286u, 286u, - 267u, 111u, 286u, 275u, 286u, 129u, 221u, 72u, 286u, 203u, - 5u, 224u, 286u, 286u, 286u, 255u, 286u, 286u, 176u, 106u, - 286u, 286u, 286u, 286u, 130u, 279u, 286u, 286u, 286u, 286u, - 286u, 286u, 286u, 254u, 90u, 86u, 145u, 77u, 286u, 286u, - 36u, 286u, 152u, 240u, 261u, 286u, 286u, 286u, 286u, 73u, - 118u, 147u, 25u, 216u, 286u, 286u, 286u, 140u, 65u, 80u, - 253u, 286u, 71u, 40u, 243u, 286u, 286u, 286u, 76u, 286u, - 164u, 286u, 286u, 197u, 75u, 6u, 286u, 286u, 286u, 232u, - 286u, 286u, 286u, 286u, 53u, 238u, 269u, 286u, 286u, 113u, - 37u, 286u, 4u, 286u, 173u, 286u, 286u, 82u, 286u, 286u, - 8u, 286u, 175u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, - 286u, 286u, 43u, 121u, 286u, 286u, 211u, 286u, 286u, 286u, - 99u, 286u, 47u, 286u, 286u, 56u, 286u, 286u, 286u, 286u, - 187u, 286u, 122u, 286u, 286u, 286u, 21u, 201u, 57u, 258u, - 85u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, - 198u, 286u, 286u, 286u, 286u, 286u, 286u, 286u, 100u, 158u, - 117u, 286u, 189u, 286u, 286u, 202u, 103u, 286u, 123u, 219u, - 278u, 286u, 213u, 286u, 286u, 159u, 286u, 250u, 286u, 31u, - 286u, 286u, 9u, 286u, 286u, 93u, 286u, 125u, 217u, 81u, - 233u, 286u, 199u, 286u, 286u, 67u, 248u, 286u, 263u, 286u, - 286u, 286u, 286u, 286u, 33u, 286u, 286u, 286u, 286u, 205u, - 286u, 143u, 61u, 286u, 78u, 286u, 222u, 286u, 286u, 286u, - 286u, 286u, 286u, 286u, 286u, 179u, 286u, 286u, 286u, 286u, - 34u, 286u, 20u, 246u, 286u, 95u, 286u, 286u, 286u, 19u, - 286u, 286u, 286u, 66u, 207u, 138u, 286u, 18u, 286u, 134u, - 167u, 234u, 51u, 105u, 131u, 89u, 70u, 286u, 286u, 286u, - 286u, 116u, 161u, 193u, 286u, 237u, 281u, 286u, 60u, 157u, - 284u, 42u, 286u, 286u, 286u, 286u, 286u, 286u, 186u, 286u, - 286u, 286u, 286u, 174u, 286u, 286u, 286u, 277u, 286u, 286u, - 50u -}; +/*@ gen-okeys.h, generated by ./make-okey-map.pl. + *@ See accmacvar.c for more */ + +static char const a_amv_var_names[] = { +'-','-','s','p','e','c','i','a','l','-','p','a','r','a','m','\0', +'?','\0', +'!','\0', +'a','c','c','o','u','n','t','\0', +'a','d','d','-','f','i','l','e','-','r','e','c','i','p','i','e','n','t','s','\0', +'a','g','e','n','t','-','s','h','e','l','l','-','l','o','o','k','u','p','\0', +'a','l','l','n','e','t','\0', +'a','p','p','e','n','d','\0', +'a','s','k','\0', +'a','s','k','a','t','e','n','d','\0', +'a','s','k','a','t','t','a','c','h','\0', +'a','s','k','b','c','c','\0', +'a','s','k','c','c','\0', +'a','s','k','s','i','g','n','\0', +'a','s','k','s','u','b','\0', +'a','t','t','r','l','i','s','t','\0', +'a','u','t','o','b','c','c','\0', +'a','u','t','o','c','c','\0', +'a','u','t','o','c','o','l','l','a','p','s','e','\0', +'a','u','t','o','p','r','i','n','t','\0', +'a','u','t','o','t','h','r','e','a','d','\0', +'a','u','t','o','s','o','r','t','\0', +'b','a','n','g','\0', +'b','a','t','c','h','-','e','x','i','t','-','o','n','-','e','r','r','o','r','\0', +'b','i','n','d','-','t','i','m','e','o','u','t','\0', +'b','s','d','a','n','n','o','u','n','c','e','\0', +'b','s','d','c','o','m','p','a','t','\0', +'b','s','d','f','l','a','g','s','\0', +'b','s','d','h','e','a','d','l','i','n','e','\0', +'b','s','d','m','s','g','s','\0', +'b','s','d','o','r','d','e','r','\0', +'b','u','i','l','d','-','o','s','\0', +'b','u','i','l','d','-','o','s','e','n','v','\0', +'C','O','L','U','M','N','S','\0', +'c','h','a','r','s','e','t','-','7','b','i','t','\0', +'c','h','a','r','s','e','t','-','8','b','i','t','\0', +'c','h','a','r','s','e','t','-','u','n','k','n','o','w','n','-','8','b','i','t','\0', +'c','m','d','\0', +'c','o','l','o','u','r','-','d','i','s','a','b','l','e','\0', +'c','o','l','o','u','r','-','p','a','g','e','r','\0', +'c','o','n','t','a','c','t','-','m','a','i','l','\0', +'c','o','n','t','a','c','t','-','w','e','b','\0', +'c','r','t','\0', +'c','u','s','t','o','m','h','d','r','\0', +'D','E','A','D','\0', +'d','a','t','e','f','i','e','l','d','\0', +'d','a','t','e','f','i','e','l','d','-','m','a','r','k','o','u','t','-','o','l','d','e','r','\0', +'d','e','b','u','g','\0', +'d','i','s','p','o','s','i','t','i','o','n','-','n','o','t','i','f','i','c','a','t','i','o','n','-','s','e','n','d','\0', +'d','o','t','\0', +'d','o','t','l','o','c','k','-','i','g','n','o','r','e','-','e','r','r','o','r','\0', +'E','D','I','T','O','R','\0', +'e','d','i','t','a','l','o','n','g','\0', +'e','d','i','t','h','e','a','d','e','r','s','\0', +'e','m','p','t','y','s','t','a','r','t','\0', +'e','n','c','o','d','i','n','g','\0', +'e','r','r','e','x','i','t','\0', +'e','s','c','a','p','e','\0', +'e','x','p','a','n','d','a','d','d','r','\0', +'e','x','p','a','n','d','a','r','g','v','\0', +'f','e','a','t','u','r','e','s','\0', +'f','l','i','p','r','\0', +'f','o','l','d','e','r','\0', +'f','o','l','d','e','r','-','r','e','s','o','l','v','e','d','\0', +'f','o','l','d','e','r','-','h','o','o','k','\0', +'f','o','l','l','o','w','u','p','-','t','o','\0', +'f','o','l','l','o','w','u','p','-','t','o','-','h','o','n','o','u','r','\0', +'f','o','r','w','a','r','d','-','a','s','-','a','t','t','a','c','h','m','e','n','t','\0', +'f','o','r','w','a','r','d','-','i','n','j','e','c','t','-','h','e','a','d','\0', +'f','r','o','m','\0', +'f','u','l','l','n','a','m','e','s','\0', +'f','w','d','h','e','a','d','i','n','g','\0', +'H','O','M','E','\0', +'h','e','a','d','e','r','\0', +'h','e','a','d','l','i','n','e','\0', +'h','e','a','d','l','i','n','e','-','b','i','d','i','\0', +'h','i','s','t','o','r','y','-','f','i','l','e','\0', +'h','i','s','t','o','r','y','-','g','a','b','b','y','\0', +'h','i','s','t','o','r','y','-','g','a','b','b','y','-','p','e','r','s','i','s','t','\0', +'h','i','s','t','o','r','y','-','s','i','z','e','\0', +'h','o','l','d','\0', +'h','o','s','t','n','a','m','e','\0', +'i','d','n','a','-','d','i','s','a','b','l','e','\0', +'i','f','s','\0', +'i','f','s','-','w','s','\0', +'i','g','n','o','r','e','\0', +'i','g','n','o','r','e','e','o','f','\0', +'i','n','b','o','x','\0', +'i','n','d','e','n','t','p','r','e','f','i','x','\0', +'k','e','e','p','\0', +'k','e','e','p','-','c','o','n','t','e','n','t','-','l','e','n','g','t','h','\0', +'k','e','e','p','s','a','v','e','\0', +'L','A','N','G','\0', +'L','C','_','A','L','L','\0', +'L','C','_','C','T','Y','P','E','\0', +'L','I','N','E','S','\0', +'L','I','S','T','E','R','\0', +'L','O','G','N','A','M','E','\0', +'l','i','n','e','-','e','d','i','t','o','r','-','d','i','s','a','b','l','e','\0', +'l','i','n','e','-','e','d','i','t','o','r','-','n','o','-','d','e','f','a','u','l','t','s','\0', +'l','o','g','-','p','r','e','f','i','x','\0', +'M','A','I','L','\0', +'M','A','I','L','R','C','\0', +'M','A','I','L','X','_','N','O','_','S','Y','S','T','E','M','_','R','C','\0', +'M','B','O','X','\0', +'m','a','i','l','b','o','x','-','r','e','s','o','l','v','e','d','\0', +'m','a','i','l','b','o','x','-','d','i','s','p','l','a','y','\0', +'m','a','i','l','x','-','e','x','t','r','a','-','r','c','\0', +'m','a','r','k','a','n','s','w','e','r','e','d','\0', +'m','b','o','x','-','r','f','c','4','1','5','5','\0', +'m','e','m','d','e','b','u','g','\0', +'m','e','s','s','a','g','e','-','i','d','-','d','i','s','a','b','l','e','\0', +'m','e','s','s','a','g','e','-','i','n','j','e','c','t','-','h','e','a','d','\0', +'m','e','s','s','a','g','e','-','i','n','j','e','c','t','-','t','a','i','l','\0', +'m','e','t','o','o','\0', +'m','i','m','e','-','a','l','l','o','w','-','t','e','x','t','-','c','o','n','t','r','o','l','s','\0', +'m','i','m','e','-','a','l','t','e','r','n','a','t','i','v','e','-','f','a','v','o','u','r','-','r','i','c','h','\0', +'m','i','m','e','-','c','o','u','n','t','e','r','-','e','v','i','d','e','n','c','e','\0', +'m','i','m','e','-','e','n','c','o','d','i','n','g','\0', +'m','i','m','e','t','y','p','e','s','-','l','o','a','d','-','c','o','n','t','r','o','l','\0', +'m','t','a','\0', +'m','t','a','-','a','r','g','u','m','e','n','t','s','\0', +'m','t','a','-','n','o','-','d','e','f','a','u','l','t','-','a','r','g','u','m','e','n','t','s','\0', +'m','t','a','-','a','r','g','v','0','\0', +'m','a','i','l','x','-','c','o','m','m','a','n','d','\0', +'m','a','i','l','x','-','s','u','b','j','e','c','t','\0', +'m','a','i','l','x','-','f','r','o','m','\0', +'m','a','i','l','x','-','s','e','n','d','e','r','\0', +'m','a','i','l','x','-','t','o','\0', +'m','a','i','l','x','-','c','c','\0', +'m','a','i','l','x','-','b','c','c','\0', +'m','a','i','l','x','-','r','a','w','-','t','o','\0', +'m','a','i','l','x','-','r','a','w','-','c','c','\0', +'m','a','i','l','x','-','r','a','w','-','b','c','c','\0', +'m','a','i','l','x','-','o','r','i','g','-','f','r','o','m','\0', +'m','a','i','l','x','-','o','r','i','g','-','t','o','\0', +'m','a','i','l','x','-','o','r','i','g','-','c','c','\0', +'m','a','i','l','x','-','o','r','i','g','-','b','c','c','\0', +'N','A','I','L','_','E','X','T','R','A','_','R','C','\0', +'N','A','I','L','_','N','O','_','S','Y','S','T','E','M','_','R','C','\0', +'N','A','I','L','_','H','E','A','D','\0', +'N','A','I','L','_','H','I','S','T','F','I','L','E','\0', +'N','A','I','L','_','H','I','S','T','S','I','Z','E','\0', +'N','A','I','L','_','T','A','I','L','\0', +'N','E','T','R','C','\0', +'n','e','t','r','c','-','l','o','o','k','u','p','\0', +'n','e','t','r','c','-','p','i','p','e','\0', +'n','e','w','f','o','l','d','e','r','s','\0', +'n','e','w','m','a','i','l','\0', +'o','n','-','c','o','m','p','o','s','e','-','c','l','e','a','n','u','p','\0', +'o','n','-','c','o','m','p','o','s','e','-','e','n','t','e','r','\0', +'o','n','-','c','o','m','p','o','s','e','-','l','e','a','v','e','\0', +'o','n','-','c','o','m','p','o','s','e','-','s','p','l','i','c','e','\0', +'o','n','-','c','o','m','p','o','s','e','-','s','p','l','i','c','e','-','s','h','e','l','l','\0', +'o','n','-','r','e','s','e','n','d','-','c','l','e','a','n','u','p','\0', +'o','n','-','r','e','s','e','n','d','-','e','n','t','e','r','\0', +'o','u','t','f','o','l','d','e','r','\0', +'P','A','G','E','R','\0', +'P','A','T','H','\0', +'P','O','S','I','X','L','Y','_','C','O','R','R','E','C','T','\0', +'p','a','g','e','\0', +'p','a','s','s','w','o','r','d','\0', +'p','i','p','e','r','a','w','\0', +'p','o','p','3','-','a','u','t','h','\0', +'p','o','p','3','-','b','u','l','k','-','l','o','a','d','\0', +'p','o','p','3','-','k','e','e','p','a','l','i','v','e','\0', +'p','o','p','3','-','n','o','-','a','p','o','p','\0', +'p','o','p','3','-','u','s','e','-','s','t','a','r','t','t','l','s','\0', +'p','o','s','i','x','\0', +'p','r','i','n','t','-','a','l','t','e','r','n','a','t','i','v','e','s','\0', +'p','r','o','m','p','t','\0', +'p','r','o','m','p','t','2','\0', +'q','u','i','e','t','\0', +'q','u','o','t','e','\0', +'q','u','o','t','e','-','a','s','-','a','t','t','a','c','h','m','e','n','t','\0', +'q','u','o','t','e','-','f','o','l','d','\0', +'r','-','o','p','t','i','o','n','-','i','m','p','l','i','c','i','t','\0', +'r','e','c','i','p','i','e','n','t','s','-','i','n','-','c','c','\0', +'r','e','c','o','r','d','\0', +'r','e','c','o','r','d','-','f','i','l','e','s','\0', +'r','e','c','o','r','d','-','r','e','s','e','n','t','\0', +'r','e','p','l','y','-','i','n','-','s','a','m','e','-','c','h','a','r','s','e','t','\0', +'r','e','p','l','y','-','s','t','r','i','n','g','s','\0', +'r','e','p','l','y','t','o','\0', +'r','e','p','l','y','-','t','o','-','h','o','n','o','u','r','\0', +'r','f','c','8','2','2','-','b','o','d','y','-','f','r','o','m','_','\0', +'S','H','E','L','L','\0', +'S','Y','S','V','3','\0', +'s','a','v','e','\0', +'s','c','r','e','e','n','\0', +'s','e','a','r','c','h','h','e','a','d','e','r','s','\0', +'s','e','n','d','c','h','a','r','s','e','t','s','\0', +'s','e','n','d','c','h','a','r','s','e','t','s','-','e','l','s','e','-','t','t','y','c','h','a','r','s','e','t','\0', +'s','e','n','d','e','r','\0', +'s','e','n','d','m','a','i','l','\0', +'s','e','n','d','m','a','i','l','-','a','r','g','u','m','e','n','t','s','\0', +'s','e','n','d','m','a','i','l','-','n','o','-','d','e','f','a','u','l','t','-','a','r','g','u','m','e','n','t','s','\0', +'s','e','n','d','m','a','i','l','-','p','r','o','g','n','a','m','e','\0', +'s','e','n','d','w','a','i','t','\0', +'s','h','o','w','l','a','s','t','\0', +'s','h','o','w','n','a','m','e','\0', +'s','h','o','w','t','o','\0', +'S','i','g','n','\0', +'s','i','g','n','\0', +'s','i','g','n','a','t','u','r','e','\0', +'s','k','i','p','e','m','p','t','y','b','o','d','y','\0', +'s','m','i','m','e','-','c','a','-','d','i','r','\0', +'s','m','i','m','e','-','c','a','-','f','i','l','e','\0', +'s','m','i','m','e','-','c','a','-','f','l','a','g','s','\0', +'s','m','i','m','e','-','c','a','-','n','o','-','d','e','f','a','u','l','t','s','\0', +'s','m','i','m','e','-','c','i','p','h','e','r','\0', +'s','m','i','m','e','-','c','r','l','-','d','i','r','\0', +'s','m','i','m','e','-','c','r','l','-','f','i','l','e','\0', +'s','m','i','m','e','-','f','o','r','c','e','-','e','n','c','r','y','p','t','i','o','n','\0', +'s','m','i','m','e','-','n','o','-','d','e','f','a','u','l','t','-','c','a','\0', +'s','m','i','m','e','-','s','i','g','n','\0', +'s','m','i','m','e','-','s','i','g','n','-','c','e','r','t','\0', +'s','m','i','m','e','-','s','i','g','n','-','i','n','c','l','u','d','e','-','c','e','r','t','s','\0', +'s','m','i','m','e','-','s','i','g','n','-','m','e','s','s','a','g','e','-','d','i','g','e','s','t','\0', +'s','m','t','p','\0', +'s','m','t','p','-','a','u','t','h','\0', +'s','m','t','p','-','a','u','t','h','-','p','a','s','s','w','o','r','d','\0', +'s','m','t','p','-','a','u','t','h','-','u','s','e','r','\0', +'s','m','t','p','-','h','o','s','t','n','a','m','e','\0', +'s','m','t','p','-','u','s','e','-','s','t','a','r','t','t','l','s','\0', +'S','O','U','R','C','E','_','D','A','T','E','_','E','P','O','C','H','\0', +'s','o','c','k','s','-','p','r','o','x','y','\0', +'s','p','a','m','-','i','n','t','e','r','f','a','c','e','\0', +'s','p','a','m','-','m','a','x','s','i','z','e','\0', +'s','p','a','m','c','-','c','o','m','m','a','n','d','\0', +'s','p','a','m','c','-','a','r','g','u','m','e','n','t','s','\0', +'s','p','a','m','c','-','u','s','e','r','\0', +'s','p','a','m','d','-','s','o','c','k','e','t','\0', +'s','p','a','m','d','-','u','s','e','r','\0', +'s','p','a','m','f','i','l','t','e','r','-','h','a','m','\0', +'s','p','a','m','f','i','l','t','e','r','-','n','o','h','a','m','\0', +'s','p','a','m','f','i','l','t','e','r','-','n','o','s','p','a','m','\0', +'s','p','a','m','f','i','l','t','e','r','-','r','a','t','e','\0', +'s','p','a','m','f','i','l','t','e','r','-','r','a','t','e','-','s','c','a','n','s','c','o','r','e','\0', +'s','p','a','m','f','i','l','t','e','r','-','s','p','a','m','\0', +'s','s','l','-','c','a','-','d','i','r','\0', +'s','s','l','-','c','a','-','f','i','l','e','\0', +'s','s','l','-','c','a','-','f','l','a','g','s','\0', +'s','s','l','-','c','a','-','n','o','-','d','e','f','a','u','l','t','s','\0', +'s','s','l','-','c','e','r','t','\0', +'s','s','l','-','c','i','p','h','e','r','-','l','i','s','t','\0', +'s','s','l','-','c','o','n','f','i','g','-','f','i','l','e','\0', +'s','s','l','-','c','u','r','v','e','s','\0', +'s','s','l','-','c','r','l','-','d','i','r','\0', +'s','s','l','-','c','r','l','-','f','i','l','e','\0', +'s','s','l','-','k','e','y','\0', +'s','s','l','-','m','e','t','h','o','d','\0', +'s','s','l','-','n','o','-','d','e','f','a','u','l','t','-','c','a','\0', +'s','s','l','-','p','r','o','t','o','c','o','l','\0', +'s','s','l','-','r','a','n','d','-','e','g','d','\0', +'s','s','l','-','r','a','n','d','-','f','i','l','e','\0', +'s','s','l','-','v','e','r','i','f','y','\0', +'s','t','e','a','l','t','h','m','u','a','\0', +'T','E','R','M','\0', +'T','M','P','D','I','R','\0', +'t','e','r','m','c','a','p','\0', +'t','e','r','m','c','a','p','-','c','a','-','m','o','d','e','\0', +'t','e','r','m','c','a','p','-','d','i','s','a','b','l','e','\0', +'t','o','p','l','i','n','e','s','\0', +'t','o','p','s','q','u','e','e','z','e','\0', +'t','t','y','c','h','a','r','s','e','t','\0', +'t','y','p','e','s','c','r','i','p','t','-','m','o','d','e','\0', +'U','S','E','R','\0', +'u','m','a','s','k','\0', +'u','s','e','r','\0', +'V','I','S','U','A','L','\0', +'v','1','5','-','c','o','m','p','a','t','\0', +'v','e','r','b','o','s','e','\0', +'v','e','r','s','i','o','n','\0', +'v','e','r','s','i','o','n','-','d','a','t','e','\0', +'v','e','r','s','i','o','n','-','m','a','j','o','r','\0', +'v','e','r','s','i','o','n','-','m','i','n','o','r','\0', +'v','e','r','s','i','o','n','-','u','p','d','a','t','e','\0', +'w','r','i','t','e','b','a','c','k','e','d','i','t','e','d','\0', +'d','i','s','c','o','n','n','e','c','t','e','d','\0', +'i','m','a','p','-','a','u','t','h','\0', +'i','m','a','p','-','c','a','c','h','e','\0', +'i','m','a','p','-','d','e','l','i','m','\0', +'i','m','a','p','-','k','e','e','p','a','l','i','v','e','\0', +'i','m','a','p','-','l','i','s','t','-','d','e','p','t','h','\0', +'i','m','a','p','-','u','s','e','-','s','t','a','r','t','t','l','s','\0', +}; + +n_CTA(a_AMV_VF_NONE == 0, "Value not 0 as expected"); +static struct a_amv_var_map const a_amv_var_map[] = { +{2488521081u, 0u, 0|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{63u, 16u, 0|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{33u, 18u, 0|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{419304365u, 20u, 0|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3722159545u, 28u, 0|a_AMV_VF_BOOL}, +{838023451u, 48u, 0}, +{3928217024u, 67u, 0|a_AMV_VF_BOOL}, +{3933094936u, 74u, 0|a_AMV_VF_BOOL}, +{109535u, 81u, 0|a_AMV_VF_BOOL}, +{437227595u, 85u, 0|a_AMV_VF_BOOL}, +{1544133716u, 94u, 0|a_AMV_VF_BOOL}, +{3936469383u, 104u, 0|a_AMV_VF_BOOL}, +{119286981u, 111u, 0|a_AMV_VF_BOOL}, +{1055088464u, 117u, 0|a_AMV_VF_BOOL}, +{3936488489u, 125u, 0|a_AMV_VF_BOOL|a_AMV_VF_I3VAL}, +{2100791799u, 132u, 0}, +{1143881025u, 141u, 0}, +{3939178815u, 149u, 0}, +{2551200844u, 156u, 0|a_AMV_VF_BOOL}, +{163072614u, 169u, 0|a_AMV_VF_BOOL}, +{1231424433u, 179u, 0|a_AMV_VF_BOOL}, +{3388960065u, 190u, 0}, +{3631192u, 199u, 0|a_AMV_VF_BOOL}, +{625280330u, 204u, 0|a_AMV_VF_BOOL}, +{321383761u, 224u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, +{170960u, 237u, 0|a_AMV_VF_BOOL}, +{3120210877u, 249u, 0|a_AMV_VF_BOOL}, +{4132654694u, 259u, 0|a_AMV_VF_BOOL}, +{2716084787u, 268u, 0|a_AMV_VF_BOOL}, +{2338050259u, 280u, 0|a_AMV_VF_BOOL}, +{4143546805u, 288u, 0|a_AMV_VF_BOOL}, +{2623071967u, 297u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3690146504u, 306u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3813975201u, 318u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV}, +{358823789u, 326u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER}, +{358859726u, 339u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER}, +{3269304427u, 352u, 0|a_AMV_VF_LOWER}, +{111508u, 373u, 0}, +{482327989u, 377u, 0|a_AMV_VF_BOOL}, +{2857965296u, 392u, 0|a_AMV_VF_BOOL}, +{2717291452u, 405u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{2294912087u, 418u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{111689u, 430u, 0|a_AMV_VF_POSNUM}, +{2974539481u, 434u, 0|a_AMV_VF_NOCNTRLS}, +{2521070u, 444u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{3657134018u, 449u, 0|a_AMV_VF_I3VAL}, +{2384089013u, 459u, 0|a_AMV_VF_I3VAL}, +{122332423u, 483u, 0|a_AMV_VF_BOOL|a_AMV_VF_VIP}, +{1691626112u, 489u, 0|a_AMV_VF_BOOL}, +{112679u, 519u, 0|a_AMV_VF_BOOL}, +{1781498776u, 523u, 0|a_AMV_VF_BOOL}, +{2783702311u, 544u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{3877730807u, 551u, 0|a_AMV_VF_BOOL}, +{1055429730u, 561u, 0|a_AMV_VF_BOOL}, +{2449114909u, 573u, 0|a_AMV_VF_BOOL}, +{947851527u, 584u, 0}, +{1894672387u, 593u, 0|a_AMV_VF_BOOL}, +{4092722801u, 601u, 0|a_AMV_VF_DEFVAL}, +{3254669595u, 608u, 0}, +{3254684944u, 619u, 0}, +{1806590975u, 630u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{124963293u, 639u, 0|a_AMV_VF_BOOL}, +{4127440860u, 645u, 0|a_AMV_VF_VIP}, +{3875607917u, 652u, 0|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3184215642u, 668u, 0}, +{845432648u, 680u, 0|a_AMV_VF_BOOL}, +{1360940784u, 692u, 0}, +{2102400300u, 711u, 0|a_AMV_VF_BOOL}, +{1488952766u, 733u, 0}, +{3793492u, 753u, 0}, +{3777473511u, 758u, 0|a_AMV_VF_BOOL}, +{1142629489u, 768u, 0}, +{2676105u, 779u, 0|a_AMV_VF_IMPORT|a_AMV_VF_NODEL|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, +{4193457129u, 784u, 0|a_AMV_VF_BOOL|a_AMV_VF_I3VAL}, +{1124823322u, 791u, 0}, +{3102083359u, 800u, 0}, +{78202687u, 814u, 0}, +{2581576228u, 827u, 0|a_AMV_VF_BOOL}, +{4251937947u, 841u, 0|a_AMV_VF_BOOL}, +{78670330u, 863u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, +{3861991u, 876u, 0|a_AMV_VF_BOOL}, +{1878076063u, 881u, 0}, +{2723216029u, 890u, 0|a_AMV_VF_BOOL}, +{117826u, 903u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_VIP}, +{4234366009u, 907u, 0|a_AMV_VF_I3VAL|a_AMV_VF_RDONLY|a_AMV_VF_NODEL|a_AMV_VF_VIP}, +{4235443940u, 914u, 0|a_AMV_VF_BOOL}, +{4097949886u, 921u, 0|a_AMV_VF_BOOL}, +{128585280u, 931u, 0}, +{1578583856u, 937u, 0}, +{3958693u, 950u, 0|a_AMV_VF_BOOL}, +{3727474588u, 955u, 0|a_AMV_VF_BOOL}, +{302149108u, 975u, 0|a_AMV_VF_BOOL}, +{2804642u, 984u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, +{3057233959u, 989u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, +{730803155u, 996u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, +{92840699u, 1005u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV}, +{3063938707u, 1011u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{2546090755u, 1018u, 0|a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_ENV}, +{4215099357u, 1026u, 0|a_AMV_VF_BOOL}, +{141716907u, 1046u, 0|a_AMV_VF_BOOL}, +{3664601053u, 1070u, 0|a_AMV_VF_I3VAL|a_AMV_VF_NODEL}, +{2840419u, 1081u, 0|a_AMV_VF_ENV}, +{3093219064u, 1086u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{3820534927u, 1093u, 0|a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_ENV}, +{2841718u, 1112u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{1907587133u, 1117u, 0|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{745355887u, 1134u, 0|a_AMV_VF_NOLOPTS|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{1698534702u, 1150u, 0}, +{2312309028u, 1165u, 0|a_AMV_VF_BOOL}, +{68323757u, 1178u, 0|a_AMV_VF_BOOL}, +{4233006470u, 1191u, 0|a_AMV_VF_BOOL|a_AMV_VF_VIP}, +{130334368u, 1200u, 0|a_AMV_VF_BOOL}, +{125627982u, 1219u, 0}, +{126055142u, 1239u, 0}, +{133025124u, 1259u, 0|a_AMV_VF_BOOL}, +{3414355303u, 1265u, 0|a_AMV_VF_BOOL}, +{3908858503u, 1290u, 0|a_AMV_VF_BOOL}, +{3192709189u, 1319u, 0|a_AMV_VF_POSNUM}, +{4065047964u, 1341u, 0}, +{1028657528u, 1355u, 0}, +{122626u, 1378u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY}, +{2713248165u, 1382u, 0}, +{4035420705u, 1396u, 0|a_AMV_VF_BOOL}, +{1102401135u, 1421u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY}, +{2964610855u, 1431u, 0|a_AMV_VF_RDONLY}, +{2374925304u, 1445u, 0|a_AMV_VF_RDONLY}, +{1468779164u, 1459u, 0|a_AMV_VF_RDONLY}, +{2265976329u, 1470u, 0|a_AMV_VF_RDONLY}, +{3215672747u, 1483u, 0|a_AMV_VF_RDONLY}, +{3215672174u, 1492u, 0|a_AMV_VF_RDONLY}, +{3037965648u, 1501u, 0|a_AMV_VF_RDONLY}, +{2222361282u, 1511u, 0|a_AMV_VF_RDONLY}, +{2222360709u, 1524u, 0|a_AMV_VF_RDONLY}, +{323458375u, 1537u, 0|a_AMV_VF_RDONLY}, +{2756351450u, 1551u, 0|a_AMV_VF_RDONLY}, +{1394747753u, 1567u, 0|a_AMV_VF_RDONLY}, +{1394747180u, 1581u, 0|a_AMV_VF_RDONLY}, +{3076982990u, 1595u, 0|a_AMV_VF_RDONLY}, +{4280681563u, 1610u, 0}, +{2845755096u, 1624u, 0|a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_ENV}, +{639934357u, 1642u, 0}, +{1058233243u, 1652u, 0}, +{1058700886u, 1666u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_NUM}, +{640361517u, 1680u, 0}, +{95075740u, 1690u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{1137717571u, 1696u, 0|a_AMV_VF_BOOL}, +{4047680087u, 1709u, 0}, +{985178617u, 1720u, 0}, +{130414157u, 1731u, 0}, +{1856115125u, 1739u, 0|a_AMV_VF_NOTEMPTY}, +{3372302411u, 1758u, 0|a_AMV_VF_NOTEMPTY}, +{3380260282u, 1775u, 0|a_AMV_VF_NOTEMPTY}, +{166813677u, 1792u, 0|a_AMV_VF_NOTEMPTY}, +{2352662354u, 1810u, 0|a_AMV_VF_NOTEMPTY}, +{2040708256u, 1834u, 0|a_AMV_VF_NOTEMPTY}, +{1802777718u, 1852u, 0|a_AMV_VF_NOTEMPTY}, +{1400017300u, 1868u, 0|a_AMV_VF_BOOL}, +{97289263u, 1878u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{2948589u, 1884u, 0|a_AMV_VF_IMPORT|a_AMV_VF_NODEL|a_AMV_VF_ENV}, +{449570441u, 1889u, 0|a_AMV_VF_BOOL|a_AMV_VF_IMPORT|a_AMV_VF_VIP|a_AMV_VF_ENV}, +{4134077u, 1905u, 0|a_AMV_VF_BOOL}, +{2621674035u, 1910u, 0}, +{2861320984u, 1919u, 0|a_AMV_VF_BOOL}, +{2396252929u, 1927u, 0}, +{275342634u, 1937u, 0|a_AMV_VF_BOOL}, +{1495995749u, 1952u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, +{3632267817u, 1967u, 0|a_AMV_VF_BOOL}, +{43237290u, 1980u, 0|a_AMV_VF_BOOL}, +{136940979u, 1998u, 0|a_AMV_VF_BOOL|a_AMV_VF_VIP}, +{1388395788u, 2004u, 0|a_AMV_VF_BOOL}, +{227503234u, 2023u, 0|a_AMV_VF_I3VAL}, +{3212639476u, 2030u, 0|a_AMV_VF_I3VAL}, +{138331496u, 2038u, 0|a_AMV_VF_BOOL}, +{138338510u, 2044u, 0}, +{3820786885u, 2050u, 0|a_AMV_VF_BOOL}, +{1182381408u, 2070u, 0}, +{295311392u, 2081u, 0|a_AMV_VF_BOOL}, +{682388781u, 2099u, 0|a_AMV_VF_BOOL}, +{289928031u, 2116u, 0}, +{863507199u, 2123u, 0|a_AMV_VF_BOOL}, +{3191066333u, 2136u, 0|a_AMV_VF_BOOL}, +{3710195994u, 2150u, 0|a_AMV_VF_BOOL}, +{4144529571u, 2172u, 0}, +{993007855u, 2186u, 0}, +{4037862148u, 2194u, 0}, +{145783858u, 2210u, 0|a_AMV_VF_BOOL}, +{101096632u, 2228u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{101723112u, 2234u, 0|a_AMV_VF_BOOL|a_AMV_VF_ENV}, +{4242383u, 2240u, 0|a_AMV_VF_BOOL|a_AMV_VF_I3VAL}, +{327219328u, 2245u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, +{2344495826u, 2252u, 0|a_AMV_VF_BOOL}, +{1707020871u, 2266u, 0|a_AMV_VF_LOWER}, +{259282709u, 2279u, 0|a_AMV_VF_BOOL}, +{329446337u, 2308u, 0}, +{2285047981u, 2315u, 0}, +{2932368656u, 2324u, 0}, +{1421298860u, 2343u, 0|a_AMV_VF_BOOL}, +{4267157331u, 2373u, 0}, +{2285407359u, 2391u, 0|a_AMV_VF_BOOL}, +{1926116885u, 2400u, 0|a_AMV_VF_BOOL}, +{1926188546u, 2409u, 0|a_AMV_VF_BOOL}, +{333061220u, 2418u, 0|a_AMV_VF_BOOL}, +{3100625u, 2425u, 0}, +{4250609u, 2430u, 0}, +{994697266u, 2435u, 0}, +{3875901652u, 2445u, 0|a_AMV_VF_BOOL|a_AMV_VF_VIP}, +{3002585464u, 2459u, 0}, +{301144281u, 2472u, 0}, +{1347922694u, 2486u, 0}, +{1918790587u, 2501u, 0|a_AMV_VF_BOOL}, +{3014484835u, 2522u, 0}, +{1039105045u, 2535u, 0}, +{4225767190u, 2549u, 0}, +{3116904399u, 2564u, 0|a_AMV_VF_BOOL}, +{3384448360u, 2587u, 0|a_AMV_VF_BOOL}, +{105885657u, 2607u, 0|a_AMV_VF_BOOL}, +{2215302260u, 2618u, 0}, +{1036659416u, 2634u, 0}, +{3719373112u, 2659u, 0}, +{4255396u, 2685u, 0}, +{3589879203u, 2690u, 0}, +{1996663907u, 2700u, 0}, +{2594939183u, 2719u, 0}, +{2613227248u, 2734u, 0}, +{1310886988u, 2748u, 0|a_AMV_VF_BOOL}, +{3578734108u, 2766u, 0|a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM|a_AMV_VF_ENV}, +{2053806514u, 2784u, 0|a_AMV_VF_NOTEMPTY}, +{2190606319u, 2796u, 0}, +{2952684415u, 2811u, 0|a_AMV_VF_NOTEMPTY|a_AMV_VF_POSNUM}, +{3055596256u, 2824u, 0}, +{3800420503u, 2838u, 0}, +{4245507488u, 2854u, 0}, +{1558523435u, 2865u, 0}, +{4284642881u, 2878u, 0}, +{2420736634u, 2889u, 0}, +{3374858487u, 2904u, 0}, +{3996559026u, 2921u, 0}, +{2575257296u, 2939u, 0}, +{4190460190u, 2955u, 0}, +{2575308949u, 2981u, 0}, +{1179440559u, 2997u, 0}, +{266904560u, 3008u, 0}, +{218011901u, 3020u, 0}, +{2201204466u, 3033u, 0|a_AMV_VF_BOOL}, +{3041879213u, 3052u, 0}, +{2789248355u, 3061u, 0}, +{390091074u, 3077u, 0}, +{1205658103u, 3093u, 0}, +{1004865324u, 3104u, 0}, +{3095856397u, 3116u, 0}, +{2825347880u, 3129u, 0}, +{1578094240u, 3137u, 0}, +{1961350591u, 3148u, 0|a_AMV_VF_BOOL}, +{3286757489u, 3166u, 0}, +{2083698465u, 3179u, 0}, +{42611089u, 3192u, 0}, +{1930241716u, 3206u, 0}, +{4266102040u, 3217u, 0}, +{3096632u, 3228u, 0|a_AMV_VF_ENV}, +{3381640432u, 3233u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_IMPORT|a_AMV_VF_NOTEMPTY|a_AMV_VF_VIP|a_AMV_VF_ENV}, +{3578326988u, 3240u, 0}, +{3489285231u, 3248u, 0|a_AMV_VF_BOOL}, +{881438381u, 3264u, 0|a_AMV_VF_BOOL}, +{2071224238u, 3280u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_NUM}, +{1477079445u, 3289u, 0|a_AMV_VF_BOOL}, +{113531019u, 3300u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_LOWER}, +{99884489u, 3311u, 0|a_AMV_VF_BOOL|a_AMV_VF_VIP}, +{3147391u, 3327u, 0|a_AMV_VF_IMPORT|a_AMV_VF_RDONLY|a_AMV_VF_ENV}, +{142779425u, 3332u, 0|a_AMV_VF_I3VAL|a_AMV_VF_NODEL|a_AMV_VF_POSNUM|a_AMV_VF_VIP}, +{4333311u, 3338u, 0}, +{3455293588u, 3343u, 0|a_AMV_VF_DEFVAL|a_AMV_VF_NOTEMPTY|a_AMV_VF_ENV}, +{2303937485u, 3350u, 0|a_AMV_VF_BOOL}, +{1865913974u, 3361u, 0|a_AMV_VF_BOOL|a_AMV_VF_VIP}, +{1866518246u, 3369u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{2581258033u, 3377u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3587799308u, 3390u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3588091160u, 3404u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{2763901430u, 3418u, 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL}, +{3469190955u, 3433u, 0|a_AMV_VF_BOOL}, +{989496243u, 3449u, 0|a_AMV_VF_BOOL}, +{2458536262u, 3462u, 0}, +{3823920008u, 3472u, 0}, +{3825259519u, 3483u, 0}, +{75507402u, 3494u, 0}, +{270835474u, 3509u, 0}, +{1934791407u, 3525u, 0|a_AMV_VF_BOOL}, +}; + +#ifndef __CREATE_OKEY_MAP_PL +# ifdef HAVE_PUTENV +# define a_X(X) X +# else +# define a_X(X) +# endif + +/* Unfortunately init of varsized buffer won't work: define "subclass"es */ +static char const a_amv_var_virt_build_os_val[] = {VAL_BUILD_OS}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[8 +1]; +} const a_amv_var_virt_build_os = {NULL, a_amv_var_virt_build_os_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "build-os"}; + +static char const a_amv_var_virt_build_osenv_val[] = {VAL_BUILD_OSENV}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[11 +1]; +} const a_amv_var_virt_build_osenv = {NULL, a_amv_var_virt_build_osenv_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "build-osenv"}; + +static char const a_amv_var_virt_contact_mail_val[] = {VAL_CONTACT_MAIL}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[12 +1]; +} const a_amv_var_virt_contact_mail = {NULL, a_amv_var_virt_contact_mail_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "contact-mail"}; + +static char const a_amv_var_virt_contact_web_val[] = {VAL_CONTACT_WEB}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[11 +1]; +} const a_amv_var_virt_contact_web = {NULL, a_amv_var_virt_contact_web_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "contact-web"}; + +static char const a_amv_var_virt_features_val[] = {VAL_FEATURES}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[8 +1]; +} const a_amv_var_virt_features = {NULL, a_amv_var_virt_features_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "features"}; + +static char const a_amv_var_virt_version_val[] = {n_VERSION}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[7 +1]; +} const a_amv_var_virt_version = {NULL, a_amv_var_virt_version_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version"}; + +static char const a_amv_var_virt_version_date_val[] = {n_VERSION_DATE}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[12 +1]; +} const a_amv_var_virt_version_date = {NULL, a_amv_var_virt_version_date_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-date"}; + +static char const a_amv_var_virt_version_major_val[] = {n_VERSION_MAJOR}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[13 +1]; +} const a_amv_var_virt_version_major = {NULL, a_amv_var_virt_version_major_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-major"}; + +static char const a_amv_var_virt_version_minor_val[] = {n_VERSION_MINOR}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[13 +1]; +} const a_amv_var_virt_version_minor = {NULL, a_amv_var_virt_version_minor_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-minor"}; + +static char const a_amv_var_virt_version_update_val[] = {n_VERSION_UPDATE}; +static struct{ +struct a_amv_var *av_link; +char const *av_value; +a_X(char *av_env;) +ui16_t av_flags; +char const av_name[14 +1]; +} const a_amv_var_virt_version_update = {NULL, a_amv_var_virt_version_update_val, a_X(0 COMMA) 0|a_AMV_VF_VIRT|a_AMV_VF_RDONLY|a_AMV_VF_NODEL, "version-update"}; + +# undef a_X + +#define a_AMV_VAR_VIRTS_CNT 10 +static struct a_amv_var_virt const a_amv_var_virts[] = { +{ok_v_build_os, {0,}, (void const*)&a_amv_var_virt_build_os}, +{ok_v_build_osenv, {0,}, (void const*)&a_amv_var_virt_build_osenv}, +{ok_v_contact_mail, {0,}, (void const*)&a_amv_var_virt_contact_mail}, +{ok_v_contact_web, {0,}, (void const*)&a_amv_var_virt_contact_web}, +{ok_v_features, {0,}, (void const*)&a_amv_var_virt_features}, +{ok_v_version, {0,}, (void const*)&a_amv_var_virt_version}, +{ok_v_version_date, {0,}, (void const*)&a_amv_var_virt_version_date}, +{ok_v_version_major, {0,}, (void const*)&a_amv_var_virt_version_major}, +{ok_v_version_minor, {0,}, (void const*)&a_amv_var_virt_version_minor}, +{ok_v_version_update, {0,}, (void const*)&a_amv_var_virt_version_update}, +}; + +#define a_AMV_VAR_I3VALS_CNT 10 +static struct a_amv_var_defval const a_amv_var_i3vals[] = { +{ok_b_asksub, {0,}, NULL}, +{ok_v_datefield, {0,}, "%Y-%m-%d %H:%M"}, +{ok_v_datefield_markout_older, {0,}, "%Y-%m-%d"}, +{ok_b_header, {0,}, NULL}, +{ok_v_ifs_ws, {0,}, " \t\n"}, +{ok_v_log_prefix, {0,}, VAL_UAGENT ": "}, +{ok_v_prompt, {0,}, "? "}, +{ok_v_prompt2, {0,}, ".. "}, +{ok_b_save, {0,}, NULL}, +{ok_v_umask, {0,}, "0077"}, +}; + +#define a_AMV_VAR_DEFVALS_CNT 18 +static struct a_amv_var_defval const a_amv_var_defvals[] = { +{ok_v_DEAD, {0,}, VAL_DEAD}, +{ok_v_EDITOR, {0,}, VAL_EDITOR}, +{ok_v_LISTER, {0,}, VAL_LISTER}, +{ok_v_MAILRC, {0,}, VAL_MAILRC}, +{ok_v_MBOX, {0,}, VAL_MBOX}, +{ok_v_NETRC, {0,}, VAL_NETRC}, +{ok_v_PAGER, {0,}, VAL_PAGER}, +{ok_v_SHELL, {0,}, VAL_SHELL}, +{ok_v_TMPDIR, {0,}, VAL_TMPDIR}, +{ok_v_VISUAL, {0,}, VAL_VISUAL}, +{ok_v_charset_7bit, {0,}, CHARSET_7BIT}, +{ok_v_charset_8bit, {0,}, CHARSET_8BIT}, +{ok_v_escape, {0,}, n_ESCAPE}, +{ok_v_ifs, {0,}, " \t\n"}, +{ok_v_mta, {0,}, VAL_MTA}, +{ok_v_mta_argv0, {0,}, VAL_MTA_ARGV0}, +{ok_v_toplines, {0,}, "5"}, +{ok_v_ttycharset, {0,}, CHARSET_8BIT}, +}; +#endif /* __CREATE_OKEY_MAP_PL */ + +#define a_AMV_VAR__SPECIAL_PARAM_MAP_IDX 0u +#define a_AMV_VAR__QM_MAP_IDX 1u +#define a_AMV_VAR__EM_MAP_IDX 2u + +#define a_AMV_VAR_REV_ILL 286u +#define a_AMV_VAR_REV_PRIME 661u +#define a_AMV_VAR_REV_LONGEST 5u +#define a_AMV_VAR_REV_WRAPAROUND 0 +static ui16_t const a_amv_var_revmap[a_AMV_VAR_REV_PRIME] = { +286u,55u,286u,286u,286u,141u,286u,286u,133u,84u, +204u,286u,286u,69u,286u,286u,44u,286u,107u,92u, +286u,286u,286u,286u,149u,286u,286u,286u,286u,155u, +68u,241u,286u,2u,16u,270u,286u,26u,286u,10u, +286u,235u,286u,286u,286u,286u,286u,286u,162u,139u, +132u,283u,150u,247u,286u,286u,286u,286u,29u,91u, +97u,165u,172u,1u,228u,194u,276u,215u,41u,27u, +239u,286u,286u,286u,119u,286u,124u,135u,286u,104u, +286u,182u,286u,286u,286u,188u,52u,153u,286u,286u, +286u,286u,256u,28u,79u,286u,286u,286u,286u,286u, +227u,220u,101u,223u,249u,286u,286u,166u,257u,23u, +286u,286u,286u,286u,183u,286u,286u,286u,58u,96u, +266u,268u,285u,286u,115u,286u,214u,209u,225u,259u, +286u,156u,286u,286u,286u,195u,196u,286u,286u,212u, +286u,286u,286u,177u,144u,151u,218u,110u,126u,45u, +108u,229u,286u,109u,274u,286u,14u,286u,286u,102u, +286u,286u,46u,286u,136u,286u,286u,286u,83u,262u, +286u,192u,64u,271u,200u,286u,286u,7u,244u,0u, +148u,88u,35u,54u,160u,98u,260u,286u,286u,286u, +286u,286u,286u,286u,226u,286u,114u,286u,286u,286u, +48u,286u,286u,62u,286u,286u,286u,286u,286u,272u, +286u,178u,17u,184u,190u,245u,286u,286u,286u,11u, +242u,286u,30u,286u,286u,286u,286u,286u,137u,286u, +286u,286u,286u,94u,286u,206u,286u,286u,286u,286u, +286u,286u,286u,286u,286u,286u,127u,286u,286u,286u, +286u,286u,264u,286u,170u,38u,286u,39u,208u,180u, +286u,286u,286u,286u,13u,59u,286u,286u,286u,191u, +286u,286u,286u,24u,286u,286u,286u,12u,15u,286u, +286u,286u,286u,74u,210u,286u,286u,128u,168u,87u, +286u,286u,286u,286u,286u,286u,286u,286u,286u,286u, +282u,286u,286u,265u,280u,112u,286u,286u,185u,49u, +286u,286u,32u,154u,286u,286u,286u,146u,286u,22u, +286u,142u,169u,286u,252u,286u,286u,273u,63u,286u, +286u,286u,286u,231u,286u,236u,286u,3u,286u,286u, +286u,120u,230u,286u,286u,171u,286u,286u,286u,286u, +181u,286u,286u,286u,286u,286u,163u,286u,286u,286u, +286u,286u,286u,286u,286u,286u,251u,286u,286u,286u, +267u,111u,286u,275u,286u,129u,221u,72u,286u,203u, +5u,224u,286u,286u,286u,255u,286u,286u,176u,106u, +286u,286u,286u,286u,130u,279u,286u,286u,286u,286u, +286u,286u,286u,254u,90u,86u,145u,77u,286u,286u, +36u,286u,152u,240u,261u,286u,286u,286u,286u,73u, +118u,147u,25u,216u,286u,286u,286u,140u,65u,80u, +253u,286u,71u,40u,243u,286u,286u,286u,76u,286u, +164u,286u,286u,197u,75u,6u,286u,286u,286u,232u, +286u,286u,286u,286u,53u,238u,269u,286u,286u,113u, +37u,286u,4u,286u,173u,286u,286u,82u,286u,286u, +8u,286u,175u,286u,286u,286u,286u,286u,286u,286u, +286u,286u,43u,121u,286u,286u,211u,286u,286u,286u, +99u,286u,47u,286u,286u,56u,286u,286u,286u,286u, +187u,286u,122u,286u,286u,286u,21u,201u,57u,258u, +85u,286u,286u,286u,286u,286u,286u,286u,286u,286u, +198u,286u,286u,286u,286u,286u,286u,286u,100u,158u, +117u,286u,189u,286u,286u,202u,103u,286u,123u,219u, +278u,286u,213u,286u,286u,159u,286u,250u,286u,31u, +286u,286u,9u,286u,286u,93u,286u,125u,217u,81u, +233u,286u,199u,286u,286u,67u,248u,286u,263u,286u, +286u,286u,286u,286u,33u,286u,286u,286u,286u,205u, +286u,143u,61u,286u,78u,286u,222u,286u,286u,286u, +286u,286u,286u,286u,286u,179u,286u,286u,286u,286u, +34u,286u,20u,246u,286u,95u,286u,286u,286u,19u, +286u,286u,286u,66u,207u,138u,286u,18u,286u,134u, +167u,234u,51u,105u,131u,89u,70u,286u,286u,286u, +286u,116u,161u,193u,286u,237u,281u,286u,60u,157u, +284u,42u,286u,286u,286u,286u,286u,286u,186u,286u, +286u,286u,286u,174u,286u,286u,286u,277u,286u,286u, +50u +}; diff --git a/gen-tcaps.h b/gen-tcaps.h dissimilarity index 95% index a14de2e1..d2d39d6d 100644 --- a/gen-tcaps.h +++ b/gen-tcaps.h @@ -1,142 +1,142 @@ -/*@ gen-tcaps.h, generated by ./make-tcap-map.pl. - *@ See termcap.c for more */ - -static char const a_termcap_namedat[] = { - /* [0]+8, n_TERMCAP_CMD_te */ 't','e', 'r','m','c','u','p','\0', - /* [8]+8, n_TERMCAP_CMD_ti */ 't','i', 's','m','c','u','p','\0', - /* [16]+7, n_TERMCAP_CMD_ks */ 'k','s', 's','m','k','x','\0', - /* [23]+7, n_TERMCAP_CMD_ke */ 'k','e', 'r','m','k','x','\0', - /* [30]+5, n_TERMCAP_CMD_cd */ 'c','d', 'e','d','\0', - /* [35]+8, n_TERMCAP_CMD_cl */ 'c','l', 'c','l','e','a','r','\0', - /* [43]+7, n_TERMCAP_CMD_ho */ 'h','o', 'h','o','m','e','\0', - /* [50]+5, n_TERMCAP_CMD_ce */ 'c','e', 'e','l','\0', - /* [55]+6, n_TERMCAP_CMD_ch */ 'c','h', 'h','p','a','\0', - /* [61]+5, n_TERMCAP_CMD_cr */ 'c','r', 'c','r','\0', - /* [66]+7, n_TERMCAP_CMD_le */ 'l','e', 'c','u','b','1','\0', - /* [73]+7, n_TERMCAP_CMD_nd */ 'n','d', 'c','u','f','1','\0', - /* [80]+9, n_TERMCAP_QUERY_colors */ 'C','o', 'c','o','l','o','r','s','\0', -#ifdef HAVE_KEY_BINDINGS - /* [89]+6, n_TERMCAP_QUERY_key_backspace */ 'k','b', 'k','b','s','\0', - /* [95]+8, n_TERMCAP_QUERY_key_dc */ 'k','D', 'k','d','c','h','1','\0', - /* [103]+6, n_TERMCAP_QUERY_key_sdc */ '*','4', 'k','D','C','\0', - /* [109]+6, n_TERMCAP_QUERY_key_eol */ 'k','E', 'k','e','l','\0', - /* [115]+7, n_TERMCAP_QUERY_key_exit */ '@','9', 'k','e','x','t','\0', - /* [122]+8, n_TERMCAP_QUERY_key_ic */ 'k','I', 'k','i','c','h','1','\0', - /* [130]+6, n_TERMCAP_QUERY_key_sic */ '#','3', 'k','I','C','\0', - /* [136]+8, n_TERMCAP_QUERY_key_home */ 'k','h', 'k','h','o','m','e','\0', - /* [144]+7, n_TERMCAP_QUERY_key_shome */ '#','2', 'k','H','O','M','\0', - /* [151]+7, n_TERMCAP_QUERY_key_end */ '@','7', 'k','e','n','d','\0', - /* [158]+7, n_TERMCAP_QUERY_key_send */ '*','7', 'k','E','N','D','\0', - /* [165]+6, n_TERMCAP_QUERY_key_npage */ 'k','N', 'k','n','p','\0', - /* [171]+6, n_TERMCAP_QUERY_key_ppage */ 'k','P', 'k','p','p','\0', - /* [177]+8, n_TERMCAP_QUERY_key_left */ 'k','l', 'k','c','u','b','1','\0', - /* [185]+7, n_TERMCAP_QUERY_key_sleft */ '#','4', 'k','L','F','T','\0', - /* [192]+8, n_TERMCAP_QUERY_xkey_aleft */ '\0','\0', 'k','L','F','T','3','\0', - /* [200]+8, n_TERMCAP_QUERY_xkey_cleft */ '\0','\0', 'k','L','F','T','5','\0', - /* [208]+8, n_TERMCAP_QUERY_key_right */ 'k','r', 'k','c','u','f','1','\0', - /* [216]+7, n_TERMCAP_QUERY_key_sright */ '%','i', 'k','R','I','T','\0', - /* [223]+8, n_TERMCAP_QUERY_xkey_aright */ '\0','\0', 'k','R','I','T','3','\0', - /* [231]+8, n_TERMCAP_QUERY_xkey_cright */ '\0','\0', 'k','R','I','T','5','\0', - /* [239]+8, n_TERMCAP_QUERY_key_down */ 'k','d', 'k','c','u','d','1','\0', - /* [247]+6, n_TERMCAP_QUERY_xkey_sdown */ '\0','\0', 'k','D','N','\0', - /* [253]+7, n_TERMCAP_QUERY_xkey_adown */ '\0','\0', 'k','D','N','3','\0', - /* [260]+7, n_TERMCAP_QUERY_xkey_cdown */ '\0','\0', 'k','D','N','5','\0', - /* [267]+8, n_TERMCAP_QUERY_key_up */ 'k','u', 'k','c','u','u','1','\0', - /* [275]+6, n_TERMCAP_QUERY_xkey_sup */ '\0','\0', 'k','U','P','\0', - /* [281]+7, n_TERMCAP_QUERY_xkey_aup */ '\0','\0', 'k','U','P','3','\0', - /* [288]+7, n_TERMCAP_QUERY_xkey_cup */ '\0','\0', 'k','U','P','5','\0', - /* [295]+6, n_TERMCAP_QUERY_kf0 */ 'k','0', 'k','f','0','\0', - /* [301]+6, n_TERMCAP_QUERY_kf1 */ 'k','1', 'k','f','1','\0', - /* [307]+6, n_TERMCAP_QUERY_kf2 */ 'k','2', 'k','f','2','\0', - /* [313]+6, n_TERMCAP_QUERY_kf3 */ 'k','3', 'k','f','3','\0', - /* [319]+6, n_TERMCAP_QUERY_kf4 */ 'k','4', 'k','f','4','\0', - /* [325]+6, n_TERMCAP_QUERY_kf5 */ 'k','5', 'k','f','5','\0', - /* [331]+6, n_TERMCAP_QUERY_kf6 */ 'k','6', 'k','f','6','\0', - /* [337]+6, n_TERMCAP_QUERY_kf7 */ 'k','7', 'k','f','7','\0', - /* [343]+6, n_TERMCAP_QUERY_kf8 */ 'k','8', 'k','f','8','\0', - /* [349]+6, n_TERMCAP_QUERY_kf9 */ 'k','9', 'k','f','9','\0', - /* [355]+7, n_TERMCAP_QUERY_kf10 */ 'k',';', 'k','f','1','0','\0', - /* [362]+7, n_TERMCAP_QUERY_kf11 */ 'F','1', 'k','f','1','1','\0', - /* [369]+7, n_TERMCAP_QUERY_kf12 */ 'F','2', 'k','f','1','2','\0', - /* [376]+7, n_TERMCAP_QUERY_kf13 */ 'F','3', 'k','f','1','3','\0', - /* [383]+7, n_TERMCAP_QUERY_kf14 */ 'F','4', 'k','f','1','4','\0', - /* [390]+7, n_TERMCAP_QUERY_kf15 */ 'F','5', 'k','f','1','5','\0', - /* [397]+7, n_TERMCAP_QUERY_kf16 */ 'F','6', 'k','f','1','6','\0', - /* [404]+7, n_TERMCAP_QUERY_kf17 */ 'F','7', 'k','f','1','7','\0', - /* [411]+7, n_TERMCAP_QUERY_kf18 */ 'F','8', 'k','f','1','8','\0', - /* [418]+7, n_TERMCAP_QUERY_kf19 */ 'F','9', 'k','f','1','9','\0', -#endif /* HAVE_KEY_BINDINGS */ -}; - -static struct a_termcap_control const a_termcap_control[] = { -# ifdef HAVE_TERMCAP - {/* 0. n_TERMCAP_CMD_te */ n_TERMCAP_CAPTYPE_STRING, 0}, - {/* 1. n_TERMCAP_CMD_ti */ n_TERMCAP_CAPTYPE_STRING, 8}, - {/* 2. n_TERMCAP_CMD_ks */ n_TERMCAP_CAPTYPE_STRING, 16}, - {/* 3. n_TERMCAP_CMD_ke */ n_TERMCAP_CAPTYPE_STRING, 23}, - {/* 4. n_TERMCAP_CMD_cd */ n_TERMCAP_CAPTYPE_STRING, 30}, - {/* 5. n_TERMCAP_CMD_cl */ n_TERMCAP_CAPTYPE_STRING, 35}, - {/* 6. n_TERMCAP_CMD_ho */ n_TERMCAP_CAPTYPE_STRING, 43}, -# endif -# ifdef HAVE_MLE - {/* 7. n_TERMCAP_CMD_ce */ n_TERMCAP_CAPTYPE_STRING, 50}, - {/* 8. n_TERMCAP_CMD_ch */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_ARG_IDX1, 55}, - {/* 9. n_TERMCAP_CMD_cr */ n_TERMCAP_CAPTYPE_STRING, 61}, - {/* 10. n_TERMCAP_CMD_le */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_ARG_CNT, 66}, - {/* 11. n_TERMCAP_CMD_nd */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_ARG_CNT, 73}, -# endif -# ifdef HAVE_COLOUR - {/* 12. n_TERMCAP_QUERY_colors */ n_TERMCAP_CAPTYPE_NUMERIC|a_TERMCAP_F_QUERY, 80}, -# endif -# ifdef HAVE_KEY_BINDINGS - {/* 13. n_TERMCAP_QUERY_key_backspace */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 89}, - {/* 14. n_TERMCAP_QUERY_key_dc */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 95}, - {/* 15. n_TERMCAP_QUERY_key_sdc */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 103}, - {/* 16. n_TERMCAP_QUERY_key_eol */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 109}, - {/* 17. n_TERMCAP_QUERY_key_exit */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 115}, - {/* 18. n_TERMCAP_QUERY_key_ic */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 122}, - {/* 19. n_TERMCAP_QUERY_key_sic */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 130}, - {/* 20. n_TERMCAP_QUERY_key_home */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 136}, - {/* 21. n_TERMCAP_QUERY_key_shome */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 144}, - {/* 22. n_TERMCAP_QUERY_key_end */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 151}, - {/* 23. n_TERMCAP_QUERY_key_send */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 158}, - {/* 24. n_TERMCAP_QUERY_key_npage */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 165}, - {/* 25. n_TERMCAP_QUERY_key_ppage */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 171}, - {/* 26. n_TERMCAP_QUERY_key_left */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 177}, - {/* 27. n_TERMCAP_QUERY_key_sleft */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 185}, - {/* 28. n_TERMCAP_QUERY_xkey_aleft */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 192}, - {/* 29. n_TERMCAP_QUERY_xkey_cleft */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 200}, - {/* 30. n_TERMCAP_QUERY_key_right */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 208}, - {/* 31. n_TERMCAP_QUERY_key_sright */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 216}, - {/* 32. n_TERMCAP_QUERY_xkey_aright */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 223}, - {/* 33. n_TERMCAP_QUERY_xkey_cright */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 231}, - {/* 34. n_TERMCAP_QUERY_key_down */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 239}, - {/* 35. n_TERMCAP_QUERY_xkey_sdown */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 247}, - {/* 36. n_TERMCAP_QUERY_xkey_adown */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 253}, - {/* 37. n_TERMCAP_QUERY_xkey_cdown */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 260}, - {/* 38. n_TERMCAP_QUERY_key_up */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 267}, - {/* 39. n_TERMCAP_QUERY_xkey_sup */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 275}, - {/* 40. n_TERMCAP_QUERY_xkey_aup */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 281}, - {/* 41. n_TERMCAP_QUERY_xkey_cup */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 288}, - {/* 42. n_TERMCAP_QUERY_kf0 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 295}, - {/* 43. n_TERMCAP_QUERY_kf1 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 301}, - {/* 44. n_TERMCAP_QUERY_kf2 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 307}, - {/* 45. n_TERMCAP_QUERY_kf3 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 313}, - {/* 46. n_TERMCAP_QUERY_kf4 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 319}, - {/* 47. n_TERMCAP_QUERY_kf5 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 325}, - {/* 48. n_TERMCAP_QUERY_kf6 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 331}, - {/* 49. n_TERMCAP_QUERY_kf7 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 337}, - {/* 50. n_TERMCAP_QUERY_kf8 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 343}, - {/* 51. n_TERMCAP_QUERY_kf9 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 349}, - {/* 52. n_TERMCAP_QUERY_kf10 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 355}, - {/* 53. n_TERMCAP_QUERY_kf11 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 362}, - {/* 54. n_TERMCAP_QUERY_kf12 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 369}, - {/* 55. n_TERMCAP_QUERY_kf13 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 376}, - {/* 56. n_TERMCAP_QUERY_kf14 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 383}, - {/* 57. n_TERMCAP_QUERY_kf15 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 390}, - {/* 58. n_TERMCAP_QUERY_kf16 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 397}, - {/* 59. n_TERMCAP_QUERY_kf17 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 404}, - {/* 60. n_TERMCAP_QUERY_kf18 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 411}, - {/* 61. n_TERMCAP_QUERY_kf19 */ n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 418}, -# endif /* HAVE_KEY_BINDINGS */ -}; +/*@ gen-tcaps.h, generated by ./make-tcap-map.pl. + *@ See termcap.c for more */ + +static char const a_termcap_namedat[] = { +'t','e', 'r','m','c','u','p','\0', +'t','i', 's','m','c','u','p','\0', +'k','s', 's','m','k','x','\0', +'k','e', 'r','m','k','x','\0', +'c','d', 'e','d','\0', +'c','l', 'c','l','e','a','r','\0', +'h','o', 'h','o','m','e','\0', +'c','e', 'e','l','\0', +'c','h', 'h','p','a','\0', +'c','r', 'c','r','\0', +'l','e', 'c','u','b','1','\0', +'n','d', 'c','u','f','1','\0', +'C','o', 'c','o','l','o','r','s','\0', +#ifdef HAVE_KEY_BINDINGS +'k','b', 'k','b','s','\0', +'k','D', 'k','d','c','h','1','\0', +'*','4', 'k','D','C','\0', +'k','E', 'k','e','l','\0', +'@','9', 'k','e','x','t','\0', +'k','I', 'k','i','c','h','1','\0', +'#','3', 'k','I','C','\0', +'k','h', 'k','h','o','m','e','\0', +'#','2', 'k','H','O','M','\0', +'@','7', 'k','e','n','d','\0', +'*','7', 'k','E','N','D','\0', +'k','N', 'k','n','p','\0', +'k','P', 'k','p','p','\0', +'k','l', 'k','c','u','b','1','\0', +'#','4', 'k','L','F','T','\0', +'\0','\0', 'k','L','F','T','3','\0', +'\0','\0', 'k','L','F','T','5','\0', +'k','r', 'k','c','u','f','1','\0', +'%','i', 'k','R','I','T','\0', +'\0','\0', 'k','R','I','T','3','\0', +'\0','\0', 'k','R','I','T','5','\0', +'k','d', 'k','c','u','d','1','\0', +'\0','\0', 'k','D','N','\0', +'\0','\0', 'k','D','N','3','\0', +'\0','\0', 'k','D','N','5','\0', +'k','u', 'k','c','u','u','1','\0', +'\0','\0', 'k','U','P','\0', +'\0','\0', 'k','U','P','3','\0', +'\0','\0', 'k','U','P','5','\0', +'k','0', 'k','f','0','\0', +'k','1', 'k','f','1','\0', +'k','2', 'k','f','2','\0', +'k','3', 'k','f','3','\0', +'k','4', 'k','f','4','\0', +'k','5', 'k','f','5','\0', +'k','6', 'k','f','6','\0', +'k','7', 'k','f','7','\0', +'k','8', 'k','f','8','\0', +'k','9', 'k','f','9','\0', +'k',';', 'k','f','1','0','\0', +'F','1', 'k','f','1','1','\0', +'F','2', 'k','f','1','2','\0', +'F','3', 'k','f','1','3','\0', +'F','4', 'k','f','1','4','\0', +'F','5', 'k','f','1','5','\0', +'F','6', 'k','f','1','6','\0', +'F','7', 'k','f','1','7','\0', +'F','8', 'k','f','1','8','\0', +'F','9', 'k','f','1','9','\0', +#endif /* HAVE_KEY_BINDINGS */ +}; + +static struct a_termcap_control const a_termcap_control[] = { +# ifdef HAVE_TERMCAP +{n_TERMCAP_CAPTYPE_STRING, 0}, +{n_TERMCAP_CAPTYPE_STRING, 8}, +{n_TERMCAP_CAPTYPE_STRING, 16}, +{n_TERMCAP_CAPTYPE_STRING, 23}, +{n_TERMCAP_CAPTYPE_STRING, 30}, +{n_TERMCAP_CAPTYPE_STRING, 35}, +{n_TERMCAP_CAPTYPE_STRING, 43}, +# endif +# ifdef HAVE_MLE +{n_TERMCAP_CAPTYPE_STRING, 50}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_ARG_IDX1, 55}, +{n_TERMCAP_CAPTYPE_STRING, 61}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_ARG_CNT, 66}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_ARG_CNT, 73}, +# endif +# ifdef HAVE_COLOUR +{n_TERMCAP_CAPTYPE_NUMERIC|a_TERMCAP_F_QUERY, 80}, +# endif +# ifdef HAVE_KEY_BINDINGS +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 89}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 95}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 103}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 109}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 115}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 122}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 130}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 136}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 144}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 151}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 158}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 165}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 171}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 177}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 185}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 192}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 200}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 208}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 216}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 223}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 231}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 239}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 247}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 253}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 260}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 267}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 275}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 281}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 288}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 295}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 301}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 307}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 313}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 319}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 325}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 331}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 337}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 343}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 349}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 355}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 362}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 369}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 376}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 383}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 390}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 397}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 404}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 411}, +{n_TERMCAP_CAPTYPE_STRING|a_TERMCAP_F_QUERY, 418}, +# endif /* HAVE_KEY_BINDINGS */ +}; diff --git a/make-news-anchors.sh b/make-news-anchors.sh deleted file mode 100755 index c8303330..00000000 --- a/make-news-anchors.sh +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/sh - -#@ make-news-anchors.sh -#@ Expand *XY*# / $XY# / -XY# / `XY'# / `~XY'# / "XY"# style anchors -#@ so that the anchor matches the number given in ANCHORFILE. -#@ The number sign may be followed by space, question-mark ? or a number. -#@ We always expand STDIN to STDOUT, but only in the range -#@ ChangeLog .. ^(Appendix|git\(1\) shortlog) (or EOF, of course) -#@ The ANCHORFILE can be produced by -#@ $ < manual.mdoc mdocmx.sh | -#@ MDOCMX_ENABLE=1 groff -U -mdoc -dmx-anchor-dump=/tmp/anchors \ -#@ -dmx-toc-force=tree >/dev/null -# Public Domain - -: ${awk:=awk} - -syno() { - if [ ${#} -gt 0 ]; then - echo >&2 "ERROR: ${*}" - echo >&2 - fi - echo >&2 'Synopsis: make-news-anchors.sh ANCHORFILE' - exit 1 -} - -[ ${#} -eq 1 ] || syno -[ -f "${1}" ] || syno 'the given anchorfile does not exist' - -APO=\' -${awk} -v anchorfile="${1}" ' -BEGIN{hot = 0} -/^(NOTES|ChangeLog)/{ - hot = 1 - print - next -} -/^(Appendix|git\(1\) shortlog)/{ - hot = -1 - print - next -} -{ - if(hot <= 0){ - print - next - } - any = 0 - res = "" - s = $0 - while(match(s, - /(^|\(|[[:space:]]+)("[^"]+"|\*[^\*]+\*|`[^'${APO}']+'${APO}'|[-~][-\/:_.[:alnum:]]+|\$[_[:alnum:]]+)#(\?|[0-9]+)?/)) - { - any = 1 - pre = (RSTART > 1) ? substr(s, 1, RSTART - 1) : "" - mat = substr(s, RSTART, RLENGTH) - s = substr(s, RSTART + RLENGTH) - - # Unfortunately groups are not supported - if(match(mat, /^(\(|[[:space:]]+)/) != 0 && RLENGTH > 0){ - pre = pre substr(mat, 1, RLENGTH) - mat = substr(mat, RSTART + RLENGTH) - } - - match(mat, /#(\?|[0-9]+)?/) - mat = substr(mat, 1, RSTART - 1) - res = res pre mat "#" - - if(mat ~ /^`/){ # Cm, Ic - mat = substr(mat, 2, length(mat) - 2) - t = 1 - }else if(mat ~ /^\*/){ # Va - mat = substr(mat, 2, length(mat) - 2) - t = 2 - }else if(mat ~ /^\$/){ # Ev, Dv - mat = substr(mat, 2, length(mat) - 1) - t = 3 - }else if(mat ~ /^-/){ # Fl - mat = substr(mat, 2, length(mat) - 1) - t = 4 - }else if(mat ~ /^\"/){ # Sh, Ss. But: "catch-all" - mat = substr(mat, 2, length(mat) - 2) - t = 5 - }else - t = 0 - - # Insufficient, of course - gsub("\\\\", "\\e", mat) - - ano = got = 0 - while(getline < anchorfile){ - if(t == 1){ - if($2 != "Cm" && $2 != "Ic") - continue - }else if(t == 2){ - if($2 != "Va") - continue - }else if(t == 3){ - if($2 != "Ev" && $2 != "Dv") - continue - }else if(t == 4){ - if($2 != "Fl") - continue - }else if(t == 0){ - if($2 == "Cm" || $2 == "Ic" || - $2 == "Va" || - $2 == "Ev" || $2 == "Dv" || - $2 == "Fl") - continue - } - - if(!got) - ano = $1 - $1 = $2 = "" - match($0, /^[[:space:]]*/) - $0 = substr($0, RLENGTH + 1) - - if($0 == mat){ - if(got) - print "WARN: ambiguous: \"" mat "\"" > "/dev/stderr" - got = 1 - } - } - close(anchorfile) - if(!got){ - print "ERROR: no anchor for \"" mat "\"" > "/dev/stderr" - res = res "?" - }else - res = res ano - } - if(any && length(s)) - res = res s - print any ? res : s -} -' - -# s-sh-mode diff --git a/make-release.inc b/make-release.inc deleted file mode 100644 index 39c93761..00000000 --- a/make-release.inc +++ /dev/null @@ -1,432 +0,0 @@ -#@ Include file for the make-release.sh generic release builder. -#@ It also needs two hooks: update_stable_hook(), update_release_hook(), -#@ which need to "git add" what they have modified. - -: ${PROGRAM:?"Need \$PROGRAM"} -: ${UPROGRAM:?"Need \$UPROGRAM"} -: ${MANUAL:?"May need \$MANUAL for announcement references"} - -: ${UPLOAD:?"Need \$UPLOAD URL for scp(1)"} - -: ${MAILX:=mailx} -: ${ACCOUNT:?"May need mailx(1) -A \$ACCOUNT"} -: ${MAILTO:?"May need \$MAILTO for announcement"} -: ${MAILBCC:?"May need \$MAILBCC for announcement"} - -: ${awk:=awk} - -## -- >8 -- 8< -- ## - -ORIG_LC_ALL=${LC_ALL} LC_ALL=C -export LC_ALL - -DATE_MAN=`date -u +'%B %d, %Y'` -DATE_ISO=`date -u +%Y-%m-%d` - -yesno() { - while [ 1 ]; do - [ ${#} -gt 0 ] && printf '%s ' "${@}" - printf '[y/n] ' - read i - case ${i} in - [Yy]*) return 0;; - [Nn]*) return 1;; - *) ;; - esac - done -} - -headref="`git rev-parse --verify HEAD`" -brref= -for i in `git rev-parse --branches=stable master^{commit}`; do - if [ ${headref} = ${i} ]; then - brref=${headref} - break - fi -done -if [ -z "${brref}" ]; then - echo >&2 'Not on the [master] or a [stable/*] branch' - exit 1 -fi -if [ "`git status --porcelain --ignored | - ${awk} 'BEGIN{no=0}{++no}END{print no}'`" -ne 0 ]; then - echo >&2 'Directory not clean, see git status --ignored' - exit 2 -fi - -echo 'Preparing a release on commit '"${headref}" -#brname="`git branch | sed -e '/^* /b X' -e d -e :X -e 's/^* //'`" -brname=`git symbolic-ref --short HEAD` -echo ' That is '"${brname}" -printf ' Name of release tag: ' -read REL -VERSION=${REL} -vmaj=`{ echo ${VERSION}; } | sed -e 's/^\([^.]\{1,\}\).*/\1/'` -vmin=`{ echo ${VERSION}; } | sed -e 's/^[^.]\{1,\}\.\([^.]\{1,\}\).*/\1/'` -[ ${vmin} = ${VERSION} ] && VERSION=${VERSION}.0 vmin=0 -vupd=`{ echo ${VERSION}; } | - sed -e 's/^[^.]\{1,\}\.[^.]\{1,\}\.\([^.-]\{1,\}\).*/\1/'` -[ ${vupd} = ${VERSION} ] && VERSION=${VERSION}.0 vupd=0 -REL=${VERSION} -export VERSION -if yesno 'Is '${PROGRAM}' correct?'; then :; else - echo >&2 'Bailing out' - exit 3 -fi - -stblbrname=stable/v${vmaj}.${vmin} need_stblbrname= -brref=`git rev-parse --verify ${stblbrname} 2>/dev/null` -if [ -z "${brref}" ]; then - if yesno 'Create new branch '"${stblbrname}"' after release tag'; then - need_stblbrname=1 - fi -elif [ ${brref} != ${headref} ] || [ ${brname} != ${stblbrname} ]; then - echo >&2 "For ${REL} we should be on ${stblbrname}, not ${brname}" - echo >&2 'Bailing out' - exit 4 -fi - -relbrname=release/v${VERSION} -brref=`git rev-parse --verify ${relbrname} 2>/dev/null` -if [ -z "${brref}" ]; then :; else - echo >&2 "The ${relbrname} already exists" - echo >&2 'Bailing out' - exit 5 -fi - -RELSYM= -stblmsg= relmsg= -if yesno 'Shall '${PROGRAM}' v'${REL}' have a symbolic name?'; then - printf ' ..and it shall be known as: ' - read RELSYM - if yesno 'Is '"${RELSYM}"' correct?'; then :; else - echo >&2 'Bailing out' - exit 3 - fi - stblmsg="Bump ${UPROGRAM} v${REL} (\"${RELSYM}\"), ${DATE_ISO}" - relmsg="Bump ${UPROGRAM} v${REL}.ar (\"${RELSYM}\"), ${DATE_ISO}" - RELSYM=" (\"${RELSYM}\")" -else - stblmsg="Bump ${UPROGRAM} v${REL}, ${DATE_ISO}" - relmsg="Bump ${UPROGRAM} v${REL}.ar, ${DATE_ISO}" -fi - -## -echo 'Updating stable/ files to match the release' - -if [ -f gen-version.h ] && [ -f make-config.in ]; then - grep=grep sed=sed cmp=cmp mv=mv make -f make-config.in _update-version - git add gen-version.h -fi -update_stable_hook - -LC_ALL=${ORIG_LC_ALL} git commit -S -m "${stblmsg}" -LC_ALL=${ORIG_LC_ALL} git tag -s -f -m "${stblmsg}" v${REL} - -if [ -n "${need_stblbrname}" ]; then - git checkout -b ${stblbrname} -fi -# Normally done in post-commit hook, but not once initially created -if yesno 'Shall i update stable/latest "symlink"?'; then - git update-ref refs/heads/stable/latest ${stblbrname} -fi -if yesno 'Shall i update stable/stable "symlink"?'; then - git update-ref refs/heads/stable/stable ${stblbrname} -fi - -## - -if yesno 'Create release/ branch?'; then - git checkout -b ${relbrname} - - git rm -f .gitignore .mailmap TODO make-release.* - update_release_hook - - LC_ALL=${ORIG_LC_ALL} git commit -S -m "${relmsg}" - LC_ALL=${ORIG_LC_ALL} git tag -s -f -m "${relmsg}" v${REL}.ar - - if yesno 'Shall i update release/latest "symlink"?'; then - git update-ref refs/heads/release/latest ${relbrname} - fi - if yesno 'Shall i update release/stable "symlink"?'; then - git update-ref refs/heads/release/stable ${relbrname} - fi -else - relbrname=${stblbrname} -fi - -## -# [timeline] - -if [ ${relbrname} != ${stblbrname} ] && - `git rev-parse --verify timeline^{commit} >/dev/null 2>&1` && - yesno 'Shall i update [timeline]?'; then - git checkout timeline - git rm -rf '*' - git archive --format=tar "v${REL}.ar" | tar -x -f - - git add . - LC_ALL=${ORIG_LC_ALL} git commit -S -m "${relmsg}" -fi - -## -# repo push - -[ ${relbrname} != ${stblbrname} ] && git checkout ${stblbrname} -git log --no-walk --decorate --oneline --branches --remotes -yesno 'Push git(1) repo?' && git push - -## -# Big balls - -if [ ${relbrname} != ${stblbrname} ] && yesno 'Create tarballs?'; then - bigballs=y - ( - # Repack with standard tar(1) to avoid new-style headers - git archive --format=tar --prefix="${PROGRAM}-${REL}/" v${REL}.ar | - ( cd "${TMPDIR}" && tar -x -f - ) - cd "${TMPDIR}" - - tar -c -f "${PROGRAM}-${REL}.tar" "${PROGRAM}-${REL}" - < "${PROGRAM}-${REL}.tar" xz -e -C sha256 > "${PROGRAM}-${REL}.tar.xz" - < "${PROGRAM}-${REL}.tar" gzip > "${PROGRAM}-${REL}.tar.gz" - rm "${PROGRAM}-${REL}.tar" - - : > "${PROGRAM}-${REL}.cksum" - openssl sha1 "${PROGRAM}-${REL}.tar.xz" >> "${PROGRAM}-${REL}.cksum" - openssl sha256 "${PROGRAM}-${REL}.tar.xz" >> "${PROGRAM}-${REL}.cksum" - openssl sha512 "${PROGRAM}-${REL}.tar.xz" >> "${PROGRAM}-${REL}.cksum" - openssl sha1 "${PROGRAM}-${REL}.tar.gz" >> "${PROGRAM}-${REL}.cksum" - openssl sha256 "${PROGRAM}-${REL}.tar.gz" >> "${PROGRAM}-${REL}.cksum" - openssl sha512 "${PROGRAM}-${REL}.tar.gz" >> "${PROGRAM}-${REL}.cksum" - - echo >> "${PROGRAM}-${REL}.cksum" - gpg --detach-sign --armor "${PROGRAM}-${REL}.tar.xz" - cat "${PROGRAM}-${REL}.tar.xz.asc" >> "${PROGRAM}-${REL}.cksum" - gpg --detach-sign --armor "${PROGRAM}-${REL}.tar.gz" - cat "${PROGRAM}-${REL}.tar.gz.asc" >> "${PROGRAM}-${REL}.cksum" - ) -else - bigballs= -fi - -## -# Announcement .txt and .html - -if yesno 'Prepare announcement?'; then - anntxt=y - - if `git cat-file -e ${relbr}:NEWS 2>/dev/null`; then - git show ${relbr}:NEWS > "${TMPDIR}/.${PROGRAM}-${REL}.news" - else - : > "${TMPDIR}/.${PROGRAM}-${REL}.news" - fi - - { echo "${relmsg}"; echo; } > "${TMPDIR}/${PROGRAM}-${REL}.txt" - if [ -f .git/make-release.txt ]; then - # For the checksums - if [ -n "${bigballs}" ] && [ -f "${TMPDIR}/${PROGRAM}-${REL}.cksum" ] - then - cks=`< "${TMPDIR}/${PROGRAM}-${REL}.cksum" sed -e 's/ //' -e '/^$/,$d'` - < "${TMPDIR}/${PROGRAM}-${REL}.cksum" sed '1,/^$/d' \ - > "${TMPDIR}/.${PROGRAM}-${REL}.sigs" - < .git/make-release.txt ${awk} \ - -v INS="${cks}" -v SIGS="${TMPDIR}/.${PROGRAM}-${REL}.sigs" \ - -v NEWS="${TMPDIR}/.${PROGRAM}-${REL}.news" ' - /-----CHECKSUMS-----/{ - atop = split(INS, a) - fn = "" - for(i = 1; i <= atop; ++i){ - match(a[i], /(\(.+\))/) - tfn = substr(a[i], RSTART + 1, RLENGTH - 2) - tpre = substr(a[i], 1, RSTART - 1) - tsuf = substr(a[i], RSTART + RLENGTH + 1) - if(fn == "" || fn != tfn) - printf "%s:\n", (fn = tfn) - printf " %6s %s\n", tpre, tsuf - } - next - } - /-----SIGNATURES-----/{ - while(getline sl < SIGS) - print sl - next - } - /-----NEWS-----/{ - while(getline sl < NEWS) - print sl - next - } - {print} - ' >> "${TMPDIR}/${PROGRAM}-${REL}.txt" - rm -f "${TMPDIR}/.${PROGRAM}-${REL}.sigs" - else - < .git/make-release.txt ${awk} \ - -v NEWS="${TMPDIR}/.${PROGRAM}-${REL}.news" ' - /-----NEWS-----/{ - while(getline sl < NEWS) - print sl - next - } - {print} - ' >> "${TMPDIR}/${PROGRAM}-${REL}.txt" - fi - elif [ -f "${TMPDIR}/.${PROGRAM}-${REL}.news" ]; then - cat "${TMPDIR}/.${PROGRAM}-${REL}.news" >> \ - "${TMPDIR}/${PROGRAM}-${REL}.txt" - fi - - rm -f "${TMPDIR}/.${PROGRAM}-${REL}.news" - - LC_ALL=${ORIG_LC_ALL} ${EDITOR} "${TMPDIR}/${PROGRAM}-${REL}.txt" - - # HTML convert ready for S-Web42 - APO=\' - < "${TMPDIR}/${PROGRAM}-${REL}.txt" ${awk} -v manual="${MANUAL}" ' - BEGIN{ - hot = 0 - print "
"
-   }
-   function strips(){
-      gsub("&", "\\&")
-      gsub("<", "\\<")
-      gsub(">", "\\>")
-   }
-   function urls(){
-      any = 0
-      res = ""
-      s = $0
-
-      while(match(s, /(\\?https?\??:\/\/[^ ]*)/)){
-         pre = substr(s, 1, RSTART - 1)
-         mat = substr(s, RSTART, RLENGTH)
-         s = substr(s, RSTART + RLENGTH)
-         if("\\" == substr(mat, 1, 1))
-            mat = substr(mat, 2)
-         else{
-            xt = 0
-            if(match(mat, /^https\?/))
-               mat = "https" substr(xt = mat, RSTART + 6)
-            if(match(mat, /sdaoden\.eu/))
-               mat = "" xt : "") "?>"
-            else
-               mat = "" xt : "") "?>"
-         }
-         res = res pre mat
-         any = 1
-      }
-      if(any && length(s))
-         res = res s
-      $0 = any ? res : s
-   }
-   /^[[:space:]]*s-.*-mode[[:space:]]*$/{
-      exit 0
-   }
-   /^(NOTES|ChangeLog)/{
-      hot = 1
-      strips()
-      print
-      next
-   }
-   /^(Appendix|git\(1\) shortlog)/{
-      hot = -1
-      strips()
-      print
-      next
-   }
-   {
-      strips()
-      urls()
-      if(hot <= 0){
-         print
-         next
-      }
-      any = 0
-      res = ""
-      s = $0
-      # Create S-Web42 local references for the possible anchors:
-      #     *XY*# / $XY# / -XY# / `XY${APO}# / `~XY${APO}# / "XY"#
-      # (where the mdocmx(7) anchor follows the number sign).
-      # Ideally the anchors have been automatically expanded by
-      # mdocmx-anchor-expand.sh before.
-      while(match(s,
-            /(^|\(|[[:space:]]+)("[^"]+"|\*[^\*]+\*|`[^'${APO}']+'${APO}'|[-~][-\/:_.[:alnum:]]+|\$[_[:alnum:]]+)#[0-9]+/))
-      {
-         pre = (RSTART > 1) ? substr(s, 1, RSTART - 1) : ""
-         mat = substr(s, RSTART, RLENGTH)
-         s = substr(s, RSTART + RLENGTH)
-
-         # Unfortunately groups are not supported
-         if(match(mat, /^(\(|[[:space:]]+)/) != 0 && RLENGTH > 0){
-            pre = pre substr(mat, 1, RLENGTH)
-            mat = substr(mat, RSTART + RLENGTH)
-         }
-
-         match(mat, /#[0-9]+/)
-         targ = substr(mat, RSTART + 1, RLENGTH)
-         mat = substr(mat, 1, RSTART)
-         res = res pre "" mat "?>"
-         any = 1
-      }
-      if(any && length(s))
-         res = res s
-      print any ? res : s
-   }
-   END{
-      print "
" - } - ' > "${TMPDIR}/.${PROGRAM}-ann.html" -else - anntxt= -fi - -## -# Upload - -if [ -n "${bigballs}" ] && yesno 'Upload archives'; then - ( - cd "${TMPDIR}" - - { - echo "-put ${PROGRAM}-${REL}.tar.xz" - echo "-rm ${PROGRAM}-latest.tar.xz" - echo "-ln -s ${PROGRAM}-${REL}.tar.xz ${PROGRAM}-latest.tar.xz" - - echo "-put ${PROGRAM}-${REL}.tar.xz.asc" - echo "-rm ${PROGRAM}-latest.tar.xz.asc" - echo "-ln -s ${PROGRAM}-${REL}.tar.xz.asc ${PROGRAM}-latest.tar.xz.asc" - - echo "-put ${PROGRAM}-${REL}.tar.gz" - echo "-rm ${PROGRAM}-latest.tar.gz" - echo "-ln -s ${PROGRAM}-${REL}.tar.gz ${PROGRAM}-latest.tar.gz" - - echo "-put ${PROGRAM}-${REL}.tar.gz.asc" - echo "-rm ${PROGRAM}-latest.tar.gz.asc" - echo "-ln -s ${PROGRAM}-${REL}.tar.gz.asc ${PROGRAM}-latest.tar.gz.asc" - - if [ -n "${anntxt}" ]; then - echo "-put ${PROGRAM}-${REL}.txt" - echo "-rm ${PROGRAM}-latest.txt" - echo "-ln -s ${PROGRAM}-${REL}.txt ${PROGRAM}-latest.txt" - fi - - echo "-chmod 0644 ${PROGRAM}-${REL}.*" - } | - sftp -b - ${UPLOAD} - ) -fi - -## -# Announcement mail - -if [ -n "${anntxt}" ] && yesno 'Send announcement mail?'; then - LC_ALL=${ORIG_LC_ALL} ${MAILX} -A ${ACCOUNT} \ - -s "[ANN]ounce of ${UPROGRAM} v${REL}${RELSYM}" \ - -q "${TMPDIR}/${PROGRAM}-${REL}.txt" \ - -b ${MAILBCC} ${MAILTO} -fi - -# Finally remove the temporary instances than ran this -rm -f .git/make-release.* -echo 'Done' -exit -# s-sh-mode diff --git a/make-release.sh b/make-release.sh deleted file mode 100644 index 213878bb..00000000 --- a/make-release.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh - -#@ make-release.sh: simple somewhat generic release builder - -# In order to be able to remove the release scripts from the release tarball, -# we must delete them, which some shells may not like while they are running. -# So be safe and move instances temporarily to .git/, the .inc will remove them -if [ "`basename \`pwd\``" != .git ]; then - cp make-release.* .git/ - cd .git - exec sh make-release.sh -fi -cd .. - -## Variables - -: ${PROGRAM:=s-nail} -: ${UPROGRAM:=S-nail} -: ${MANUAL:=code-nail.html} - -: ${UPLOAD:=steffen@sdaoden.eu:/var/www/localhost/downloads} - -# Mail -: ${MAILX:=s-nail -Snofollowup-to -Ssmime-sign} -: ${ACCOUNT:=ich} -: ${MAILBCC:=mailx-announce-bcc} -: ${MAILTO:=mailx-announce} - -## Hooks - -update_stable_hook() { - if [ -f nail.1 ]; then - < nail.1 > nail.1x awk ' - BEGIN { written = 0 } - /\.\\"--MKREL-START--/, /\.\\"--MKREL-END--/ { - if (written++ != 0) - next - print ".\\\"--MKREL-START--" - print ".\\\"@ '"${UPROGRAM}"' v'"${REL}"' / '"${DATE_ISO}"'" - print ".Dd '"${DATE_MAN}"'" - print ".ds VV \\\\%v'"${REL}"'" - print ".\\\"--MKREL-END--" - next - } - {print} - ' && - mv -f nail.1x nail.1 - git add nail.1 - fi - - if [ -f nail.rc ]; then - < nail.rc > nail.rcx awk ' - BEGIN { written = 0 } - /^#--MKREL-START--/, /^#--MKREL-END--/ { - if (written++ != 0) - next - print "#--MKREL-START--" - print "#@ '"${UPROGRAM}"' v'"${REL}"' / '"${DATE_ISO}"'" - print "#--MKREL-END--" - next - } - {print} - ' && - mv -f nail.rcx nail.rc - git add nail.rc - fi - - [ -f ./make-okey-map.pl ] && ./make-okey-map.pl && git add gen-okeys.h - [ -f ./make-tcap-map.pl ] && ./make-tcap-map.pl && git add gen-tcaps.h - [ -f ./make-errors.sh ] && ./make-errors.sh && git add gen-errors.h -} - -update_release_hook() { - git rm -f make-news-anchors.sh - - if [ -f nail.1 ]; then - sed -E -e '/^\.\\"--MKREL-(START|END)--/d' \ - -e '/--BEGINSTRIP--/,$ {' \ - -e '/^\.[[:space:]]*$/d' -e '/^\.[[:space:]]*\\"/d' \ - -e '}' \ - -e '/^\.$/d' \ - < nail.1 > nail.1x - mv -f nail.1x nail.1 - if command -v mdocmx.sh >/dev/null 2>&1; then - mdocmx.sh < nail.1 > nail.1x - mv -f nail.1x nail.1 - fi - git add nail.1 - fi - - if [ -f nail.rc ]; then - sed -Ee '/^#--MKREL-(START|END)--/d' < nail.rc > nail.rcx - mv -f nail.rcx nail.rc - git add nail.rc - fi - - [ -f ./make-okey-map.pl ] && - ./make-okey-map.pl noverbose && git add gen-okeys.h - [ -f ./make-tcap-map.pl ] && - ./make-tcap-map.pl noverbose && git add gen-tcaps.h - [ -f ./make-errors.sh ] && - ./make-errors.sh noverbose && git add gen-errors.h -} - -. ./make-release.inc - -# s-sh-mode diff --git a/make-release.txt b/make-release.txt deleted file mode 100644 index 344ab036..00000000 --- a/make-release.txt +++ /dev/null @@ -1,91 +0,0 @@ -To: mailx-announce -Bcc: mailx-announce-bcc -# NOT YET, should be left alone for that! Mail-Followup-To: mailx -Reply-To: mailx - -Hello list, - -hereby i announce S-nail vXX.X.X, the "". -It is . - -Credits, in order of commit appearance: - -We welcome in THANKS. - -Number games -^^^^^^^^^^^^ - -The tagged release commits are [master stable/v]:[], and -[release/v]:[] (actual release content). - The release has also been stored as [timeline]:[]. -The git(1) release commits and tags, as well as the release balls -have been signed with the OpenPGP key - steffen@sdaoden.eu / 95F382CE - (232C 220B CB56 90A3 7BD2 2FFD EB66 0227 95F3 82CE) -available on OpenPGP key servers, my website and download area, -and also in the repository (blob tagged steffen-pgp-pub). - -Release balls and OpenPGP signatures (.asc) can be downloaded via -HTTPS/HTTP at \https?://ftp.sdaoden.eu. Copies of the signatures -can also be found at the end of this message. - ------CHECKSUMS----- - -All files are available as "-latest" symbolic links, too, e.g., -s-nail-latest.txt (a copy of this announcement text). - - Announcement : https?://www.sdaoden.eu/code-nail-ann.html - Manual : https?://www.sdaoden.eu/code-nail.html - Web : https?://www.sdaoden.eu/code.html#s-mailx - git(1) clone : \https?://git.sdaoden.eu/scm/s-nail.git - git(1) browse: https?://git.sdaoden.eu/cgit/s-nail.git - - In the following mdocmx(7) anchors are denoted by a number-sign #: - typing "^A ANCHOR" while reading the man(1)ual in a capable less(1) - will scroll to the manual's Point-Of-Interest, and pointing a web- - browser to the "#ANCHOR" of the online manual will do so, too. - -NOTES, ChangeLog (packager-affine) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -ChangeLog -^^^^^^^^^ - ------NEWS----- - -git(1) shortlog (edited) -^^^^^^^^^^^^^^^^^^^^^^^^ - -:read!git shortlog -w78,0,8 --format="\%h \%s" x..y - -Appendix -^^^^^^^^ - -The complete changelog of commits in between two versions OLD and -NEW can be inspected by using the git(1) `log' command: - - $ git log --reverse --topo-order --abbrev-commit OLD..NEW - # Only topic branch headers (--no-merges for content commits only): - $ git log --oneline --reverse --topo-order --merges OLD..NEW - # Same, but truly accessible: - $ git log --oneline --reverse --topo-order --merges --parents OLD..NEW | - while read c1 c2 c3 c4 c5 c6; do - printf "%-24s: \$ git log --oneline --no-merges %s ^%s\n" \ - "${c6}" "${c1}" "${c2}"; - done - -Entries for releases before v14.9.0 have been cut off and can be -found in the git(1) repository: - - v14.8.0 - v14.8.16: $ git show v14.8.16:NEWS - v13 - v14.8.5 : $ git show v14.8.5:NEWS - 9.0 - 12.5 : $ git show heirloom:ChangeLog - -Also accessible via HTTPS?, just replace X.Y.Z accordingly: - - \https?://git.sdaoden.eu/cgit/s-nail.git/tree/NEWS?h=vX.Y.Y - -For even older releases you need to look into the [timeline] -branch, but no changelog has been administrated for them. - ------SIGNATURES----- diff --git a/nail.1 b/nail.1 index 662e4bcd..476a4642 100644 --- a/nail.1 +++ b/nail.1 @@ -30,20 +30,15 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\"--MKREL-START-- .\"@ S-nail v14.9.1 / 2017-07-31 .Dd July 31, 2017 .ds VV \\%v14.9.1 -.\"--MKREL-END-- .\"--MKMAN-START-- .ds UU \\%S-NAIL .ds UA \\%S-nail .ds uA \\%s-nail .ds UR \\%s-nail.rc .\"--MKMAN-END-- -.\" --BEGINSTRIP-- -.\" -.\" If not ~/.mailrc, it breaks POSIX compatibility. And adjust main.c. .ds ur \\%~/.mailrc .ds OB [Obsolete] .ds OP [Option] @@ -53,21 +48,628 @@ .ds NQ [Only new quoting rules] .ds BO (Boolean) .ds RO (Read-only) -. .Dt "\*(UU" 1 .Os -.Mx -enable -. -. +.\" Uncomment for mandoc(1) compat.: +.\".ds mx-toc-name TABLE OF CONTENTS +.Mx -enable -preprocessed +.Mx -anchor-spass Sh "NAME" 1 +.Mx -anchor-spass Sh "SYNOPSIS" 2 +.Mx -anchor-spass Sh "\*[mx-toc-name]" 3 +.Mx -anchor-spass Sh "DESCRIPTION" 4 +.Mx -anchor-spass Ss "Options" 4 +.Mx -anchor-spass Ss "A starter" 4 +.Mx -anchor-spass Ss "On sending mail, and non-interactive mode" 4 +.Mx -anchor-spass Ss "On reading mail, and interactive mode" 4 +.Mx -anchor-spass Ss "HTML mail and MIME attachments" 4 +.Mx -anchor-spass Ss "Mailing lists" 4 +.Mx -anchor-spass Ss "Signed and encrypted messages with S/MIME" 4 +.Mx -anchor-spass Ss "On URL syntax and credential lookup" 4 +.Mx -anchor-spass Ss "Character sets" 4 +.Mx -anchor-spass Ss "Message states" 4 +.Mx -anchor-spass Ss "Specifying messages" 4 +.Mx -anchor-spass Ss "On terminal control and line editor" 4 +.Mx -anchor-spass Ss "Coloured display" 4 +.Mx -anchor-spass Ss "Handling spam" 4 +.Mx -anchor-spass Sh "COMMANDS" 5 +.Mx -anchor-spass Ss "Command modifiers" 5 +.Mx -anchor-spass Ss "Message list arguments" 5 +.Mx -anchor-spass Ss "Old-style argument quoting" 5 +.Mx -anchor-spass Ss "Shell-style argument quoting" 5 +.Mx -anchor-spass Ss "Raw data arguments for codec commands" 5 +.Mx -anchor-spass Ss "Filename transformations" 5 +.Mx -anchor-spass Ss "Commands" 5 +.Mx -anchor-spass Sh "COMMAND ESCAPES" 6 +.Mx -anchor-spass Sh "INTERNAL VARIABLES" 7 +.Mx -anchor-spass Ss "Initial settings" 7 +.Mx -anchor-spass Ss "Variables" 7 +.Mx -anchor-spass Sh "ENVIRONMENT" 8 +.Mx -anchor-spass Sh "FILES" 9 +.Mx -anchor-spass Ss "Resource files" 9 +.Mx -anchor-spass Ss "The mime.types files" 9 +.Mx -anchor-spass Ss "The Mailcap files" 9 +.Mx -anchor-spass Ss "The .netrc file" 9 +.Mx -anchor-spass Sh "EXAMPLES" 10 +.Mx -anchor-spass Ss "An example configuration" 10 +.Mx -anchor-spass Ss "S/MIME step by step" 10 +.Mx -anchor-spass Ss "Using CRLs with S/MIME or SSL/TLS" 10 +.Mx -anchor-spass Sh "FAQ" 11 +.Mx -anchor-spass Ss "\*(UA shortly hangs on startup" 11 +.Mx -anchor-spass Ss "I cannot login to Google mail aka GMail" 11 +.Mx -anchor-spass Ss "Not \(dqdefunctional\(dq, but the editor key does not work" 11 +.Mx -anchor-spass Sh "IMAP CLIENT" 12 +.Mx -anchor-spass Sh "SEE ALSO" 13 +.Mx -anchor-spass Sh "HISTORY" 14 +.Mx -anchor-spass Sh "AUTHORS" 15 +.Mx -anchor-spass Sh "CAVEATS" 16 +.Mx -anchor-spass Sh "BUGS" 17 +.Mx -anchor-spass Fl ":" +.Mx -anchor-spass Fl "A" +.Mx -anchor-spass Fl "a" +.Mx -anchor-spass ixsx "character set specification" +.Mx -anchor-spass Fl "b" +.Mx -anchor-spass Fl "c" +.Mx -anchor-spass Fl "d" +.Mx -anchor-spass Fl "E" +.Mx -anchor-spass Fl "e" +.Mx -anchor-spass Fl "F" +.Mx -anchor-spass Fl "f" +.Mx -anchor-spass Fl "H" +.Mx -anchor-spass Fl "h" +.Mx -anchor-spass Fl "i" +.Mx -anchor-spass Fl "L" +.Mx -anchor-spass Fl "M" +.Mx -anchor-spass Fl "m" +.Mx -anchor-spass Fl "N" +.Mx -anchor-spass Fl "n" +.Mx -anchor-spass Fl "q" +.Mx -anchor-spass Fl "R" +.Mx -anchor-spass Fl "r" +.Mx -anchor-spass Fl "S" +.Mx -anchor-spass Fl "s" +.Mx -anchor-spass Fl "t" +.Mx -anchor-spass Fl "u" +.Mx -anchor-spass Fl "V" +.Mx -anchor-spass Fl "v" +.Mx -anchor-spass Fl "X" +.Mx -anchor-spass Fl "~" +.Mx -anchor-spass Fl "#" +.Mx -anchor-spass Fl "." +.Mx -anchor-spass Cd "mle-go-home" +.Mx -anchor-spass Cd "mle-go-bwd" +.Mx -anchor-spass Cd "mle-del-fwd" +.Mx -anchor-spass Cd "mle-go-end" +.Mx -anchor-spass Cd "mle-go-fwd" +.Mx -anchor-spass Cd "mle-reset" +.Mx -anchor-spass Cd "mle-del-bwd" +.Mx -anchor-spass Cd "mle-complete" +.Mx -anchor-spass Cd "mle-commit" +.Mx -anchor-spass Cd "mle-snarf-end" +.Mx -anchor-spass Cd "mle-repaint" +.Mx -anchor-spass Cd "mle-hist-fwd" +.Mx -anchor-spass Cd "mle-hist-bwd" +.Mx -anchor-spass Cd "mle-quote-rndtrip" +.Mx -anchor-spass Cd "mle-hist-srch-bwd" +.Mx -anchor-spass Cd "mle-hist-srch-fwd" +.Mx -anchor-spass Cd "mle-paste" +.Mx -anchor-spass Cd "mle-snarf-line" +.Mx -anchor-spass Cd "mle-prompt-char" +.Mx -anchor-spass Cd "mle-snarf-word-bwd" +.Mx -anchor-spass Cd "mle-go-word-fwd" +.Mx -anchor-spass Cd "mle-go-word-bwd" +.Mx -anchor-spass Cd "mle-cancel" +.Mx -anchor-spass Cd "mle-snarf-word-fwd" +.Mx -anchor-spass Cd "mle-fullreset" +.Mx -anchor-spass Cd "mle-bell" +.Mx -anchor-spass Cm "\e" +.Mx -anchor-spass Cm "ignerr" +.Mx -anchor-spass Cm "vput" +.Mx -anchor-spass Cm "wysh" +.Mx -anchor-spass ixsx "primary system mailbox" +.Mx -anchor-spass ixsx "secondary mailbox" +.Mx -anchor-spass Ic "!" +.Mx -anchor-spass Ic "#" +.Mx -anchor-spass Ic "+" +.Mx -anchor-spass Ic "-" +.Mx -anchor-spass Ic "=" +.Mx -anchor-spass Ic "?" +.Mx -anchor-spass Ic "|" +.Mx -anchor-spass Ic "account" +.Mx -anchor-spass Ic "unaccount" +.Mx -anchor-spass Ic "addrcodec" +.Mx -anchor-spass Ic "alias" +.Mx -anchor-spass Ic "unalias" +.Mx -anchor-spass Ic "alternates" +.Mx -anchor-spass Ic "unalternates" +.Mx -anchor-spass Ic "answered" +.Mx -anchor-spass Ic "unanswered" +.Mx -anchor-spass Ic "bind" +.Mx -anchor-spass Ic "unbind" +.Mx -anchor-spass Ic "call" +.Mx -anchor-spass Ic "call_if" +.Mx -anchor-spass Ic "cd" +.Mx -anchor-spass Ic "certsave" +.Mx -anchor-spass Ic "charsetalias" +.Mx -anchor-spass Ic "uncharsetalias" +.Mx -anchor-spass Ic "chdir" +.Mx -anchor-spass Ic "collapse" +.Mx -anchor-spass Ic "uncollapse" +.Mx -anchor-spass Ic "colour" +.Mx -anchor-spass Ic "uncolour" +.Mx -anchor-spass Ic "commandalias" +.Mx -anchor-spass Ic "uncommandalias" +.Mx -anchor-spass Ic "Copy" +.Mx -anchor-spass Ic "copy" +.Mx -anchor-spass Ic "cwd" +.Mx -anchor-spass Ic "Decrypt" +.Mx -anchor-spass Ic "decrypt" +.Mx -anchor-spass Ic "define" +.Mx -anchor-spass Ic "undefine" +.Mx -anchor-spass Ic "delete" +.Mx -anchor-spass Ic "undelete" +.Mx -anchor-spass Ic "discard" +.Mx -anchor-spass Ic "dp" +.Mx -anchor-spass Ic "dt" +.Mx -anchor-spass Ic "dotmove" +.Mx -anchor-spass Ic "draft" +.Mx -anchor-spass Ic "undraft" +.Mx -anchor-spass Ic "echo" +.Mx -anchor-spass Ic "echoerr" +.Mx -anchor-spass Ic "echon" +.Mx -anchor-spass Ic "echoerrn" +.Mx -anchor-spass Ic "edit" +.Mx -anchor-spass Ic "elif" +.Mx -anchor-spass Ic "else" +.Mx -anchor-spass Ic "endif" +.Mx -anchor-spass Ic "environ" +.Mx -anchor-spass Ic "errors" +.Mx -anchor-spass Ic "eval" +.Mx -anchor-spass Ic "exit" +.Mx -anchor-spass Ic "File" +.Mx -anchor-spass Ic "file" +.Mx -anchor-spass Ic "filetype" +.Mx -anchor-spass Ic "unfiletype" +.Mx -anchor-spass Ic "flag" +.Mx -anchor-spass Ic "unflag" +.Mx -anchor-spass Ic "folder" +.Mx -anchor-spass Ic "folders" +.Mx -anchor-spass Ic "Followup" +.Mx -anchor-spass Ic "followup" +.Mx -anchor-spass Ic "followupall" +.Mx -anchor-spass Ic "followupsender" +.Mx -anchor-spass Ic "Forward" +.Mx -anchor-spass Ic "forward" +.Mx -anchor-spass Ic "from" +.Mx -anchor-spass Ic "headerpick" +.Mx -anchor-spass Ic "unheaderpick" +.Mx -anchor-spass Ic "headers" +.Mx -anchor-spass Ic "help" +.Mx -anchor-spass Ic "history" +.Mx -anchor-spass Ic "hold" +.Mx -anchor-spass Ic "if" +.Mx -anchor-spass Ic "ignore" +.Mx -anchor-spass Ic "list" +.Mx -anchor-spass Ic "localopts" +.Mx -anchor-spass Ic "Lreply" +.Mx -anchor-spass Ic "Mail" +.Mx -anchor-spass Ic "mail" +.Mx -anchor-spass Ic "mbox" +.Mx -anchor-spass Ic "mimetype" +.Mx -anchor-spass Ic "unmimetype" +.Mx -anchor-spass Ic "mlist" +.Mx -anchor-spass Ic "unmlist" +.Mx -anchor-spass Ic "mimeview" +.Mx -anchor-spass Ic "mlsubscribe" +.Mx -anchor-spass Ic "unmlsubscribe" +.Mx -anchor-spass Ic "Move" +.Mx -anchor-spass Ic "move" +.Mx -anchor-spass Ic "More" +.Mx -anchor-spass Ic "more" +.Mx -anchor-spass Ic "netrc" +.Mx -anchor-spass Ic "newmail" +.Mx -anchor-spass Ic "next" +.Mx -anchor-spass Ic "New" +.Mx -anchor-spass Ic "new" +.Mx -anchor-spass Ic "noop" +.Mx -anchor-spass Ic "Page" +.Mx -anchor-spass Ic "page" +.Mx -anchor-spass Ic "Pipe" +.Mx -anchor-spass Ic "pipe" +.Mx -anchor-spass Ic "preserve" +.Mx -anchor-spass Ic "Print" +.Mx -anchor-spass Ic "print" +.Mx -anchor-spass Ic "quit" +.Mx -anchor-spass Ic "read" +.Mx -anchor-spass Ic "readctl" +.Mx -anchor-spass Ic "remove" +.Mx -anchor-spass Ic "rename" +.Mx -anchor-spass Ic "Reply" +.Mx -anchor-spass Ic "reply" +.Mx -anchor-spass Ic "replyall" +.Mx -anchor-spass Ic "replysender" +.Mx -anchor-spass Ic "Resend" +.Mx -anchor-spass Ic "resend" +.Mx -anchor-spass Ic "Respond" +.Mx -anchor-spass Ic "respond" +.Mx -anchor-spass Ic "respondall" +.Mx -anchor-spass Ic "respondsender" +.Mx -anchor-spass Ic "retain" +.Mx -anchor-spass Ic "return" +.Mx -anchor-spass Ic "Save" +.Mx -anchor-spass Ic "save" +.Mx -anchor-spass Ic "search" +.Mx -anchor-spass Ic "seen" +.Mx -anchor-spass Ic "set" +.Mx -anchor-spass Ic "unset" +.Mx -anchor-spass Ic "shcodec" +.Mx -anchor-spass Ic "shell" +.Mx -anchor-spass Ic "shortcut" +.Mx -anchor-spass Ic "unshortcut" +.Mx -anchor-spass Ic "shift" +.Mx -anchor-spass Ic "show" +.Mx -anchor-spass Ic "size" +.Mx -anchor-spass Ic "sleep" +.Mx -anchor-spass Ic "sort" +.Mx -anchor-spass Ic "unsort" +.Mx -anchor-spass Ic "source" +.Mx -anchor-spass Ic "source_if" +.Mx -anchor-spass Ic "spamclear" +.Mx -anchor-spass Ic "spamforget" +.Mx -anchor-spass Ic "spamham" +.Mx -anchor-spass Ic "spamrate" +.Mx -anchor-spass Ic "spamset" +.Mx -anchor-spass Ic "spamspam" +.Mx -anchor-spass Ic "Top" +.Mx -anchor-spass Ic "top" +.Mx -anchor-spass Ic "touch" +.Mx -anchor-spass Ic "Type" +.Mx -anchor-spass Ic "type" +.Mx -anchor-spass Ic "unignore" +.Mx -anchor-spass Ic "Unread" +.Mx -anchor-spass Ic "unread" +.Mx -anchor-spass Ic "unretain" +.Mx -anchor-spass Ic "urlcodec" +.Mx -anchor-spass Ic "varedit" +.Mx -anchor-spass Ic "varshow" +.Mx -anchor-spass Ic "verify" +.Mx -anchor-spass Ic "version" +.Mx -anchor-spass Ic "vexpr" +.Mx -anchor-spass Ic "vpospar" +.Mx -anchor-spass Ic "visual" +.Mx -anchor-spass Ic "write" +.Mx -anchor-spass Ic "xcall" +.Mx -anchor-spass Ic "xit" +.Mx -anchor-spass Ic "z" +.Mx -anchor-spass Ic "Z" +.Mx -anchor-spass Ic "~~" +.Mx -anchor-spass Ic "~!" +.Mx -anchor-spass Ic "~." +.Mx -anchor-spass Ic "~:" +.Mx -anchor-spass Ic "~?" +.Mx -anchor-spass Ic "~<" +.Mx -anchor-spass Ic "~> ./mbox.mbox' @@ -1007,7 +1538,6 @@ $ echo safe | LC_ALL=C \e -Sexpandaddr=fail,-all,+addr,failinvaddr -s test \e -. bob@exam.ple .Ed -. .Pp It is possible to create personal distribution lists via the .Ic alias @@ -1032,10 +1562,8 @@ itself; they correlate with the active set of and are subject to .Va metoo filtering. -. .Pp .Dl alias cohorts bill jkf mark kridle@ucbcory ~/mail/cohorts.mbox -. .Pp .Va on-compose-enter , on-compose-leave and @@ -1061,7 +1589,6 @@ for now provide only the hooks .Va on-resend-enter and .Va on-resend-cleanup . ) -. .Pp To avoid environmental noise scripts should .Dq detach @@ -1071,7 +1598,6 @@ environment, ideally with the command line options to disable any configuration file in conjunction with repetitions of .Fl S to specify variables: -. .Bd -literal -offset indent $ env LC_ALL=C \*(uA -:/ \e -Sv15-compat -Ssendwait -Sttycharset=utf-8 \e @@ -1082,7 +1608,6 @@ $ env LC_ALL=C \*(uA -:/ \e -. 'Recipient 1 ' rec2@exam.ple \e < content_file .Ed -. .Pp As shown, scripts can .Dq fake @@ -1095,7 +1620,6 @@ In interactive mode, which is introduced in the next section, messages can be sent by calling the .Ic mail command with a list of recipient addresses: -. .Bd -literal -offset indent $ \*(uA -d -Squiet -Semptystart "/var/spool/mail/user": 0 messages @@ -1104,11 +1628,7 @@ $ \*(uA -d -Squiet -Semptystart ? # Will do the right thing (tm) ? m rec1@exam.ple rec2@exam.ple .Ed -.\" }}} -. -.\" .Ss "On reading mail, and interactive mode" {{{ .Ss "On reading mail, and interactive mode" -. When invoked without addressees \*(UA enters interactive mode in which mails may be read. When used like that the user's system @@ -1135,7 +1655,6 @@ If the initially opened mailbox is empty \*(UA will instead exit immediately (after displaying a message) unless the variable .Va emptystart is set. -. .Pp At the .Va prompt @@ -1157,7 +1676,6 @@ however possible to define overwrites with These commands can also produce a more .Va verbose output. -. .Pp Messages are given numbers (starting at 1) which uniquely identify messages; the current message \(en the @@ -1176,7 +1694,6 @@ whereas .Ic from will display only the summaries of the given messages, defaulting to the .Dq dot . -. .Pp Message content can be displayed with the command .Ic type @@ -1204,7 +1721,6 @@ Message display experience may improve by setting and adjusting .Va mime-counter-evidence , and also see .Sx "HTML mail and MIME attachments" . -. .Pp By default the current message .Pf ( Dq dot ) @@ -1231,10 +1747,8 @@ The command .Ic from ) will display a header summary of the given message specification list instead of their content, e.g., the following will search for subjects: -. .Pp .Dl ? from "'@Some subject to search for'" -. .Pp In the default setup all header fields of a message will be .Ic type Ns @@ -1255,7 +1769,6 @@ Note that historically the global .Pa \*(UR not only adjusts the list of displayed headers, but also sets .Va crt . -. .Pp Dependent upon the configuration a line editor (see the section .Sx "On terminal control and line editor" ) @@ -1292,7 +1805,6 @@ d to other mailboxes, whereas keeps the original message. .Ic write can be used to write out data content of specific parts of messages. -. .Pp After examining a message the user can .Ic reply Ql r @@ -1330,7 +1842,6 @@ and they can spring into existence again via or when the \*(UA session is ended via the .Ic exit Ql x command. -. .Pp To end a mail processing session one may either issue .Ic quit Ql q @@ -1344,11 +1855,7 @@ as well as updating the \*(OPal line editor or use the command .Ic exit Ql x instead in order to prevent any of these actions. -.\" }}} -. -.\" .Ss "HTML mail and MIME attachments" {{{ .Ss "HTML mail and MIME attachments" -. Messages which are HTML-only become more and more common and of course many messages come bundled with a bouquet of MIME (Multipurpose Internet Mail Extensions) parts for, e.g., attachments. @@ -1364,7 +1871,6 @@ often seen in real-life messages, setting .Va mime-counter-evidence will allow \*(UA to verify the given assertion and possibly provide an alternative MIME type. -. .Pp Whereas \*(UA \*(OPally supports a simple HTML-to-text converter for HTML messages, it cannot handle MIME types other than plain text itself. @@ -1377,7 +1883,6 @@ message visualization (a mode which is called or display the content themselves, for example in an external graphical window: such handlers will only be considered by and for the command .Ic mimeview . -. .Pp To install a handler program for a specific MIME type an according .Va pipe-TYPE/SUBTYPE @@ -1389,13 +1894,11 @@ variable can be used \(en these handlers take precedence. RFC 1524; this mechanism (see .Sx "The Mailcap files" ) will be queried for display or quote handlers if none of the former two -.\" TODO v15-compat "will be" -> "is" did; it will be the sole source for handlers of other purpose. A last source for handlers is the MIME type definition itself, when a (\*(UA specific) type-marker was registered with the command .Ic mimetype (which many built-in MIME types do). -. .Pp E.g., to display a HTML message inline (that is, converted to a more fancy plain text representation than the built-in converter is capable to @@ -1406,7 +1909,6 @@ or teach \*(UA about MathML documents and make it display them as plain text, and to open PDF attachments in an external PDF viewer, asynchronously and with some other magic attached: -. .Bd -literal -offset indent ? if [ "$features" !% +filter-html-tagsoup ] ? #set pipe-text/html='@* elinks -force-html -dump 1' @@ -1420,11 +1922,7 @@ asynchronously and with some other magic attached: trap "trap \e"\e" INT QUIT TERM; exit 1" INT QUIT TERM;\e mupdf "${MAILX_FILENAME_TEMPORARY}"' .Ed -.\" }}} -. -.\" .Ss "Mailing lists" {{{ .Ss "Mailing lists" -. \*(UA offers some support to ease handling of mailing lists. The command .Ic mlist @@ -1444,7 +1942,6 @@ format .Ql \&%T can be used to mark out messages with configured list addresses in the header display. -. .Pp \*(OPally mailing lists may also be specified as (extended) regular expressions, which allows matching of many addresses with a single @@ -1452,14 +1949,12 @@ expression. However, all fully qualified list addresses are matched via a fast dictionary, whereas expressions are placed in (a) list(s) which is (are) matched sequentially. -. .Bd -literal -offset indent ? set followup-to followup-to-honour=ask-yes \e reply-to-honour=ask-yes ? wysh mlist a1@b1.c1 a2@b2.c2 '.*@lists\e.c3$' ? mlsubscribe a4@b4.c4 exact@lists.c3 .Ed -. .Pp The variable .Va followup-to-honour @@ -1482,7 +1977,6 @@ is used, when is used to respond to a message with its .Ql Mail-Followup-To: being honoured etc. -. .Pp A difference in between the handling of known and subscribed lists is that the address of the sender is usually not part of a generated @@ -1505,11 +1999,7 @@ for this purpose in order to accept a list administrators' wish that is supposed to have been manifested like that (but only if it provides a single address which resides on the same domain as what is stated in .Ql List-Post: ) . -.\" }}} -. -.\" .Ss "Signed and encrypted messages with S/MIME" {{{ .Ss "Signed and encrypted messages with S/MIME" -. \*(OP S/MIME provides two central mechanisms: message signing and message encryption. A signed message contains some data in addition to the regular text. @@ -1520,7 +2010,6 @@ Signing a message does not change its regular text; it can be read regardless of whether the recipient's software is able to handle S/MIME. It is thus usually possible to sign all outgoing messages if so desired. -. .Pp Encryption, in contrast, makes the message text invisible for all people except those who have access to the secret decryption key. @@ -1532,7 +2021,6 @@ directories. A message should always be signed before it is encrypted. Otherwise, it is still possible that the encrypted message text is altered. -. .Pp A central concept to S/MIME is that of the certification authority (CA). A CA is a trusted institution that issues certificates. @@ -1552,7 +2040,6 @@ and/or to a trusted pool of certificates. In general, a certificate cannot be more secure than the method its CA certificate has been retrieved with. -. .Pp This trusted pool of certificates is used by the command .Ic verify @@ -1561,13 +2048,11 @@ If so, verified sender certificates that were embedded in signed messages can be saved locally with the command .Ic certsave , and used by \*(UA to encrypt further communication with these senders: -. .Bd -literal -offset indent ? certsave FILENAME ? set smime-encrypt-USER@HOST=FILENAME \e smime-cipher-USER@HOST=AES256 .Ed -. .Pp To sign outgoing messages in order to allow receivers to verify the origin of these messages a personal S/MIME certificate is required. @@ -1580,13 +2065,11 @@ shows examplarily how such a private certificate can be obtained. In general, if such a private key plus certificate .Dq pair is available, all that needs to be done is to set some variables: -. .Bd -literal -offset indent ? set smime-sign-cert=ME@HERE.com.paired \e smime-sign-message-digest=SHA256 \e smime-sign .Ed -. .Pp Variables of interest for S/MIME in general are .Va smime-ca-dir , @@ -1605,7 +2088,6 @@ Additional variables of interest for S/MIME en- and decryption: .Va smime-cipher and .Va smime-encrypt-USER@HOST . -. .Pp \*(ID Note that neither S/MIME signing nor encryption applies to message subjects or other header fields yet. @@ -1614,11 +2096,7 @@ and cannot be trusted even if the message content has been verified. When sending signed messages, it is recommended to repeat any important header information in the message text. -.\" }}} -. -.\" .Ss "On URL syntax and credential lookup" {{{ .Ss "On URL syntax and credential lookup" -. \*(IN For accessing protocol-specific resources usage of Uniform Resource Locators (URL, RFC 1738) has become omnipresent. \*(UA expects and understands URLs in the following form; @@ -1637,17 +2115,14 @@ are specified they must be given in URL percent encoded form (RFC 3986; the command .Ic urlcodec may be helpful): -. .Pp .Dl PROTOCOL://[USER[:PASSWORD]@]server[:port][/path] -. .Pp Note that these \*(UA URLs most often do not conform to any real standard, but instead represent a normalized variant of RFC 1738 \(en they are 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. -. .Pp Many internal variables of \*(UA exist in multiple versions, called variable chains for the rest of this document: the plain @@ -1675,7 +2150,6 @@ will never be in URL percent encoded form, whether it came from an URL or not; i.e., variable chain name extensions of .Sx "INTERNAL VARIABLES" must not be URL percent encoded. -. .Pp For example, whether an hypothetical URL .Ql smtp://hey%3Ayou@our.house @@ -1688,11 +2162,9 @@ and the user had been found differently, to lookup the variable chain is defined, then whether .Ql smtp-\:use-\:starttls-\:our.house exists before finally ending up looking at the plain variable itself. -. .Pp \*(UA obeys the following logic scheme when dealing with the necessary credential information of an account: -. .Bl -bullet .It If no @@ -1725,13 +2197,11 @@ If there is still no then \*(UA will fall back to the user who is supposed to run \*(UA, the identity of which has been fixated during \*(UA startup and is known to be a valid user on the current host. -. .It Authentication: unless otherwise noted this will lookup the .Va PROTOCOL-auth-USER@HOST , PROTOCOL-auth-HOST , PROTOCOL-auth variable chain, falling back to a protocol-specific default should this have no success. -. .It If no .Ql PASSWORD @@ -1757,7 +2227,6 @@ If at that point there is still no password available, but the (protocols') chosen authentication type requires a password, then in interactive mode the user will be prompted on the terminal. .El -. .Pp .Sy Note: S/MIME verification works relative to the values found in the @@ -1781,20 +2250,14 @@ and combinations may therefore be involved \(en on the other hand those unusual cases become possible. The usual case is as short as: -. .Pp .Dl set mta=smtp://USER:PASS@HOST smtp-use-starttls \e .Dl \ \ \ \ smime-sign smime-sign-cert=+smime.pair -. .Pp The section .Sx EXAMPLES contains complete example configurations. -.\" }}} -. -.\" .Ss "Character sets" {{{ .Ss "Character sets" -. \*(OP \*(UA detects the character set of the terminal by using mechanisms that are controlled by the .Ev LC_CTYPE @@ -1811,7 +2274,6 @@ and will thus show up in the output of commands like, e.g., .Ic set and .Ic varshow . -. .Pp However, the user may give a value for .Va ttycharset @@ -1826,7 +2288,6 @@ Changing the value does not mean much beside that, because several aspects of the real character set are implied by the locale environment of the system, which stays unaffected by .Va ttycharset . -. .Pp If the \*(OPal character set conversion capabilities are not available .Pf ( Va features @@ -1842,9 +2303,7 @@ may be applied), and the rest of this section does not apply; it may however still be necessary to explicitly set it if automatic detection fails, since in that case it defaults to -.\" (Keep in SYNC: ./nail.1:"Character sets", ./config.h:CHARSET_*!) LATIN1 a.k.a. ISO-8859-1. -. .Pp \*(OP When reading messages, their text is converted into .Va ttycharset @@ -1860,7 +2319,6 @@ of one character set as another one (e.g., to interpret LATIN1 as CP1252). Also see .Va charset-unknown-8bit to deal with another hairy aspect of message interpretation. -. .Pp When sending messages all their parts and attachments are classified. Whereas no character set conversion is performed on those parts which @@ -1876,7 +2334,6 @@ variable, and which defines a catch-all last-resort fallback character set that is implicitly appended to the list of character sets in .Va sendcharsets . -. .Pp When replying to a message and the variable .Va reply-in-same-charset @@ -1887,7 +2344,6 @@ And it is also possible to make \*(UA work even more closely related to the current locale setting automatically by using the variable .Va sendcharsets-else-ttycharset , please see there for more information. -. .Pp All the specified character sets are tried in order unless the conversion of the part or attachment succeeds. @@ -1906,7 +2362,6 @@ In the first case, it is necessary to set an appropriate .Ev LC_CTYPE locale and/or the variable .Va ttycharset . -. .Pp The best results are usually achieved when \*(UA is run in a UTF-8 locale on an UTF-8 capable terminal, in which case the full Unicode @@ -1914,7 +2369,6 @@ spectrum of characters is available. 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. -. .Pp On the other hand the POSIX standard defines a locale-independent 7-bit .Dq portable character set @@ -1927,11 +2381,7 @@ underscore .Ql _ and hyphen-minus .Ql - . -.\" }}} -. -.\" .Ss "Message states" {{{ .Ss "Message states" -. \*(UA differentiates in between several different message states; the current state will be reflected in header summary displays if .Va headline @@ -1962,21 +2412,18 @@ sets the internal and .Va keepsave variables in order to suppress this behaviour. -. .Bl -hang -width ".It Ql new" .It Ql new Message has neither been viewed nor moved to any other state. Such messages are retained even in the .Mx -sx .Sx "primary system mailbox" . -. .It Ql unread Message has neither been viewed nor moved to any other state, but the message was present already when the mailbox has been opened last: Such messages are retained even in the .Mx -sx .Sx "primary system mailbox" . -. .It Ql read The message has been processed by one of the following commands: .Ic ~f , @@ -2022,7 +2469,6 @@ state when the mailbox is left will be saved in the unless the internal variable .Va hold it set. -. .It Ql deleted The message has been processed by one of the following commands: .Ic delete , @@ -2031,12 +2477,10 @@ The message has been processed by one of the following commands: Only .Ic undelete can be used to access such messages. -. .It Ql preserved The message has been processed by a .Ic preserve command and it will be retained in its current location. -. .It Ql saved The message has been processed by one of the following commands: .Ic save @@ -2057,7 +2501,6 @@ when the internal variable .Va keepsave is set. .El -. .Pp In addition to these message states, flags which otherwise have no technical meaning in the mail system except allowing special ways of @@ -2066,7 +2509,6 @@ addressing them when can be set on messages. These flags are saved with messages and are thus persistent, and are portable between a set of widely used MUAs. -. .Bl -hang -width ".It Ic answered" .It Ic answered Mark messages as having been answered. @@ -2075,11 +2517,7 @@ Mark messages as being a draft. .It Ic flag Mark messages which need special attention. .El -.\" }}} -. -.\" .Ss "Specifying messages" {{{ .Ss "Specifying messages" -. Commands such as .Ic from , .Ic type @@ -2102,16 +2540,12 @@ messages 1 through 5 in the sorted/threaded order, as shown in the .Ic headers summary. The following special message names exist: -. -. .Bl -tag -width ".It Ar BaNg" .It Ar \&. The current message, the so-called .Dq dot . -. .It Ar \&; The message that was previously the current message. -. .It Ar \&, The parent message of the current message, that is the message with the Message-ID given in the @@ -2119,7 +2553,6 @@ that is the message with the Message-ID given in the field or the last entry of the .Ql References: field of the current message. -. .It Ar - The next previous undeleted message, or the next previous deleted message for the @@ -2127,7 +2560,6 @@ or the next previous deleted message for the command. In sorted/threaded mode, the next previous such message in the sorted/threaded order. -. .It Ar + The next undeleted message, or the next deleted message for the @@ -2135,7 +2567,6 @@ or the next deleted message for the command. In sorted/threaded mode, the next such message in the sorted/threaded order. -. .It Ar ^ The first undeleted message, or the first deleted message for the @@ -2143,12 +2574,10 @@ or the first deleted message for the command. In sorted/threaded mode, the first such message in the sorted/threaded order. -. .It Ar $ The last message. In sorted/threaded mode, the last message in the sorted/threaded order. -. .It Ar & Ns Ar x In threaded mode, selects the message addressed with @@ -2163,19 +2592,16 @@ If .Ar x is omitted, the thread beginning with the current message is selected. -. .It Ar * All messages. .It Ar ` All messages that were included in the .Sx "Message list arguments" of the previous command. -. .It Ar x-y An inclusive range of message numbers. Selectors that may also be used as endpoints include any of .Ar .;-+^$ . -. .It Ar address A case-insensitive .Dq any substring matches @@ -2194,7 +2620,6 @@ is completely ignored. For finer control and match boundaries use the .Ql @ search expression. -. .It Ar / Ns Ar string All messages that contain .Ar string @@ -2206,7 +2631,6 @@ If .Ar string is empty, the string from the previous specification of that type is used again. -. .It Xo Op Ar @ Ns Ar name-list Ns .Ar @ Ns Ar expr .Xc @@ -2277,7 +2701,6 @@ search expression is to be matched against, prefix the header name .Ql ~ : .Pp .Dl @~f@@a\e.safe\e.domain\e.match$ -. .It Ar :c All messages of state .Ql c , @@ -2324,8 +2747,6 @@ Messages marked as \*(OP Messages with unsure spam classification. .El .El -. -. .Pp \*(OP IMAP-style SEARCH expressions may also be used. This addressing mode is available with all types of mailbox @@ -2343,17 +2764,14 @@ When the description indicates that the representation of an address field is used, this means that the search string is checked against both a list constructed as -. .Bd -literal -offset indent (\*qname\*q \*qsource\*q \*qlocal-part\*q \*qdomain-part\*q) .Ed -. .Pp for each address, and the addresses without real names from the respective header field. These search expressions can be nested using parentheses, see below for examples. -. .Pp .Bl -tag -compact -width ".It Ar _n_u" .It Ar ( criterion ) @@ -2361,7 +2779,6 @@ All messages that satisfy the given .Ar criterion . .It Ar ( criterion1 criterion2 ... criterionN ) All messages that satisfy all of the given criteria. -. .It Ar ( or criterion1 criterion2 ) All messages that satisfy either .Ar criterion1 @@ -2383,7 +2800,6 @@ operation of independent criteria on the lowest nesting level, it is possible to achieve similar effects by using three separate criteria, as with .Ql (a) (b) (c) . -. .It Ar ( not criterion ) All messages that do not satisfy .Ar criterion . @@ -2439,7 +2855,6 @@ All messages that are larger than All messages that are smaller than .Ar size (in bytes). -. .It Ar ( before date ) All messages that were received before .Ar date , @@ -2455,7 +2870,6 @@ and .Ql yyyy is the year as four digits, e.g., .Ql 28-Dec-2012 . -. .It Ar ( on date ) All messages that were received on the specified date. .It Ar ( since date ) @@ -2472,11 +2886,7 @@ This specification cannot be used as part of another criterion. If the previous command line contained more than one independent criterion then the last of those criteria is used. .El -.\" }}} -. -.\" .Ss "On terminal control and line editor" {{{ .Ss "On terminal control and line editor" -. \*(OP Terminal control will be realized through one of the standard .Ux libraries, either the @@ -2489,7 +2899,6 @@ Terminal control will enhance or enable interactive usage aspects, e.g., .Sx "Coloured display" , and extend behaviour of the Mailx-Line-Editor (MLE), which may learn the byte-sequences of keys like the cursor and function keys. -. .Pp The internal variable .Va termcap @@ -2506,7 +2915,6 @@ setting the internal variable will be queried regardless, which is true even if the \*(OPal library support has not been enabled at configuration time as long as some other \*(OP which (may) query terminal control sequences has been enabled. -. .Pp \*(OP The built-in Mailx-Line-Editor (MLE) should work in all environments which comply to the ISO C standard @@ -2523,7 +2931,6 @@ entries in the internal variable will help shall the MLE misbehave, see there for more. The MLE can support a little bit of .Ic colour . -. .Pp \*(OP If the .Ic history @@ -2539,7 +2946,6 @@ internal variables .Va history-gabby-persist and .Va history-size . -. .Pp 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 @@ -2562,20 +2968,16 @@ an action which can then be suppressed completely by setting notation is used in the following; combinations not mentioned either cause job control signals or do not generate a (unique) keycode: -. -. .Pp .Bl -tag -compact -width ".It Ql \eBa" .It Ql \ecA Go to the start of the line .Mx .Pf ( Cd mle-go-home ) . -. .It Ql \ecB Move the cursor backward one character .Mx .Pf ( Cd mle-go-bwd ) . -. .It Ql \ecD Forward delete the character under the cursor; quits \*(UA if used on the empty line unless the internal variable @@ -2583,17 +2985,14 @@ quits \*(UA if used on the empty line unless the internal variable is set .Mx .Pf ( Cd mle-del-fwd ) . -. .It Ql \ecE Go to the end of the line .Mx .Pf ( Cd mle-go-end ) . -. .It Ql \ecF Move the cursor forward one character .Mx .Pf ( Cd mle-go-fwd ) . -. .It Ql \ecG Cancel current operation, full reset. If there is an active history search or tabulator expansion then this @@ -2601,12 +3000,10 @@ command will first reset that, reverting to the former line content; thus a second reset is needed for a full reset in this case .Mx .Pf ( Cd mle-reset ) . -. .It Ql \ecH Backspace: backward delete one character .Mx .Pf ( Cd mle-del-bwd ) . -. .It Ql \ecI \*(NQ Horizontal tabulator: @@ -2616,37 +3013,30 @@ try to expand the word before the cursor, supporting the usual .Pf ( Cd mle-complete ) . This is affected by .Cd mle-quote-rndtrip . -. .It Ql \ecJ Newline: commit the current line .Mx .Pf ( Cd mle-commit ) . -. .It Ql \ecK Cut all characters from the cursor to the end of the line .Mx .Pf ( Cd mle-snarf-end ) . -. .It Ql \ecL Repaint the line .Mx .Pf ( Cd mle-repaint ) . -. .It Ql \ecN \*(OP Go to the next history entry .Mx .Pf ( Cd mle-hist-fwd ) . -. .It Ql \ecO (\*(OPally context-dependent) Invokes the command .Ic dt . -. .It Ql \ecP \*(OP Go to the previous history entry .Mx .Pf ( Cd mle-hist-bwd ) . -. .It Ql \ecQ Toggle roundtrip mode shell quotes, where produced, on and off @@ -2655,22 +3045,18 @@ on and off This setting is temporary, and will be forgotten once the command line is committed; also see .Ic shcodec . -. .It Ql \ecR \*(OP Complete the current line from (the remaining) older history entries .Mx .Pf ( Cd mle-hist-srch-bwd ) . -. .It Ql \ecS \*(OP Complete the current line from (the remaining) newer history entries .Mx .Pf ( Cd mle-hist-srch-fwd ) . -. .It Ql \ecT Paste the snarf buffer .Mx .Pf ( Cd mle-paste ) . -. .It Ql \ecU The same as .Ql \ecA @@ -2678,7 +3064,6 @@ followed by .Ql \ecK .Mx .Pf ( Cd mle-snarf-line ) . -. .It Ql \ecV Prompts for a Unicode character (its hexadecimal number) to be inserted .Mx @@ -2690,23 +3075,19 @@ that shortcut purpose); this control code is special-treated and cannot be part of any other sequence, because any occurrence will perform the .Cd mle-prompt-char function immediately. -. .It Ql \ecW Cut the characters from the one preceding the cursor to the preceding word boundary .Mx .Pf ( Cd mle-snarf-word-bwd ) . -. .It Ql \ecX Move the cursor forward one word boundary .Mx .Pf ( Cd mle-go-word-fwd ) . -. .It Ql \ecY Move the cursor backward one word boundary .Mx .Pf ( Cd mle-go-word-bwd ) . -. .It Ql \ec[ Escape: reset a possibly used multibyte character input state machine and \*(OPally a lingering, incomplete key binding @@ -2719,46 +3100,35 @@ purpose). This control code may also be part of a multi-byte sequence, but if a sequence is active and the very control code is currently also an expected input, then it will first be consumed by the active sequence. -. .It Ql \ec\e (\*(OPally context-dependent) Invokes the command .Ql Ic z Ns + . -. .It Ql \ec] (\*(OPally context-dependent) Invokes the command .Ql Ic z Ns $ . -. .It Ql \ec^ (\*(OPally context-dependent) Invokes the command .Ql Ic z Ns 0 . -. .It Ql \ec_ Cut the characters from the one after the cursor to the succeeding word boundary .Mx .Pf ( Cd mle-snarf-word-fwd ) . -. .It Ql \ec? Backspace: .Cd mle-del-bwd . -. .It \(en .Mx .Cd mle-fullreset : different to .Cd mle-reset this will immediately reset a possibly active search etc. -. .It \(en .Mx .Cd mle-bell : ring the audible bell. .El -.\" }}} -. -.\" .Ss "Coloured display" {{{ .Ss "Coloured display" -. \*(OP \*(UA can be configured to support a coloured display and font attributes by emitting ANSI a.k.a. ISO 6429 SGR (select graphic rendition) escape sequences. @@ -2768,7 +3138,6 @@ environment variable .Ev TERM and which can be fine-tuned by the user via the internal variable .Va termcap . -. .Pp On top of what \*(UA knows about the terminal the boolean variable .Va colour-pager @@ -2786,7 +3155,6 @@ support those sequences. environment it is often enough to simply set .Va colour-pager ; please refer to that variable for more on this topic. -. .Pp If the variable .Va colour-disable @@ -2794,7 +3162,6 @@ is set then any active usage of colour and font attribute sequences is suppressed, but without affecting possibly established .Ic colour mappings. -. .Pp To define and control colours and font attributes a single multiplexer command family exists: @@ -2806,7 +3173,6 @@ can be used to remove mappings of a given colour type. Since colours are only available in interactive mode, it may make sense to conditionalize the colour setup by encapsulating it with .Ic if : -. .Bd -literal -offset indent if terminal && [ "$features" =% +colour ] colour iso view-msginfo ft=bold,fg=green @@ -2820,11 +3186,7 @@ if terminal && [ "$features" =% +colour ] colour mono view-header ft=bold,ft=reverse subject,from endif .Ed -.\" }}} -. -.\" .Ss "Handling spam" {{{ .Ss "Handling spam" -. \*(OP \*(UA can make use of several spam interfaces for the purpose of identification of, and, in general, dealing with spam messages. A precondition of most commands in order to function is that the @@ -2841,7 +3203,6 @@ message specifications will address respective messages and their entries will be used when displaying the .Va headline in the header display. -. .Bl -bullet .It .Ic spamrate @@ -2877,7 +3238,6 @@ will simply set and clear, respectively, the mentioned volatile .Ql is-spam message flag, without any interface interaction. .El -. .Pp The .Xr spamassassin 1 @@ -2889,16 +3249,13 @@ requires a running instance of the server in order to function, started with the option .Fl -allow-tell shall Bayesian filter learning be possible. -. .Bd -literal -offset indent $ spamd -i localhost:2142 -i /tmp/.spamsock -d [-L] [-l] $ spamd --listen=localhost:2142 --listen=/tmp/.spamsock \e --daemonize [--local] [--allow-tell] .Ed -. .Pp Thereafter \*(UA can make use of these interfaces: -. .Bd -literal -offset indent $ \*(uA -Sspam-interface=spamc -Sspam-maxsize=500000 \e -Sspamc-command=/usr/local/bin/spamc \e @@ -2908,13 +3265,11 @@ $ \*(uA -Sspam-interface=spamc -Sspam-maxsize=500000 \e -Sspamc-command=/usr/local/bin/spamc \e -Sspamc-arguments="-d localhost -p 2142" -Sspamc-user= .Ed -. .Pp Using the generic filter approach allows usage of programs like .Xr bogofilter 1 . Here is an example, requiring it to be accessible via .Ev PATH : -. .Bd -literal -offset indent $ \*(uA -Sspam-interface=filter -Sspam-maxsize=500000 \e -Sspamfilter-ham="bogofilter -n" \e @@ -2924,12 +3279,10 @@ $ \*(uA -Sspam-interface=filter -Sspam-maxsize=500000 \e -Sspamfilter-spam="bogofilter -s" \e -Sspamfilter-rate-scanscore="1;^(.+)$" .Ed -. .Pp Because messages must exist on local storage in order to be scored (or used for Bayesian filter training), it is possibly a good idea to perform the local spam check last: -. .Bd -literal -offset indent define spamdelhook { # Server side DCC @@ -2944,7 +3297,6 @@ define spamdelhook { } set folder-hook-FOLDER=spamdelhook .Ed -. .Pp See also the documentation for the variables .Va spam-interface , spam-maxsize , @@ -2953,14 +3305,7 @@ See also the documentation for the variables spamfilter-rate and .Va spamfilter-rate-scanscore . -.\" }}} -. -.\" }}} (DESCRIPTION) -. -. -.\" .Sh COMMANDS {{{ .Sh COMMANDS -. \*(UA reads input in lines. An unquoted reverse solidus .Ql \e @@ -2976,7 +3321,6 @@ are removed from the beginning and end. Placing any whitespace characters at the beginning of a line will prevent a possible addition of the command line to the \*(OPal .Ic history . -. .Pp The beginning of such input lines is then scanned for the name of a known command: command names may be abbreviated, in which case the @@ -2993,7 +3337,6 @@ input line will be interpreted according to command-specific rules: so that a single input line may actually consist of multiple commands, but others pass it unchanged as .Sx "Raw data arguments for codec commands" . -. .Pp The command .Ic list @@ -3013,7 +3356,6 @@ with these documentation strings both commands support a more .Va verbose listing mode which includes the argument type of the command and other information which applies; a handy suggestion might thus be: -. .Bd -literal -offset indent ? define __xv { # Before v15: need to enable sh(1)ell-style on _entire_ line! @@ -3022,12 +3364,8 @@ information which applies; a handy suggestion might thus be: ? commandalias xv '\ecall __xv' ? xv help set .Ed -. -.\" .Ss "Command modifiers" {{{ .Ss "Command modifiers" -. Commands may be prefixed by one or multiple command modifiers. -. .Bl -bullet .It The modifier reverse solidus @@ -3043,7 +3381,6 @@ even if an (command)alias of the same name exists. .Ic commandalias content may itself contain further command modifiers, including an initial reverse solidus to prevent further expansions. -. .It The modifier .Mx @@ -3058,7 +3395,6 @@ mode. one of the .Sx "INTERNAL VARIABLES" , will be set to the real exit status of the command regardless. -. .It Some commands support the .Mx @@ -3088,7 +3424,6 @@ the exit status .Va \&? should be set to .Ql -1 . -. .It Last, but not least, the modifier .Mx @@ -3098,11 +3433,7 @@ can be used for some old and established commands to choose the new rules over the traditional .Sx "Old-style argument quoting" . .El -.\" }}} -. -.\" .Ss "Message list arguments" {{{ .Ss "Message list arguments" -. Some commands expect arguments that represent messages (actually their symbolic message numbers), as has been documented above under .Sx "Specifying messages" @@ -3113,11 +3444,7 @@ 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, an error message is shown and the command is aborted. -.\" }}} -. -.\" .Ss "Old-style argument quoting" {{{ .Ss "Old-style argument quoting" -. \*(ID This section documents the old, traditional style of quoting non-message-list arguments to commands which expect this type of arguments: whereas still used by the majority of such commands, the new @@ -3129,8 +3456,6 @@ one of the 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, e.g., generate control characters. -. -. .Bl -bullet -offset indent .It An argument can be enclosed between paired double-quotes @@ -3148,21 +3473,15 @@ used nonetheless by escaping it with a reverse solidus .Ql \e , as in .Ql """y\e""ou""" . -. .It An argument that is not enclosed in quotes, as above, can usually still contain space characters if those spaces are reverse solidus escaped, as in .Ql you\e are . -. .It A reverse solidus outside of the enclosing quotes is discarded and the following character is treated literally as part of the argument. .El -.\" }}} -. -.\" .Ss "Shell-style argument quoting" {{{ .Ss "Shell-style argument quoting" -. Commands which don't expect message-list arguments use .Xr sh 1 Ns ell-style, and therefore POSIX standardized, argument parsing and @@ -3171,7 +3490,6 @@ quoting rules. \*(NQ, some elder ones can use them with the command modifier .Cm wysh ; in the future only this type of argument quoting will remain. -. .Pp A command line is parsed from left to right and an input token is completed whenever an unquoted, otherwise ignored, metacharacter is seen. @@ -3194,7 +3512,6 @@ that the supports are not used, and are treated as ordinary characters: for one these characters are a vivid part of email addresses, and it seems highly unlikely that their function will become meaningful to \*(UA. -. .Bd -filled -offset indent .Sy Compatibility note: \*(ID Please note that even many new-style commands do not yet honour @@ -3216,7 +3533,6 @@ parameters fully support for an almost shell-compatible field splitting: .Ic call , call_if , read , vpospar , xcall . .Ed -. .Pp Any unquoted number sign .Ql # @@ -3233,7 +3549,6 @@ as well as .Sx ENVIRONMENT (shell) variables can be accessed through this mechanism, brace enclosing the name is supported (i.e., to subdivide a token). -. .Pp Whereas the metacharacters .Cm space , tabulator , newline @@ -3251,30 +3566,24 @@ and making the remainder of the line a subject to reevaluation. With sequencing, multiple command argument types and quoting rules may therefore apply to a single line, which can become problematic before v15: e.g., the first of the following will cause surprising results. -. .Pp .Dl ? echo one; set verbose; echo verbose=$verbose. .Dl ? echo one; wysh set verbose; echo verbose=$verbose. -. .Pp Quoting is a mechanism that will remove the special meaning of metacharacters and reserved words, and will prevent expansion. There are four quoting mechanisms: the escape character, single-quotes, double-quotes and dollar-single-quotes: -. -. .Bl -bullet -offset indent .It The literal value of any character can be preserved by preceding it with the escape character reverse solidus .Ql \e . -. .It Arguments which are enclosed in .Ql 'single-\:quotes' retain their literal value. A single-quote cannot occur within single-quotes. -. .It The literal value of all characters enclosed in .Ql \(dqdouble-\:quotes\(dq @@ -3294,7 +3603,6 @@ double-quote .Ql \e (to prevent escaping, i.e., to embed a reverse solidus character as-is), but has no special meaning otherwise. -. .It Arguments enclosed in .Ql $'dollar-\:single-\:quotes' @@ -3391,20 +3699,14 @@ Brace enclosing the name is supported. Not yet supported, just to raise awareness: Non-standard extension. .El .El -. .Pp Caveats: -. .Bd -literal -offset indent ? echo 'Quotes '${HOME}' and 'tokens" differ!"# no comment ? echo Quotes ${HOME} and tokens differ! # comment ? echo Don"'"t you worry$'\ex21' The sun shines on us. $'\eu263A' .Ed -.\" }}} -. -.\" .Ss "Raw data arguments for codec commands" {{{ .Ss "Raw data arguments for codec commands" -. A special set of commands, which all have the string .Dq codec in their name, e.g., @@ -3419,7 +3721,6 @@ one-to-one the desired or questionable data. To gain a level of expansion, the entire command line can be .Ic eval Ns uated first, e.g., -. .Bd -literal -offset indent ? vput shcodec res encode /usr/Sch\[:o]nes Wetter/heute.txt ? echo $res @@ -3429,21 +3730,15 @@ $'/usr/Sch\eu00F6nes Wetter/heute.txt' ? eval shcodec d $res /usr/Sch\[:o]nes Wetter/heute.txt .Ed -.\" }}} -. -.\" .Ss "Filename transformations" {{{ .Ss "Filename transformations" -. Filenames, where expected, and unless documented otherwise, are subsequently subject to the following filename transformations, in sequence: -. .Bl -bullet -offset indent .It If the given name is a registered .Ic shortcut , it will be replaced with the expanded shortcut. -. .It The filename is matched against the following patterns or strings: .Pp @@ -3489,7 +3784,6 @@ session will be moved to the .Ev MBOX mailbox instead of simply being flagged as read. .El -. .It Meta expansions are applied to the resulting filename, as applicable to the resulting file access protocol (also see @@ -3523,16 +3817,9 @@ arguments will usually be displayed in a properly quoted form, e.g., a file may be displayed as .Ql 'diet\e is \ecurd.txt' . .El -.\" }}} -. -.\" .Ss "Commands" {{{ .Ss "Commands" -. The following commands are available: -. .Bl -tag -width ".It Ic BaNg" -. -. .Mx .It Ic \&! Executes the @@ -3554,7 +3841,6 @@ an error happened before the command was executed, or that the program did not exit cleanly, but, e.g., due to a signal: the error number is .Va ^ERR Ns -CHILD , then. -. .Pp In conjunction with the .Cm vput @@ -3570,8 +3856,6 @@ In case of catchable out-of-memory situations .Va ^ERR Ns -NOMEM will occur and \*(UA will try to store the empty string, just like with all other detected error conditions. -. -. .Mx .It Ic # The comment-command causes the entire line to be ignored. @@ -3581,23 +3865,19 @@ arguments, not a .Dq comment-start indicating special character, which means that, e.g., trailing comments on a line are not possible. -. .Mx .It Ic + Goes to the next message in sequence and types it (like .Dq ENTER ) . -. .Mx .It Ic - Display the preceding message, or the n'th previous message if given a numeric argument n. -. .Mx .It Ic = Show the current message number (the .Dq dot ) . -. .Mx .It Ic \&? Show a brief summary of commands. @@ -3614,13 +3894,11 @@ This mode also supports a more .Va verbose output, which will provide the informations documented for .Ic list . -. .Mx .It Ic \&| A synonym for the .Ic pipe command. -. .Mx .Mx .It Ic account , unaccount @@ -3659,8 +3937,6 @@ account myisp { set mta=smtp://mylogin@smtp.myisp.example } .Ed -. -. .Mx .It Ic addrcodec Perform email address codec transformations on raw-data argument, rather @@ -3677,7 +3953,6 @@ The first argument must be either or .Ar s[kin] , and specifies the operation to perform on the rest of the line. -. .Pp Decoding will show how a standard-compliant MUA will display the given argument, which should be an email address. @@ -3686,7 +3961,6 @@ standards, and vary wildly when (comments) in parenthesis, .Dq double-quoted strings, or quoted-pairs, as below, become involved. \*(ID \*(UA currently does not perform decoding when displaying addresses. -. .Pp Skinning is identical to decoding but only outputs the plain address, without any string, comment etc. components. @@ -3696,7 +3970,6 @@ set to .Va ^ERR Ns -INVAL if decoding fails to find a(n) (valid) email address, in which case the unmodified input will be output again. -. .Pp Encoding supports four different modes, lesser automated versions can be chosen by prefixing one, two or three plus signs: the standard imposes @@ -3714,7 +3987,6 @@ The result will always be valid, if a successful exit status is reported. .Ql > if the construct becomes more difficult, otherwise the current parser will fail; it is not smart enough to guess right. -. .Bd -literal -offset indent ? addrc enc "Hey, you",\e out\e there "\e"Hey, you\e", \e\e out\e\e there" @@ -3723,8 +3995,6 @@ will fail; it is not smart enough to guess right. ? addrc s "\e"Hey, you\e", \e\e out\e\e there" diet@exam.ple .Ed -. -. .Mx .Mx .It Ic alias , unalias @@ -3742,7 +4012,6 @@ Alias names are restricted to alphabetic characters, digits, the underscore, hyphen-minus, the number sign, colon, commercial at and period, the last character can also be the dollar sign: .Ql [[:alnum:]_#:@.-]+$? . -. .Mx .Mx .It Ic alternates , unalternates @@ -3768,7 +4037,6 @@ There is a set of implicit alternates which is formed of the values of .Va sender and .Va replyto . -. .Mx .Mx .It Ic answered , unanswered @@ -3781,8 +4049,6 @@ to automatically if the variable is set. See the section .Sx "Message states" . -. -. .Mx .Mx .It Ic bind , unbind @@ -3799,7 +4065,6 @@ Due to initialization order unbinding will not work for built-in key bindings upon program startup, however: please use .Va line-editor-no-defaults for this purpose instead. -. .Pp With one argument the former command shows all key bindings for the given context, specifying an asterisk @@ -3821,7 +4086,6 @@ expansion shall instead be furtherly editable by the user, a commercial at (that will be removed) can be placed last in the expansion, from which leading and trailing whitespace will finally be removed. Reverse solidus cannot be used as the last character of expansion. -. .Pp Contexts define when a binding applies, i.e., a binding will not be seen unless the context for which it is defined for is currently active. @@ -3836,7 +4100,6 @@ the context which is used in all not otherwise documented situations, and .Ql compose , which applies to compose mode only. -. .Pp .Dq Keys which form the binding are specified as a comma-separated list of @@ -3855,7 +4118,6 @@ by the \*(OPal control library or was defined via the internal variable Input sequences are not case-normalized, so that an exact match is required to update or remove a binding. Examples: -. .Bd -literal -offset indent ? bind base $'\eE',d mle-snarf-word-fwd # Esc(ape) ? bind base $'\eE',$'\ec?' mle-snarf-word-bwd # Esc, Delete @@ -3864,7 +4126,6 @@ Examples: ? bind default :kf1 File % ? bind compose :kf1 ~e .Ed -. .Pp Note that the entire comma-separated list is first parsed (over) as a shell-token with whitespace as the field separator, before being parsed @@ -3876,7 +4137,6 @@ defunctional if the locale does not support Unicode (see .Sx "Character sets" ) , and using terminal capabilities does so if no (corresponding) terminal control support is (currently) available. -. .Pp The following terminal capability names are built-in and can be used in .Xr terminfo 5 @@ -3892,7 +4152,6 @@ or the given terminal type; using the .Fl \&\&x flag will also show supported (non-standard) extensions. -. .Pp .Bl -tag -compact -width kcuuf_or_kcuuf .It Cd kbs Ns \0or Cd kb @@ -3952,7 +4211,6 @@ and .Cd F9 , respectively. .El -. .Pp Some terminals support key-modifier combination extensions, e.g., .Ql Alt+Shift+xy . @@ -3977,7 +4235,6 @@ finally The same for the left cursor key, .Cd kcub1 : .Cd KLFT , KLFT3 , KLFT4 , KLFT5 , KLFT6 , KLFT7 , KLFT8 . -. .Pp It is advisable to use an initial escape or other control character (e.g., .Ql \ecA ) @@ -3987,8 +4244,6 @@ input belongs to key sequences or not; it also reduces search time. Adjusting .Va bind-timeout may help shall keys and sequences be falsely recognized. -. -. .Mx .It Ic call \*(NQ Calls the given macro, which must have been created via @@ -4018,7 +4273,6 @@ can be reverted before the current level regains control by setting for called macro(s) (or in them, of course). Macro execution can be terminated at any time by calling .Ic return . -. .Pp Calling macros recursively will at some time excess the stack size limit, causing a hard program abortion; if recursively calling a macro @@ -4031,7 +4285,6 @@ Numeric and string operations can be performed via and .Ic eval may be helpful to recreate argument lists. -. .Bd -literal -offset indent define exmac { echo Parameter 1 of ${#} is ${1}, all: ${*} / ${@} @@ -4039,8 +4292,6 @@ define exmac { } call exmac Hello macro exmac! .Ed -. -. .Mx .It Ic call_if Identical to @@ -4048,7 +4299,6 @@ Identical to if the given macro has been created via .Ic define , but doesn't fail nor warn if the macro doesn't exist. -. .Mx .It Ic cd (ch) Change the working directory to @@ -4056,7 +4306,6 @@ but doesn't fail nor warn if the macro doesn't exist. or the given argument. Synonym for .Ic chdir . -. .Mx .It Ic certsave \*(OP Only applicable to S/MIME signed messages. @@ -4067,7 +4316,6 @@ The certificates can later be used to send encrypted messages to the respective message senders by setting .Va smime-encrypt-USER@HOST variables. -. .Mx .Mx .It Ic charsetalias , uncharsetalias @@ -4091,7 +4339,6 @@ existing aliases, as necessary. The latter deletes all aliases given as arguments, the special argument .Ql * will remove all aliases. -. .Mx .It Ic chdir (ch) Change the working directory to @@ -4099,7 +4346,6 @@ will remove all aliases. or the given argument. Synonym for .Ic cd . -. .Mx .Mx .It Ic collapse , uncollapse @@ -4112,8 +4358,6 @@ messages and the Also when a message with collapsed replies is displayed, all of these are automatically uncollapsed. The latter command undoes collapsing. -. -. .Mx .Mx .It Ic colour , uncolour @@ -4134,7 +4378,6 @@ or for monochrome terminals. Monochrome terminals cannot deal with colours, but only (some) font attributes. -. .Pp Without further arguments the list of all currently defined mappings for the given colour type is shown (as a special case giving @@ -4152,7 +4395,6 @@ a last resort. The types of precondition available depend on the mappable slot (see .Sx "Coloured display" for some examples), the following of which exist: -. .Pp Mappings prefixed with .Ql mle- @@ -4168,7 +4410,6 @@ a line cannot be fully displayed on the screen. Used for the .Va prompt . .El -. .Pp Mappings prefixed with .Ql sum- @@ -4199,7 +4440,6 @@ For the thread structure which can be created with the format of the variable .Va headline . .El -. .Pp Mappings prefixed with .Ql view- @@ -4223,12 +4463,10 @@ For the introductional message info line. .It Ar view-partinfo For MIME part info lines. .El -. .Pp The following (case-insensitive) colour definitions and font attributes are understood, multiple of which can be specified in a comma-separated list: -. .Bl -tag -width ft= .It Ar ft= a font attribute: @@ -4238,7 +4476,6 @@ or .Ql underline . It is possible (and often applicable) to specify multiple font attributes for a single mapping. -. .It Ar fg= foreground colour attribute: .Ql black , @@ -4274,13 +4511,11 @@ i=0 while [ $i -lt 256 ]; do bg $i; i=$(($i + 1)); done printf "\e033[0m\en" .Ed -. .It Ar bg= background colour attribute (see .Cd fg= for possible values). .El -. .Pp The command .Ic \&uncolour @@ -4293,8 +4528,6 @@ The special name will remove all mappings (no precondition allowed), thus .Ql uncolour * * will remove all established mappings. -. -. .Mx .Mx .It Ic commandalias , uncommandalias @@ -4330,20 +4563,17 @@ hello, ? xx world hello, world .Ed -. .Mx .It Ic Copy (C) Copy messages to files whose names are derived from the author of the respective message and do not mark them as being saved; otherwise identical to .Ic Save . -. .Mx .It Ic copy (c) Copy messages to the named file and do not mark them as being saved; otherwise identical to .Ic save . -. .Mx .It Ic cwd Show the name of the current working directory, as reported by @@ -4354,19 +4584,16 @@ Supports .Sx "Command modifiers" ) . The return status is tracked via .Va \&! . -. .Mx .It Ic Decrypt \*(OP For unencrypted messages this command is identical to .Ic Copy ; Encrypted messages are first decrypted, if possible, and then copied. -. .Mx .It Ic decrypt \*(OP For unencrypted messages this command is identical to .Ic copy ; Encrypted messages are first decrypted, if possible, and then copied. -. .Mx .Mx .It Ic define , undefine @@ -4414,7 +4641,6 @@ The latter command deletes the given macro, the special name will discard all existing macros. Creation and deletion of (a) macro(s) can be performed from within a running macro. -. .Mx .Mx .It Ic delete , undelete @@ -4438,14 +4664,12 @@ or the last message restored, respectively, is automatically d; also see .Ic dp , .Ic dt . -. .Mx .It Ic discard (di) Identical to .Ic ignore . Superseded by the multiplexer .Ic headerpick . -. .Mx .Mx .It Ic dp , dt @@ -4455,7 +4679,6 @@ the new .Dq dot if one exists, regardless of the setting of .Va autoprint . -. .Mx .It Ic dotmove Move the @@ -4465,14 +4688,12 @@ up or down by one message when given or .Ql - argument, respectively. -. .Mx .Mx .It Ic draft , undraft Take message lists and mark each given message as being draft, or not being draft, respectively, as documented in the section .Sx "Message states" . -. .Mx .It Ic echo \*(NQ (ec) Echoes arguments to standard output and writes a trailing @@ -4483,7 +4704,6 @@ does not. is used, .Sx "Filename transformations" are applied to the expanded arguments. -. .Mx .It Ic echoerr \*(NQ Identical to @@ -4494,19 +4714,16 @@ Also see In interactive sessions the \*(OPal message ring queue for .Ic errors will be used instead, if available. -. .Mx .It Ic echon \*(NQ Identical to .Ic echo , but does not write a trailing newline. -. .Mx .It Ic echoerrn \*(NQ Identical to .Ic echoerr , but does not write a trailing newline. -. .Mx .It Ic edit (e) Point the text editor (as defined in @@ -4516,7 +4733,6 @@ Modified contents are discarded unless the .Va writebackedited variable is set, and are not used unless the mailbox can be written to and the editor returns a successful exit status. -. .Mx .It Ic elif Part of the @@ -4525,7 +4741,6 @@ conditional \(em if the condition of a preceding .Ic if was false, check the following condition and execute the following block if it evaluates true. -. .Mx .It Ic else (el) Part of the @@ -4537,14 +4752,11 @@ and commands was true, the .Ic else block is executed. -. .Mx .It Ic endif (en) Marks the end of an .Ic if Ns \0/\: Ic elif Ns \0/\: Ic else Ns \0/\: Ic endif conditional execution block. -. -. .Mx .It Ic environ \*(NQ \*(UA has a strict notion about which variables are @@ -4562,10 +4774,8 @@ transparent handling, and also to export internal variables into the process environment where they normally are not, a .Ql link needs to become established with this command, as in, e.g., -. .Pp .Dl environ link PERL5LIB TZ -. .Pp Afterwards changing such variables with .Ic set @@ -4581,7 +4791,6 @@ ed will be lost. Note that this implies that .Ic localopts may cause loss of such links. -. .Pp The command .Ql unlink @@ -4597,8 +4806,6 @@ and but (additionally un)link the variable(s) with the program environment and thus immediately export them to, or remove them from (if possible), respectively, the program environment. -. -. .Mx .It Ic errors \*(OP Since \*(UA uses the console as a user interface it can happen @@ -4615,7 +4822,6 @@ can be used to manage this message queue: if given or no argument the queue will be displayed and cleared, .Ar clear will only clear all messages from the queue. -. .Mx .It Ic eval \*(NQ Construct a command by concatenating the arguments, separated with @@ -4642,7 +4848,6 @@ call xxx arg call xxx arg < > call xxx arg .Ed -. .Mx .It Ic exit (ex or x) Exit from \*(UA without changing the active mailbox and skip @@ -4657,14 +4862,11 @@ The optional status number argument will be passed through to \*(ID 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. -. .Mx .It Ic File (Fi) Like .Ic file , but open the mailbox read-only. -. -. .Mx .It Ic file (fi) The file command switches to a new mailbox. @@ -4679,7 +4881,6 @@ and optionally display a summary of if the variable .Va header is set. -. .Pp .Sx "Filename transformations" will be applied to the @@ -4695,11 +4896,9 @@ mechanisms apply. \*(OPally URLs can also be used to access network resources, and it is possible to proxy all network traffic over a SOCKS5 server given via .Va socks-proxy . -. .Pp .Dl \*(IN protocol://[user[:password]@]host[:port][/path] .Dl \*(OU protocol://[user@]host[:port][/path] -. .Pp \*(OPally supported network protocols are .Ar pop3 @@ -4715,7 +4914,6 @@ part is valid only for IMAP; there it defaults to .Ar INBOX . Network URLs require a special encoding as documented in the section .Sx "On URL syntax and credential lookup" . -. .Pp If the resulting file protocol (MBOX database) .Ar name @@ -4729,13 +4927,11 @@ Changing hooks will not affect already opened mailboxes. For example, the following creates hooks for the .Xr gzip 1 compression tool and a combined compressed and encrypted format: -. .Bd -literal -offset indent ? filetype \e gzip 'gzip -dc' 'gzip -c' \e zst.pgp 'gpg -d | zstd -dc' 'zstd -19 -zc | gpg -e' .Ed -. .Pp MBOX database files are generally locked during file operations in order to avoid inconsistencies due to concurrent modifications. @@ -4755,7 +4951,6 @@ as necessary a privilege-separated dotlock child process will be used to accommodate for necessary privilege adjustments in order to create the dotlock file in the same directory and with the same user and group identities as the file of interest. -. .Pp \*(UA by default uses tolerant POSIX rules when reading MBOX database files, but it will detect invalid message boundaries in this mode and @@ -4764,7 +4959,6 @@ complain (even more with if any is seen: in this case .Va mbox-rfc4155 can be used to create a valid MBOX database from the invalid input. -. .Pp If no protocol has been fixated, and .Ar name @@ -4779,14 +4973,11 @@ format. 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. -. .Pp \*(ID If no protocol has been fixated and no existing file has been found, the variable .Va newfolders controls the format of mailboxes yet to be created. -. -. .Mx .Mx .It Ic filetype , unfiletype @@ -4822,7 +5013,6 @@ placing a leading space will avoid any possible misinterpretations. zst.pgp 'gpg -d | zstd -dc' 'zstd -19 -zc | gpg -e' ? set record=+sent.zst.pgp .Ed -. .Mx .Mx .It Ic flag , unflag @@ -4830,18 +5020,15 @@ Take message lists and mark the messages as being flagged, or not being flagged, respectively, for urgent/special attention. See the section .Sx "Message states" . -. .Mx .It Ic folder (fold) The same as .Ic file . -. .Mx .It Ic folders With no arguments, list the names of the folders in the folder directory. With an existing folder as an argument, lists the names of folders below the named folder. -. .Mx .It Ic Followup (F) Similar to @@ -4849,7 +5036,6 @@ lists the names of folders below the named folder. but saves the message in a file named after the local part of the first recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic followup (fo) Similar to @@ -4857,7 +5043,6 @@ recipient's address (instead of in but saves the message in a file named after the local part of the first recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic followupall Similar to @@ -4865,7 +5050,6 @@ Similar to but responds to all recipients regardless of the .Va flipr variable. -. .Mx .It Ic followupsender Similar to @@ -4873,7 +5057,6 @@ Similar to but responds to the sender only regardless of the .Va flipr variable. -. .Mx .It Ic Forward Similar to @@ -4881,7 +5064,6 @@ Similar to but saves the message in a file named after the local part of the recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic forward Takes a message and the address of a recipient @@ -4917,7 +5099,6 @@ if an I/O error occurs, if a necessary character set conversion fails, and .Va ^ERR Ns -INVAL for other errors. -. .Mx .It Ic from (f) Takes a list of message specifications and displays a summary of @@ -4927,28 +5108,22 @@ An alias of this command is .Ic search . Also see .Sx "Specifying messages" . -. .It Ic Fwd \*(OB Alias for .Ic Forward . -. .It Ic fwd \*(OB Alias for .Ic forward . -. .It Ic fwdignore \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic fwdretain \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic ghost , unghost \*(OB Replaced by .Ic commandalias , .Ic uncommandalias . -. .Mx .Mx .It Ic headerpick , unheaderpick @@ -5003,7 +5178,6 @@ to remove selections, i.e., from the given context, the given type of list, all the given headers will be removed, the special argument .Ql * will remove all headers. -. .Mx .It Ic headers (h) Show the current group of headers, the size of which depends on @@ -5015,12 +5189,10 @@ If a message-specification is given the group of headers containing the first message therein is shown and the message at the top of the screen becomes the new .Dq dot . -. .Mx .It Ic help (hel) A synonym for .Ic \&? . -. .Mx .It Ic history \*(OP Either @@ -5042,7 +5214,6 @@ The default mode if no arguments are given is Please see .Sx "On terminal control and line editor" for more on this topic. -. .Mx .It Ic hold (ho, also @@ -5062,8 +5233,6 @@ command. command issued after .Ic hold will display the following message, not the current one. -. -. .Mx .It Ic if (i) Part of the nestable @@ -5083,7 +5252,6 @@ elements have to be surrounded by whitespace; in v15 \*(UA will inspect all conditions bracket group wise and consider the tokens, representing values and operators, therein, which also means that variables will already have been expanded at that time (just like in the shell). -. .Bd -literal -offset indent if receive commands ... @@ -5091,7 +5259,6 @@ else commands ... endif .Ed -. .Pp The (case-insensitive) condition .Ql t Ns @@ -5105,7 +5272,6 @@ or .Dq always execute . (It shall be remarked that a faulty condition skips all branches until .Ic endif . ) -. .Pp (\*(ID In v15 .Sx "Shell-style argument quoting" @@ -5123,7 +5289,6 @@ a variable on the right hand side may be signalled using the same mechanism. Variable names may be enclosed in a pair of matching braces. When this mode has been triggered, several operators are available: -. .Pp Integer operators treat the arguments on the left and right hand side of the operator as integral numbers and compare them arithmetically. @@ -5142,7 +5307,6 @@ Available operators are (greater than or equal to), and .Ql -gt (greater than). -. .Pp String data operators compare the left and right hand side according to their textual content. @@ -5154,7 +5318,6 @@ followed by none to multiple modifiers: for now supported is .Ql i , which turns the comparison into a case-insensitive one: this is implied if no modifier follows the trigger. -. .Pp Available string operators are .Ql < @@ -5178,7 +5341,6 @@ into account character set specifics. If the case-insensitivity modifier has been used, case is ignored according to the rules of the US-ASCII encoding, i.e., bytes are still compared. -. .Pp When the \*(OPal regular expression support is available, the additional string operators @@ -5190,7 +5352,6 @@ They treat the right hand side as an extended regular expression that is matched according to the active locale (see .Sx "Character sets" ) , i.e., character sets should be honoured correctly. -. .Pp Conditions can be joined via AND-OR lists (where the AND operator is .Ql && @@ -5204,13 +5365,11 @@ them in pairs of brackets .Ql [\ \&.\&.\&.\ ] , which may be interlocked within each other, and also be joined via AND-OR lists. -. .Pp The results of individual conditions and entire groups may be modified via unary operators: the unary operator .Ql \&! will reverse the result. -. .Bd -literal -offset indent # (This not in v15, there [ -n "$debug"]!) if $debug @@ -5234,15 +5393,12 @@ if true && [ "$debug" != '' ] || [ "${verbose}" != '' ] echo Left associativity, as is known from the shell endif .Ed -. -. .Mx .It Ic ignore (ig) Identical to .Ic discard . Superseded by the multiplexer .Ic headerpick . -. .Mx .It Ic list Shows the names of all available commands, alphabetically sorted. @@ -5280,8 +5436,6 @@ command is allowed to be used when running in a subprocess instance, e.g., from within a macro that is called via .Va on-compose-splice . .El -. -. .Mx .It Ic localopts This command can be used to localize changes to (linked) @@ -5301,7 +5455,6 @@ is left once a different account is activated, and some macros, notably .Va folder-hook Ns s , use their own specific notion of covered scope, here it will be extended until the folder is left again. -. .Pp This setting stacks up: i.e., if .Ql macro1 @@ -5321,7 +5474,6 @@ their scope will be extended, and in fact leaving the .Ic account will (thus) restore settings in (likely) global scope which actually were defined in a local, macro private context!) -. .Pp This command takes one or two arguments, the optional first one specifies an attribute that may be one of @@ -5339,7 +5491,6 @@ The latter two are mutually exclusive. The (second) argument is interpreted as a boolean (string, see .Sx "INTERNAL VARIABLES" ) and states whether the given attribute shall be turned on or off. -. .Bd -literal -offset indent define temporary_settings { set possibly_global_option1 @@ -5350,8 +5501,6 @@ define temporary_settings { set possibly_global_option2 } .Ed -. -. .Mx .It Ic Lreply Reply to messages that come in via known @@ -5387,7 +5536,6 @@ if a necessary character set conversion fails, and .Va ^ERR Ns -INVAL for other errors. Any error stops processing of further messages. -. .Mx .It Ic Mail Similar to @@ -5395,7 +5543,6 @@ Similar to but saves the message in a file named after the local part of the first recipient's address (instead of in .Va record Ns ). -. .Mx .It Ic mail (m) Takes a (list of) recipient address(es) as (an) argument(s), @@ -5420,7 +5567,6 @@ if an I/O error occurs, if a necessary character set conversion fails, and .Va ^ERR Ns -INVAL for other errors. -. .Mx .It Ic mbox (mb) The given message list is to be sent to the @@ -5433,7 +5579,6 @@ is set. \*(ID This command can only be used in a .Mx -sx .Sx "primary system mailbox" . -. .Mx .Mx .It Ic mimetype , unmimetype @@ -5462,7 +5607,6 @@ will discard all existing MIME types, just as will .Ql reset , but which also reenables cache initialization via .Va mimetypes-load-control . -. .Mx .Mx .It Ic mlist , unmlist @@ -5482,7 +5626,6 @@ If the \*(OPal regular expression support is available then mailing lists may also be specified as (extended) regular expressions (see .Xr re_format 7 for more on those). -. .Mx .It Ic mimeview \*(ID Only available in interactive mode, this command allows to display @@ -5494,7 +5637,6 @@ output (see (\*(ID No syntax to directly address parts, this restriction may vanish.) The user will be asked for each non-text part of the given message in turn whether the registered handler shall be used to display the part. -. .Mx .Mx .It Ic mlsubscribe , unmlsubscribe @@ -5514,7 +5656,6 @@ newly creating them as necessary (as via .Ic mlist ) . Also see .Va followup-to . -. .Mx .It Ic Move Similar to @@ -5522,14 +5663,12 @@ Similar to but moves the messages to a file named after the local part of the sender address of the first message (instead of in .Va record Ns ). -. .Mx .It Ic move Acts like .Ic copy but marks the messages for deletion if they were transferred successfully. -. .Mx .It Ic More Like @@ -5539,7 +5678,6 @@ but also displays header fields which would not pass the selection, and all MIME parts. Identical to .Ic Page . -. .Mx .It Ic more Invokes the @@ -5548,7 +5686,6 @@ on the given messages, even in non-interactive mode and as long as the standard output is a terminal. Identical to .Ic page . -. .Mx .It Ic netrc \*(OP When used without arguments or if @@ -5572,7 +5709,6 @@ and the section the section .Sx "The .netrc file" documents the file format in detail. -. .Mx .It Ic newmail Checks for new mail in the current folder without committing any changes @@ -5583,7 +5719,6 @@ If the variable is set, the headers of each new message are also shown. This command is not available for all mailbox types. -. .Mx .It Ic next (n) (like @@ -5592,23 +5727,19 @@ or .Dq ENTER ) Goes to the next message in sequence and types it. With an argument list, types the next matching message. -. .Mx .It Ic New Same as .Ic Unread . -. .Mx .It Ic new Same as .Ic unread . -. .Mx .It Ic noop If the current folder is accessed via a network connection, a .Dq NOOP command is sent, otherwise no operation is performed. -. .Mx .It Ic Page Like @@ -5618,7 +5749,6 @@ but also displays header fields which would not pass the selection, and all MIME parts. Identical to .Ic More . -. .Mx .It Ic page Invokes the @@ -5627,7 +5757,6 @@ on the given messages, even in non-interactive mode and as long as the standard output is a terminal. Identical to .Ic more . -. .Mx .It Ic Pipe Like @@ -5637,7 +5766,6 @@ but also pipes header fields which would not pass the selection, and all parts of MIME .Ql multipart/alternative messages. -. .Mx .It Ic pipe (pi) Takes a message list and a shell command @@ -5650,24 +5778,20 @@ If the .Va page variable is set, every message is followed by a formfeed character. -. .Mx .It Ic preserve (pre) A synonym for .Ic hold . -. .Mx .It Ic Print (P) Alias for .Ic Type . -. .Mx .It Ic print (p) Research .Ux equivalent of .Ic type . -. .Mx .It Ic quit (q) Terminates the session, saving all undeleted, unsaved messages in @@ -5699,7 +5823,6 @@ The optional status number argument will be passed through to \*(ID 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. -. .Mx .It Ic read \*(NQ Read a line from standard input, or the channel set active via @@ -5736,7 +5859,6 @@ hey2.0,:"'you ",:world!:mars.: ? echo $?/$^ERRNAME / <$a><$b><$c> 0/NONE / <"'you ",><><> .Ed -. .Mx .It Ic readctl \*(NQ Manages input channels for @@ -5767,29 +5889,24 @@ $ LC_ALL=C printf 'echon "hey, "\enread a\enecho $a' |\e LC_ALL=C 6<<< 'you' \*(uA -R#X'readctl create 6' hey, you .Ed -. .It Ic redirect \*(OB Same as .Ic resend . -. .It Ic Redirect \*(OB Same as .Ic Resend . -. .Mx .It Ic remove Removes the named files or directories. If a name refer to a mailbox, e.g., a Maildir mailbox, then a mailbox type specific removal will be performed, deleting the complete mailbox. The user is asked for confirmation in interactive mode. -. .Mx .It Ic rename Takes the name of an existing folder and the name for the new folder and renames the first to the second one. Both folders must be of the same type. -. .Mx .It Ic Reply (R) Replies to only the sender of each message of the given message @@ -5821,7 +5938,6 @@ if an I/O error occurs, if a necessary character set conversion fails, and .Va ^ERR Ns -INVAL for other errors. -. .Mx .It Ic reply (r) Take a message and group-responds to it by addressing the sender @@ -5865,21 +5981,18 @@ if a necessary character set conversion fails, and .Va ^ERR Ns -INVAL for other errors. Any error stops processing of further messages. -. .Mx .It Ic replyall Similar to .Ic reply , but initiates a group-reply regardless of the value of .Va flipr . -. .Mx .It Ic replysender Similar to .Ic Reply , but responds to the sender only regardless of the value of .Va flipr . -. .Mx .It Ic Resend Like @@ -5887,7 +6000,6 @@ Like but does not add any header lines. This is not a way to hide the sender's identity, but useful for sending a message again to the same recipients. -. .Mx .It Ic resend Takes a list of messages and a user name @@ -5915,32 +6027,26 @@ if a necessary character set conversion fails, and .Va ^ERR Ns -INVAL for other errors. Any error stops processing of further messages. -. .Mx .It Ic Respond Same as .Ic Reply . -. .Mx .It Ic respond Same as .Ic reply . -. .Mx .It Ic respondall Same as .Ic replyall . -. .Mx .It Ic respondsender Same as .Ic replysender . -. .Mx .It Ic retain (ret) Superseded by the multiplexer .Ic headerpick . -. .Mx .It Ic return Only available inside the scope of a @@ -5959,7 +6065,6 @@ the second the signed 32-bit error number (stored in As documented for .Va \&? a non-0 exit status may cause the program to exit. -. .Mx .It Ic Save (S) Similar to @@ -5970,7 +6075,6 @@ sender of the first message instead of (in and) taking a filename argument; the variable .Va outfolder is inspected to decide on the actual storage location. -. .Mx .It Ic save (s) Takes a message list and a filename and appends each message in turn @@ -5988,19 +6092,15 @@ If editing a the messages are marked for deletion. .Sx "Filename transformations" will be applied. -. .It Ic savediscard \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic saveignore \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic saveretain \*(OB Superseded by the multiplexer .Ic headerpick . -. .Mx .It Ic search Takes a message specification (list) and displays a header summary of @@ -6010,12 +6110,9 @@ This command is an alias of .Ic from . Also see .Sx "Specifying messages" . -. .Mx .It Ic seen Takes a message list and marks all messages as having been read. -. -. .Mx .Mx .It Ic set , unset @@ -6039,7 +6136,6 @@ condition or a string passed to explicit .Ic set Ns ting, as well as some program-internal use cases. -. .Pp Otherwise the given variables (and arguments) are set or adjusted. Arguments are of the form @@ -6056,10 +6152,8 @@ command prefix can be used to quote arguments as necessary. \*(ID Otherwise quotation marks may be placed around any part of the assignment statement to quote blanks or tabs. -. .Pp .Dl ? wysh set indentprefix=' -> ' -. .Pp If an argument begins with .Ql no , @@ -6069,7 +6163,6 @@ the effect is the same as invoking the .Ic unset command with the remaining part of the variable .Pf ( Ql unset save ) . -. .Pp Any .Ql name @@ -6085,8 +6178,6 @@ and the sections .Sx "INTERNAL VARIABLES" and .Sx ENVIRONMENT . -. -. .Mx .It Ic shcodec Apply shell quoting rules to the given raw-data arguments. @@ -6110,12 +6201,10 @@ is set to .Va ^ERR Ns -CANCELED , and the unmodified input is used as the result; the error number may change again due to output or result storage errors. -. .Mx .It Ic shell \*(NQ (sh) Invokes an interactive version of the shell, and returns its exit status. -. .Mx .Mx .It Ic shortcut , unshortcut @@ -6127,7 +6216,6 @@ as necessary. The latter command will remove all given shortcuts, the special name .Ql * will remove all registered shortcuts. -. .Mx .It Ic shift \*(NQ Shift the positional parameter stack (starting at @@ -6143,19 +6231,16 @@ Note this command will fail in and hook macros unless the positional parameter stack has been explicitly created in the current context via .Ic vpospar . -. .Mx .It Ic show Like .Ic type , but performs neither MIME decoding nor decryption, so that the raw message text is shown. -. .Mx .It Ic size (si) Shows the size in characters of each message of the given message-list. -. .Mx .It Ic sleep \*(NQ Sleep for the specified number of seconds (and optionally @@ -6171,8 +6256,6 @@ The command will fail and the error number will be if the given duration(s) overflow the time datatype, and .Va ^ERR Ns -INVAL if the given durations are no valid integers. -. -. .Mx .Mx .It Ic sort , unsort @@ -6197,7 +6280,6 @@ Automatic folder sorting can be enabled by setting the variable, as in, e.g., .Ql set autosort=thread . Possible sorting criterions are: -. .Pp .Bl -tag -compact -width "subject" .It Ar date @@ -6230,8 +6312,6 @@ If the .Va showname variable is set, the recipient's real name (if any) is used. .El -. -. .Mx .It Ic source \*(NQ (so) The source command reads commands from the given file. @@ -6250,7 +6330,6 @@ or .Ic account Ns s , i.e., it can only be called from macros that were .Ic call Ns ed . -. .Mx .It Ic source_if \*(NQ The difference to @@ -6258,13 +6337,11 @@ i.e., it can only be called from macros that were (beside not supporting pipe syntax aka shell command input) is that this command will not generate an error nor warn if the given file argument cannot be opened successfully. -. .Mx .It Ic spamclear \*(OP Takes a list of messages and clears their .Ql is-spam flag. -. .Mx .It Ic spamforget \*(OP Takes a list of messages and causes the @@ -6277,7 +6354,6 @@ forgotten to be .Dq ham or .Dq spam . -. .Mx .It Ic spamham \*(OP Takes a list of messages and informs the Bayesian filter of the @@ -6287,7 +6363,6 @@ that they are This also clears the .Ql is-spam flag of the messages in question. -. .Mx .It Ic spamrate \*(OP Takes a list of messages and rates them using the configured @@ -6299,13 +6374,11 @@ will be forgotten once the mailbox is left. Refer to the manual section .Sx "Handling spam" for the complete picture of spam handling in \*(UA. -. .Mx .It Ic spamset \*(OP Takes a list of messages and sets their .Ql is-spam flag. -. .Mx .It Ic spamspam \*(OP Takes a list of messages and informs the Bayesian filter of the @@ -6315,14 +6388,12 @@ that they are This also sets the .Ql is-spam flag of the messages in question. -. .It Ic thread \*(OB The same as .Ql sort thread (consider using a .Ql commandalias as necessary). -. .Mx .It Ic Top Like @@ -6331,7 +6402,6 @@ but always uses the .Ic headerpick .Ql type slot for white- and blacklisting header fields. -. .Mx .It Ic top (to) Takes a message list and types out the first @@ -6356,7 +6426,6 @@ It is possible to apply compression to what is displayed by setting .Va topsqueeze . Messages are decrypted and converted to the terminal character set if necessary. -. .Mx .It Ic touch (tou) Takes a message list and marks the messages for saving in the @@ -6367,7 +6436,6 @@ if necessary. as a following .Ic next command will display the following message instead of the current one. -. .Mx .It Ic Type (T) Like @@ -6377,7 +6445,6 @@ but also displays header fields which would not pass the selection, and all visualizable parts of MIME .Ql multipart/alternative messages. -. .Mx .It Ic type (t) Takes a message list and types out each message on the users terminal. @@ -6395,111 +6462,85 @@ if necessary. The command .Ic mimeview can be used to display parts which are not displayable as plain text. -. .It Ic unaccount See .Ic account . -. .It Ic unalias (una) See .Ic alias . -. .It Ic unanswered See .Ic answered . -. .It Ic unbind See .Ic bind . -. .It Ic uncollapse See .Ic collapse . -. .It Ic uncolour See .Ic colour . -. .It Ic undefine See .Ic define . -. .It Ic undelete See .Ic delete . -. .It Ic undraft See .Ic draft . -. .It Ic unflag See .Ic flag . -. .It Ic unfwdignore \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic unfwdretain \*(OB Superseded by the multiplexer .Ic headerpick . -. .Mx .It Ic unignore Superseded by the multiplexer .Ic headerpick . -. .It Ic unmimetype See .Ic mimetype . -. .It Ic unmlist See .Ic mlist . -. .It Ic unmlsubscribe See .Ic mlsubscribe . -. .Mx .It Ic Unread Same as .Ic unread . -. .Mx .It Ic unread Takes a message list and marks each message as not having been read. -. .Mx .It Ic unretain Superseded by the multiplexer .Ic headerpick . -. .It Ic unsaveignore \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic unsaveretain \*(OB Superseded by the multiplexer .Ic headerpick . -. .It Ic unset \*(NQ (uns) See .Ic set . -. .It Ic unshortcut See .Ic shortcut . -. .It Ic unsort See .Ic short . -. .It Ic unthread \*(OB Same as .Ic unsort . -. .Mx .It Ic urlcodec Perform URL percent codec operations on the raw-data argument, rather @@ -6538,7 +6579,6 @@ is set to .Va ^ERR Ns -CANCELED , and the unmodified input is used as the result; the error number may change again due to output or result storage errors. -. .Mx .It Ic varedit \*(NQ Edit the values of or create the given variable(s) in the @@ -6546,7 +6586,6 @@ change again due to output or result storage errors. Boolean variables cannot be edited, and variables can also not be .Ic unset with this command. -. .Mx .It Ic varshow \*(NQ This command produces the same output as the listing mode of @@ -6554,7 +6593,6 @@ with this command. including .Va verbose Ns ity adjustments, but only for the given variables. -. .Mx .It Ic verify \*(OP Takes a message list and verifies each message. @@ -6565,7 +6603,6 @@ certificate, if the message sender's email address matches one of those contained within the certificate, and if the message content has been altered. -. .Mx .It Ic version Shows the @@ -6573,8 +6610,6 @@ Shows the and .Va features of \*(UA. -. -. .Mx .It Ic vexpr \*(NQ Evaluate arguments according to a given operator. @@ -6587,7 +6622,6 @@ Supports .Cm vput (see .Sx "Command modifiers" ) . -. .Pp The result that is shown in case of errors is always .Ql -1 @@ -6604,7 +6638,6 @@ numbers, and errors will be reported in the error number .Va \&! as the numeric error .Va ^ERR Ns -RANGE . -. .Pp Numeric operations work on one or two signed 64-bit integers. One integer is expected by assignment (equals sign @@ -6636,7 +6669,6 @@ the bitwise signed left- and right shifts .Ql >> ) , as well as for the unsigned right shift .Ql >>> . -. .Pp All numeric operators can be suffixed with a commercial at .Ql @ , @@ -6652,7 +6684,6 @@ Any catched overflow will be reported via the error number .Va \&! as .Va ^ERR Ns -OVERFLOW . -. .Pp Character set agnostic string functions have no notion of locale settings and character sets. @@ -6668,7 +6699,6 @@ bytes (a constant from .Pa /usr/include ) 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. -. .Pp Byte string operations work on 8-bit bytes and have no notion of locale settings and character sets, effectively assuming ASCII data. @@ -6677,7 +6707,6 @@ Operations that take one argument are which queries the length of the given argument, and .Ql hash , which calculates the Chris Torek hash of the given argument. -. .Pp Byte string operations with two or more arguments are .Ql find , @@ -6699,7 +6728,6 @@ for error logs), but reports them via the error number .Va \&! as .Va ^ERR Ns -OVERFLOW . -. .Pp String operations work, sufficient support provided, according to the active user's locale encoding and character set (see @@ -6708,7 +6736,6 @@ There is the one argument operation .Ql makeprint , which (one-way) converts the argument to something safely printable on the terminal. -. .Pp \*(OP .Ql regex @@ -6724,14 +6751,11 @@ the third argument is treated as if specified via dollar-single-quote and any occurrence of a positional parameter, e.g., .Va 1 , is replaced by the corresponding match group of the regular expression. -. .Bd -literal -offset indent ? vexpr -@ +1 -9223372036854775808 ? vput vexpr res ir bananarama (.*)NanA(.*) '\e${1}au\e$2' ? echo $0 $res .Ed -. -. .Mx .It Ic vpospar \*(NQ Manage the positional parameter stack (see @@ -6748,7 +6772,6 @@ then the remaining arguments will be used to (re)create the stack, if the parameter stack size limit is excessed an .Va ^ERR Ns -OVERFLOW error will occur. -. .Pp If the first argument is .Ql quote , @@ -6773,7 +6796,6 @@ and can be used (in conjunction with .Ic eval ) to (re)create an argument stack from and to a single variable losslessly. -. .Bd -literal -offset indent ? vpospar set hey, "'you ", world! ? echo $#: <${1}><${2}><${3}> @@ -6783,8 +6805,6 @@ to (re)create an argument stack from and to a single variable losslessly. ? eval vpospar set ${x} ? echo $#: <${1}><${2}><${3}> .Ed -. -. .Mx .It Ic visual (v) Takes a message list and invokes the display editor on each message. @@ -6792,7 +6812,6 @@ Modified contents are discarded unless the .Va writebackedited variable is set, and are not used unless the mailbox can be written to and the editor returns a successful exit status. -. .Mx .It Ic write (w) For conventional messages the body without all headers is written. @@ -6829,7 +6848,6 @@ a dot are appended after a number sign .Ql # to the name until file creation succeeds (or fails due to other reasons). -. .Mx .It Ic xcall \*(NQ The sole difference to @@ -6844,12 +6862,10 @@ If this command is not used from within a .Ic call Ns ed macro it will silently be (a more expensive variant of) .Ic call . -. .Mx .It Ic xit (x) A synonym for .Ic exit . -. .Mx .It Ic z \*(NQ \*(UA presents message headers in @@ -6875,7 +6891,6 @@ or .Ql \- indicates that the window is calculated in relation to the current position, and a number without a prefix specifies an absolute position. -. .Mx .It Ic Z \*(NQ Similar to @@ -6886,14 +6901,7 @@ or .Ic flag Ns ged message. .El -.\" }}} -. -.\" }}} -. -. -.\" .Sh COMMAND ESCAPES {{{ .Sh "COMMAND ESCAPES" -. Here is a summary of the command escapes available in compose mode, which are used to perform special functions when composing messages. Command escapes are only recognized at the beginning of lines, and @@ -6905,7 +6913,6 @@ it defaults to the tilde Otherwise ignored whitespace characters following the escape character will prevent a possible addition of the command line to the \*(OPal history. -. .Pp Unless otherwise noted all compose mode command escapes ensure proper updates of the variables which represent the error number @@ -6924,8 +6931,6 @@ effect equivalent to the command modifier If the \*(OPal key bindings are available it is possible to create .Ic bind Ns ings specifically for the compose mode. -. -. .Bl -tag -width ".It Ic BaNg" .Mx .It Ic ~~ Ar string @@ -6933,7 +6938,6 @@ Insert the string of text in the message prefaced by a single .Ql ~ . (If the escape character has been changed, that character must be doubled instead.) -. .Mx .It Ic ~! Ar command Execute the indicated shell @@ -6942,31 +6946,25 @@ which follows, replacing unescaped exclamation marks with the previously executed command if the internal variable .Va bang is set, then return to the message. -. .Mx .It Ic ~. Same effect as typing the end-of-file character. -. .Mx .It Ic ~: Ar \*(UA-command Ns \0or Ic ~_ Ar \*(UA-command Execute the given \*(UA command. Not all commands, however, are allowed. -. .Mx .It Ic ~? Write a summary of command escapes. -. .Mx .It Ic ~< Ar filename Identical to .Ic ~r . -. .Mx .It Ic ~ . All the input, including the empty line, must be consumed before further commands can be issued. -. .It Ql 212 Status ok; the rest of the line is optionally used for more status. What follows are lines of furtherly unspecified string content, terminated by an empty line. All the input, including the empty line, must be consumed before further commands can be issued. -. .It Ql 500 Syntax error; invalid command. -. .It Ql 501 Syntax error in parameters or arguments. -. .It Ql 505 Error: an argument fails verification. For example an invalid address has been specified, or an attempt was made to modify anything in \*(UA's own namespace. -. .It Ql 506 Error: an otherwise valid argument is rendered invalid due to context. For example, a second address is added to a header which may consist of a single address only. .El -. -. .Pp If a command indicates failure then the message will have remained unmodified. @@ -7336,15 +7291,12 @@ Most commands can fail with .Ql 500 if required arguments are missing (false command usage). The following (case-insensitive) commands are supported: -. -. .Bl -hang -width ".It Cm header" .It Cm header This command allows listing, inspection, and editing of message headers. Header name case is not normalized, and case-insensitive comparison should be used when matching names. The second argument specifies the subcommand to apply, one of: -. .Bl -hang -width ".It Cm remove" .It Cm list Without a third argument a list of all yet existing headers is given via @@ -7356,7 +7308,6 @@ A third argument restricts output to the given header only, which may fail with .Ql 501 if no such field is defined. -. .It Cm show Shows the content of the header given as the third argument. Dependent on the header type this may respond with @@ -7365,7 +7316,6 @@ or .Ql 212 ; any failure results in .Ql 501 . -. .It Cm remove This will remove all instances of the header given as the third argument, reporting @@ -7375,7 +7325,6 @@ upon success, if no such header can be found, and Ql 505 on \*(UA namespace violations. -. .It Cm remove-at This will remove from the header given as the third argument the instance at the list position (counting from one!) given with the fourth @@ -7387,7 +7336,6 @@ if the list position argument is not a number or on \*(UA namespace violations, and .Ql 501 if no such header instance exists. -. .It Cm insert Create a new or an additional instance of the header given in the third argument, with the header body content as given in the fourth argument @@ -7410,12 +7358,9 @@ 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. .El -. -. .It Cm attachment This command allows listing, removal and addition of message attachments. The second argument specifies the subcommand to apply, one of: -. .Bl -hang -width ".It Cm remove" .It Cm list List all attachments via @@ -7426,7 +7371,6 @@ if no attachments exist. This command is the default command of .Cm attachment if no second argument has been given. -. .It Cm remove This will remove the attachment given as the third argument, and report .Ql 210 @@ -7449,7 +7393,6 @@ parameter matches as well as for matches of the basename of the path which has been used when the attachment has been created; multiple matches result in a .Ql 506 . -. .It Cm remove-at This will interpret the third argument as a number and remove the attachment at that list position (counting from one!), reporting @@ -7459,7 +7402,6 @@ upon success or if the argument is not a number or .Ql 501 if no such attachment exists. -. .It Cm insert Adds the attachment given as the third argument, specified exactly as documented for the command line option @@ -7476,7 +7418,6 @@ if an on-the-fly performed character set conversion fails, otherwise .Ql 501 is reported; this is also reported if character set conversion is requested but not available. -. .It Cm attribute This uses the same search mechanism as described for .Cm remove @@ -7488,13 +7429,11 @@ if no such attachment can be found. The attributes are written as lines of keyword and value tuples, the keyword being separated from the rest of the line with an ASCII SP space character. -. .It Cm attribute-at This uses the same search mechanism as described for .Cm remove-at and is otherwise identical to .Cm attribute . -. .It Cm attribute-set This uses the same search mechanism as described for .Cm remove , @@ -7533,7 +7472,6 @@ automatically, but can be overwritten. Automatically set to the string .Ql attachment . .El -. .It Cm attribute-set-at This uses the same search mechanism as described for .Cm remove-at @@ -7541,16 +7479,8 @@ and is otherwise identical to .Cm attribute-set . .El .El -. -. .El -. -.\" }}} -. -. -.\" .Sh INTERNAL VARIABLES {{{ .Sh "INTERNAL VARIABLES" -. Internal \*(UA variables are controlled via the .Ic set and @@ -7582,7 +7512,6 @@ program implicitly, others can be imported explicitly with the command .Ic environ and henceforth share said properties. -. .Pp Two different kinds of internal variables exist. There are boolean variables, which can only be in one of the two states @@ -7594,14 +7523,12 @@ For the latter proper quoting is necessary upon assignment time, the introduction of the section .Sx COMMANDS documents the supported quoting rules. -. .Bd -literal -offset indent ? wysh set one=val\e 1 two="val 2" \e three='val "3"' four=$'val \e'4\e''; \e varshow one two three four; \e unset one two three four .Ed -. .Pp Dependent upon the actual option the string values will be interpreted as numbers, colour names, normal text etc., but there also exists @@ -7632,11 +7559,7 @@ as in .Ql ask-yes , which causes prompting of the user in interactive mode, with the given boolean as the default value. -. -.\" .Ss "Initial settings" {{{ -.\" (Keep in SYNC: ./nail.h:okeys, ./nail.rc, ./nail.1:"Initial settings") .Ss "Initial settings" -. The standard POSIX 2008/Cor 2-2016 mandates the following initial variable settings: .Pf no Va allnet , @@ -7676,7 +7599,6 @@ set to .Va toplines set to .Ql 5 . -. .Pp Notes: \*(UA does not support the .Pf no Va onehop @@ -7702,13 +7624,8 @@ and to name a few, establishes a default .Ic headerpick selection etc., and should thus be taken into account. -.\" }}} -. -.\" .Ss "Variables" {{{ .Ss "Variables" -. .Bl -tag -width ".It Va BaNg" -. .Mx .It Va \&? \*(RO The exit status of the last command, or the @@ -7726,7 +7643,6 @@ same effect. one of the .Sx "Command modifiers" , can be used to instruct the state machine to ignore errors. -. .Mx .It Va \&! \*(RO The current error number @@ -7745,13 +7661,10 @@ for others errno will be used in case of errors, or if that is 0: it thus may or may not reflect the real error. The error number may be set with the command .Ic return . -. -. .Mx .It Va ^ \*(RO This is a multiplexer variable which performs dynamic expansion of the requested state or condition, of which there are: -. .Pp .Bl -tag -compact -width ".It Va BaNg" .Mx @@ -7780,8 +7693,6 @@ define work { call work 0 .Ed .El -. -. .Mx .It Va * \*(RO Expands all positional parameters (see @@ -7790,7 +7701,6 @@ separated by a space character. \*(ID The special semantics of the equally named special parameter of the .Xr sh 1 are not yet supported. -. .Mx .It Va @ \*(RO Expands all positional parameters (see @@ -7798,12 +7708,10 @@ are not yet supported. separated by a space character. If placed in double quotation marks, each positional parameter is properly quoted to expand to a single parameter again. -. .Mx .It Va # \*(RO Expands to the number of positional parameters, i.e., the size of the positional parameter stack in decimal. -. .Mx .It Va \&0 \*(RO Inside the scope of a @@ -7816,7 +7724,6 @@ For the \*(OPal regular expression search and replace operator of .Ic vexpr this expands to the entire matching expression. It represents the program name in global context. -. .Mx .It Va 1 \*(RO Access of the positional parameter stack. @@ -7834,24 +7741,20 @@ and replace expression of .Ic vexpr , and can be explicitly created or overwritten with the command .Ic vpospar . -. .Mx .It Va account \*(RO Is set to the active .Ic account . -. .Mx .It Va add-file-recipients \*(BO 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 addressees are not mentioned. -. .Mx .It Va allnet \*(BO Causes only the local part to be evaluated when comparing addresses. -. .Mx .It Va append \*(BO Causes messages saved in the @@ -7860,13 +7763,11 @@ when comparing addresses. .Ev MBOX to be appended to the end rather than prepended. This should always be set. -. .Mx .It Va ask \*(BO Causes \*(UA to prompt for the subject of each message sent. If the user responds with simply a newline, no subject field will be sent. -. .Mx .It Va askatend \*(BO Causes the prompts for @@ -7874,13 +7775,11 @@ no subject field will be sent. and .Ql Bcc: lists to appear after the message has been edited. -. .Mx .It Va askattach \*(BO If set, \*(UA asks for files to attach at the end of each message, shall the list be found empty at that time. An empty line finalizes the list. -. .Mx .It Va askcc \*(BO Causes the user to be prompted for carbon copy recipients @@ -7890,7 +7789,6 @@ or .Va bsdcompat are set) shall the list be found empty (at that time). An empty line finalizes the list. -. .Mx .It Va askbcc \*(BO Causes the user to be prompted for blind carbon copy @@ -7900,7 +7798,6 @@ or .Va bsdcompat are set) shall the list be found empty (at that time). An empty line finalizes the list. -. .Mx .It Va asksign \*(BO\*(OP Causes the user to be prompted if the message is to be @@ -7908,12 +7805,10 @@ signed at the end of each message. The .Va smime-sign variable is ignored when this variable is set. -. .Mx .It Va asksub \*(BO Alternative name for .Va ask . -. .Mx .It Va attrlist A sequence of characters to display in the @@ -7962,25 +7857,20 @@ classified as spam. .It Ql ~ classified as possible spam. .El -. -. .Mx .It Va autobcc Specifies a list of recipients to which a blind carbon copy of each outgoing message will be sent automatically. -. .Mx .It Va autocc Specifies a list of recipients to which a carbon copy of each outgoing message will be sent automatically. -. .Mx .It Va autocollapse \*(BO Causes threads to be collapsed automatically when threaded mode is entered (see the .Ic collapse command). -. .Mx .It Va autoprint \*(BO Enable automatic @@ -7997,7 +7887,6 @@ is shown automatically, as via .Ic dp or .Ic dt . -. .Mx .It Va autosort Causes sorted mode (see the @@ -8005,7 +7894,6 @@ Causes sorted mode (see the command) to be entered automatically with the value of this variable as sorting method when a folder is opened, e.g., .Ql set autosort=thread . -. .Mx .It Va bang \*(BO Enables the substitution of all not (reverse-solidus) escaped @@ -8018,7 +7906,6 @@ shell escape command and one of the compose mode .Sx "COMMAND ESCAPES" . If this variable is not set no reverse solidus stripping is performed. -. .Mx .It Va bind-timeout \*(OP Terminals generate multi-byte sequences for certain forms of @@ -8030,7 +7917,6 @@ This variable specifies the timeout in milliseconds that the MLE (see waits for more bytes to arrive unless it considers a sequence .Dq complete . The default is 200. -. .Mx .It Va bsdcompat \*(BO Sets some cosmetical features to traditional BSD style; @@ -8041,21 +7927,17 @@ and all other variables prefixed with it also changes the behaviour of .Va emptystart (which does not exist in BSD). -. .Mx .It Va bsdflags \*(BO Changes the letters shown in the first column of a header summary to traditional BSD style. -. .Mx .It Va bsdheadline \*(BO Changes the display of columns in a header summary to traditional BSD style. -. .Mx .It Va bsdmsgs \*(BO Changes some informational messages to traditional BSD style. -. .Mx .It Va bsdorder \*(BO Causes the @@ -8065,7 +7947,6 @@ field to appear immediately after the field in message headers and with the .Ic ~h .Sx "COMMAND ESCAPES" . -. .Mx .Mx .It Va build-os , build-osenv @@ -8076,7 +7957,6 @@ via and .Ql uname -srm , respectively, the former being lowercased. -. .Mx .It Va charset-7bit The value that should appear in the @@ -8087,7 +7967,6 @@ MIME header fields when no character set conversion of the message data was performed. This defaults to US-ASCII, and the chosen character set should be US-ASCII compatible. -. .Mx .It Va charset-8bit \*(OP The default 8-bit character set that is used as an implicit last @@ -8101,7 +7980,6 @@ and this variable is effectively ignored. Refer to the section .Sx "Character sets" for the complete picture of character set conversion in \*(UA. -. .Mx .It Va charset-unknown-8bit \*(OP RFC 1428 specifies conditions when internet mail gateways shall @@ -8122,19 +8000,16 @@ This variable will also be taken into account if a MIME type (see of a MIME message part that uses the .Ql binary character set is forcefully treated as text. -. .Mx .It Va cmd The default value for the .Ic pipe command. -. .Mx .It Va colour-disable \*(BO\*(OP Forcefully disable usage of colours. Also see the section .Sx "Coloured display" . -. .Mx .It Va colour-pager \*(BO\*(OP Whether colour shall be used for output that is paged through @@ -8152,7 +8027,6 @@ Often doing manual adjustments is unnecessary since \*(UA may perform adjustments dependent on the value of the environment variable .Ev PAGER (see there for more). -. .Mx .Mx .It Va contact-mail , contact-web @@ -8160,7 +8034,6 @@ adjustments dependent on the value of the environment variable bug reports, suggestions, or help regarding \*(UA. The former can be used directly: .Ql ? eval mail $contact-mail . -. .Mx .It Va crt In a(n interactive) terminal session, then if this valued variable is @@ -8182,7 +8055,6 @@ format, which, dependent on the .Va mime-encoding of the message, is unrelated to the number of display lines. (The software is old and historically the relation was a given thing.) -. .Mx .It Va customhdr Define a set of custom headers to be injected into newly composed or @@ -8200,7 +8072,6 @@ reverse solidus. nor prevented. .Pp .Dl ? set customhdr='Hdr1: Body1-1\e, Body1-2, Hdr2: Body2' -. .Mx .It Va datefield Controls the appearance of the @@ -8221,7 +8092,6 @@ The default is .Ql %Y-%m-%d %H:%M , and also see .Va datefield-markout-older . -. .Mx .It Va datefield-markout-older Only used in conjunction with @@ -8238,7 +8108,6 @@ will be displayed, but a format string to control formatting can be assigned. The default is .Ql %Y-%m-%d . -. .Mx .It Va debug \*(BO Enables debug messages and obsoletion warnings, disables the @@ -8246,7 +8115,6 @@ actual delivery of messages and also implies .Pf no Va record as well as .Pf no Va save . -. .Mx .It Va disposition-notification-send \*(BO\*(OP Emit a @@ -8255,15 +8123,6 @@ header (RFC 3798) with the message. This requires the .Va from variable to be set. -.\" TODO .It Va disposition-notification-send-HOST -.\"Overrides -.\".Va disposition-notification-send -.\" for SMTP accounts on a specific host. -.\" TODO .It Va disposition-notification-send-USER@HOST -.\"Overrides -.\".Va disposition-notification-send -.\"for a specific account. -. .Mx .It Va dot \*(BO When dot is set, a period @@ -8276,7 +8135,6 @@ This behaviour is implied in .Va posix mode with a set .Va ignoreeof . -. .Mx .It Va dotlock-ignore-error \*(BO\*(OP Synchronization of mailboxes which \*(UA treats as @@ -8292,7 +8150,6 @@ Because \*(UA ships with a privilege-separated dotlock creation program that should always be able to create such a dotlock file there is no good reason to ignore dotlock file creation errors, and thus these are fatal unless this variable is set. -. .Mx .It Va editalong \*(BO If this variable is set then the editor is started automatically @@ -8303,12 +8160,10 @@ had been specified. The .Va editheaders variable is implied for this automatically spawned editor session. -. .Mx .It Va editheaders \*(BO When a message is edited while being composed, its header is included in the editable text. -. .Mx .It Va emptystart \*(BO When entering interactive mode \*(UA normally writes @@ -8318,7 +8173,6 @@ If this variable is set \*(UA starts even with an empty or non-existent mailbox (the latter behaviour furtherly depends upon .Va bsdcompat , though). -. .Mx .It Va errexit \*(BO Let each command with a non-0 exit status, including every @@ -8335,7 +8189,6 @@ but which use a different modifier for ignoring the error. Please refer to the variable .Va \&? for more on this topic. -. .Mx .It Va escape The first character of this value defines the escape character for @@ -8344,7 +8197,6 @@ in compose mode. The default value is the character tilde .Ql ~ . If set to the empty string, command escapes are disabled. -. .Mx .It Va expandaddr If not set then file and command pipeline targets are not allowed, @@ -8403,7 +8255,6 @@ Setting this automatically enables network addressees (it actually acts like .Ql failinvaddr,+addr , so that care for ordering issues must be taken) . -. .Mx .It Va expandargv Unless this variable is set additional @@ -8423,7 +8274,6 @@ commands were enabled explicitly by using one of the command line options .Fl ~ or .Fl # . -. .Mx .It Va features \*(RO String giving a list of features \*(UA, preceded with a plus sign @@ -8434,7 +8284,6 @@ otherwise. The output of the command .Ic version will include this information in a more pleasant output. -. .Mx .It Va flipr \*(BO This setting reverses the meanings of a set of reply commands, @@ -8450,7 +8299,6 @@ as well as .Ic replyall , respondall , followupall are not affected by the current setting of .Va flipr . -. .Mx .It Va folder The default path under which mailboxes are to be saved: @@ -8471,7 +8319,6 @@ will be prefixed automatically. Once the actual value is evaluated first, the internal variable .Va folder-resolved will be updated for caching purposes. -. .Mx .It Va folder-hook This variable can be set to the name of a @@ -8485,7 +8332,6 @@ only include newly arrived messages then. .Ic localopts are activated by default in a folder hook, causing the covered settings to be reverted once the folder is left again. -. .Mx .It Va folder-hook-FOLDER Overrides @@ -8508,13 +8354,11 @@ will be tried as .Ql folder-hook-/home/usr1/mail/sent first, but then followed by .Ql folder-hook-+sent . -. .Mx .It Va folder-resolved \*(RO Set to the fully resolved path of .Va folder once that evaluation has occurred; rather internal. -. .Mx .It Va followup-to \*(BO Controls whether a @@ -8526,7 +8370,6 @@ and the commands .Ic mlist , mlsubscribe , reply and .Ic Lreply . -. .Mx .It Va followup-to-honour Controls whether a @@ -8543,7 +8386,6 @@ and the commands .Ic mlist and .Ic mlsubscribe . -. .Mx .It Va forward-as-attachment \*(BO Original messages are normally sent as inline text with the @@ -8553,7 +8395,6 @@ and only the first part of a multipart message is included. With this setting enabled messages are sent as unmodified MIME .Ql message/rfc822 attachments with all of their parts included. -. .Mx .It Va forward-inject-head The string to put before the text of a message with the @@ -8564,7 +8405,6 @@ No heading is put if it is set to the empty string. This variable is ignored if the .Va forward-as-attachment variable is set. -. .Mx .It Va from The address (or a list of addresses) to put into the @@ -8603,18 +8443,15 @@ the MTA protocol level (the RFC 5321 reverse-path), either by using the command line option (with an empty argument; see there for the complete picture on this topic), or by setting the internal variable .Va r-option-implicit . -. .Mx .It Va fullnames \*(BO When replying to or forwarding a message \*(UA normally removes the comment and name parts of email addresses. If this variable is set such stripping is not performed, and comments, names etc. are retained. -. .It Va fwdheading \*(OB Predecessor of .Va forward-inject-head . -. .Mx .It Va header \*(BO Causes the header summary to be written at startup and after @@ -8628,8 +8465,6 @@ The command line option .Fl N can be used to set .Pf no Va header . -. -. .Mx .It Va headline A format string to use for the summary of @@ -8642,7 +8477,6 @@ Format specifiers in the given string start with a percent sign and may be followed by an optional decimal number indicating the field width \(em if that is negative, the field is to be left-aligned. Valid format specifiers are: -. .Pp .Bl -tag -compact -width ".It Ql _%%_" .It Ql %% @@ -8716,8 +8550,6 @@ Also see .Va attrlist and .Va headline-bidi . -. -. .Mx .It Va headline-bidi Bidirectional text requires special treatment when displaying headers, @@ -8760,18 +8592,15 @@ and .Ql 3 select Unicode 1.1 support (U+200E, LEFT-TO-RIGHT MARK); the latter again reserves room for two spaces in addition. -. .Mx .It Va history-file \*(OP If a line editor is available then this can be set to name the (expandable) path of the location of a permanent history file. Also see .Va history-size . -. .Mx .It Va history-gabby \*(BO\*(OP Add more entries to the history as is normally done. -. .Mx .It Va history-gabby-persist \*(BO\*(OP \*(UA's own MLE will not save the additional @@ -8781,7 +8610,6 @@ On the other hand it will not loose the knowledge of whether a persistent entry was gabby or not. Also see .Va history-file . -. .Mx .It Va history-size \*(OP Setting this variable imposes a limit on the number of concurrent @@ -8792,13 +8620,11 @@ loading and incorporation of the upon program startup can also be suppressed by doing this. Runtime changes will not be reflected, but will affect the number of entries saved to permanent storage. -. .Mx .It Va hold \*(BO This setting controls whether messages are held in the system .Va inbox , and it is set by default. -. .Mx .It Va hostname Use this string as hostname when expanding local addresses instead of @@ -8825,7 +8651,6 @@ and/or .Va from , .Va sender etc. first. -. .Mx .It Va idna-disable \*(BO\*(OP Can be used to turn off the automatic conversion of domain @@ -8835,7 +8660,6 @@ Since the IDNA code assumes that domain names are specified with the .Va ttycharset character set, an UTF-8 locale charset is required to represent all possible international domain names (before conversion, that is). -. .Mx .It Va ifs The input field separator that is used (\*(ID by some functions) to @@ -8866,19 +8690,16 @@ will cause field-splitting, any adjacent .Va \&\&ifs-ws characters will be skipped. .El -. .Mx .It Va ifs-ws \*(RO Automatically deduced from the whitespace characters in .Va ifs . -. .Mx .It Va ignore \*(BO Ignore interrupt signals from the terminal while entering messages; instead echo them as .Ql @ characters and discard the current line. -. .Mx .It Va ignoreeof \*(BO Ignore end-of-file conditions @@ -8900,7 +8721,6 @@ Setting this implies the behaviour that describes in .Va posix mode. -. .Mx .It Va inbox If this is set to a non-empty string it will specify the users @@ -8916,7 +8736,6 @@ also see .Ic file for more on this topic. The value supports a subset of transformations itself. -. .Mx .It Va indentprefix String used by the @@ -8931,7 +8750,6 @@ in place of the normal tabulator character .Ql ^I , which is the default. Be sure to quote the value if it contains spaces or tabs. -. .Mx .It Va keep \*(BO If set, an empty @@ -8946,7 +8764,6 @@ when using a common folder directory, and prevents malicious users from creating fake mailboxes in a world-writable spool directory. \*(ID Only local regular (MBOX) files are covered, Maildir or other mailbox types will never be removed, even if empty. -. .Mx .It Va keep-content-length \*(BO When (editing messages and) writing MBOX mailbox files \*(UA can @@ -8966,38 +8783,31 @@ fields already marks the message as being modified. \*(ID At some future time \*(UA will be capable to rewrite and apply an .Va mime-encoding to modified messages, and then those fields will be stripped silently. -. .Mx .It Va keepsave \*(BO When a message is saved it is usually discarded from the originating folder when \*(UA is quit. This setting causes all saved message to be retained. -. .Mx .It Va line-editor-disable \*(BO Turn off any enhanced line editing capabilities (see .Sx "On terminal control and line editor" for more). -. .Mx .It Va line-editor-no-defaults \*(BO\*(OP Do not establish any default key binding. -. .Mx .It Va log-prefix Error log message prefix string .Pf ( Ql "\*(uA: " ) . -. .Mx .It Va mailbox-display \*(RO The name of the current mailbox .Pf ( Ic file ) , possibly abbreviated for display purposes. -. .Mx .It Va mailbox-resolved \*(RO The fully resolved path of the current mailbox. -. .Mx .It Va mailx-extra-rc An additional startup file that is loaded as the last of the @@ -9006,7 +8816,6 @@ Use this file for commands that are not understood by other POSIX .Xr mailx 1 implementations, i.e., mostly anything which is not covered by .Sx "Initial settings" . -. .Mx .It Va markanswered \*(BO When a message is replied to and this variable is set, @@ -9014,7 +8823,6 @@ it is marked as having been .Ic answered . See the section .Sx "Message states" . -. .Mx .It Va mbox-rfc4155 \*(BO When opening MBOX mailbox databases \*(UA by default uses tolerant @@ -9049,11 +8857,9 @@ define mboxfix { } call mboxfix /tmp/bad.mbox /tmp/good.mbox .Ed -. .Mx .It Va memdebug \*(BO Internal development variable. -. .Mx .It Va message-id-disable \*(BO By setting this variable the generation of @@ -9067,7 +8873,6 @@ field by itself, so it should be ensured that it accepts messages without This variable also affects automatic generation of .Va Content-ID: MIME header fields. -. .Mx .It Va message-inject-head A string to put at the beginning of each new message. @@ -9076,7 +8881,6 @@ The escape sequences tabulator and newline .Ql \en are understood. -. .Mx .It Va message-inject-tail A string to put at the end of each new message. @@ -9085,7 +8889,6 @@ The escape sequences tabulator and newline .Ql \en are understood. -. .Mx .It Va metoo \*(BO Usually, when an @@ -9101,7 +8904,6 @@ option to be passed through to the (Mail-Transfer-Agent); though most of the modern MTAs no longer document this flag, no MTA is known which does not support it (for historical compatibility). -. .Mx .It Va mime-allow-text-controls \*(BO When sending messages, each part of the message is MIME-inspected @@ -9139,7 +8941,6 @@ or file extension), then the original .Ql Content-Type: will not be overwritten. -. .Mx .It Va mime-alternative-favour-rich \*(BO If this variable is set then rich MIME alternative parts (e.g., @@ -9149,7 +8950,6 @@ output that can be (re)integrated into \*(UA's normal visual display. (E.g., at the time of this writing some newsletters ship their full content only in the rich HTML part, whereas the plain text part only contains topic subjects.) -. .Mx .It Va mime-counter-evidence Normally the @@ -9193,7 +8993,6 @@ If bit four is set (8) then as a last resort the actual content of parts will be inspected, so that data which looks like plain text can be treated as such. .El -. .Mx .It Va mime-encoding The MIME @@ -9229,7 +9028,6 @@ to four bytes of output. This transfer-encoding is not human readable without performing a decoding step. .El -. .Mx .It Va mimetypes-load-control Can be used to control which of @@ -9260,8 +9058,6 @@ content may use the extended syntax that is described in the section .Sx "The mime.types files" . Directives found in such files always take precedence (are prepended to the MIME type cache). -. -. .Mx .It Va mta To choose an alternate Mail-Transfer-Agent, set this option to either @@ -9285,7 +9081,6 @@ If such a child receives a TERM signal, it will abort and the message to .Ev DEAD , if so configured. -. .Pp For a file-based MTA it may be necessary to set .Va mta-argv0 @@ -9301,7 +9096,6 @@ allows their use. Argument processing of the MTA will be terminated with a .Fl \&\&- separator. -. .Pp The otherwise occurring implicit usage of the following MTA command line arguments can be disabled by setting the boolean variable @@ -9326,7 +9120,6 @@ command line option \*(UA will also (not) pass .Fl \&\&f as well as possibly .Fl \&\&F . -. .Pp \*(OPally \*(UA can send mail over SMTP network connections to a single defined SMTP smart host by specifying a SMTP URL as the value (see @@ -9341,7 +9134,6 @@ and \*(UA also supports forwarding of all network traffic over a specified .Va socks-proxy . The following SMTP variants may be used: -. .Bl -bullet .It The plain SMTP protocol (RFC 5321) that normally lives on the @@ -9381,8 +9173,6 @@ Assign a value like \*(IN (\*(OU .Ql submission://server[:port] ) . .El -. -. .Mx .It Va mta-arguments Arguments to pass through to a file-based @@ -9392,14 +9182,12 @@ can be given via this variable, which is parsed according to into an array of arguments, and which will be joined onto MTA options from other sources, and then passed individually to the MTA: .Ql ? wysh set mta-arguments='-t -X \&"/tmp/my log\&"' . -. .Mx .It Va mta-no-default-arguments \*(BO Unless this variable is set \*(UA will pass some well known standard command line options to a file-based .Va mta (Mail-Transfer-Agent), see there for more. -. .Mx .It Va mta-argv0 Many systems use a so-called @@ -9412,7 +9200,6 @@ If this variable is set then the mailwrapper (the program that is actually executed when calling the file-based .Va mta ) will treat its contents as that name. -. .Mx Va netrc-lookup .It Va netrc-lookup-USER@HOST , netrc-lookup-HOST , netrc-lookup \*(BO\*(IN\*(OP Used to control usage of the users @@ -9426,7 +9213,6 @@ the section documents the file format. Also see .Va netrc-pipe . -. .Mx .It Va netrc-pipe \*(IN\*(OP When @@ -9442,13 +9228,11 @@ This can be used to, e.g., store .Pa .netrc in encrypted form: .Ql ? set netrc-pipe='gpg -qd ~/.netrc.pgp' . -. .Mx .It Va newfolders If this variable has the value .Ql maildir , newly created local folders will be in Maildir instead of MBOX format. -. .Mx .It Va newmail Checks for new mail in the current folder each time the prompt is shown. @@ -9457,7 +9241,6 @@ If this variable is set to the special value .Ql nopoll then a Maildir folder will not be rescanned completely, but only timestamp changes are detected. -. .Mx .It Va outfolder \*(BO Causes the filename given in the @@ -9471,7 +9254,6 @@ commands to be interpreted relative to the directory given in the .Va folder variable rather than to the current directory, unless it is set to an absolute pathname. -. .Mx .It Va on-compose-cleanup Macro hook which will be called after the message has been sent (or not, @@ -9489,7 +9271,6 @@ to name a few, are currently not covered by .Ic localopts or a similar mechanism: any changes applied in compose mode will continue to be in effect thereafter. -. .Mx .Mx .It Va on-compose-enter , on-compose-leave @@ -9535,8 +9316,6 @@ of the given message. When replying, forwarding or resending, this will be set to the receivers of the given message. .El -. -. .Mx .Mx .It Va on-compose-splice , on-compose-splice-shell @@ -9561,7 +9340,6 @@ are enabled for these hooks (in the parent process), causing any setting to be forgotten after the message has been sent; .Va on-compose-cleanup can be used to perform other cleanup as necessary. -. .Pp During execution of these hooks \*(UA will temporarily forget whether it has been started in interactive mode, (a restricted set of) @@ -9578,7 +9356,6 @@ The first line the hook will read on its standard input is the protocol version of said command escape, currently .Dq 0 0 1 : backward incompatible protocol changes have to be expected. -. .Pp Care must be taken to avoid deadlocks and other false control flow: if both involved processes wait for more input to happen at the @@ -9592,7 +9369,6 @@ an error condition. \*(ID Protection 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 necessary. -. .Bd -literal -offset indent wysh set on-compose-splice-shell=$'\e read version;\e @@ -9619,29 +9395,24 @@ define ocsm { endif } .Ed -. -. .Mx .It Va on-resend-cleanup \*(ID Identical to .Va on-compose-cleanup , but is only triggered by .Ic resend . -. .Mx .It Va on-resend-enter \*(ID Identical to .Va on-compose-enter , but is only triggered by .Ic resend . -. .Mx .It Va page \*(BO If set, each message feed through the command given for .Ic pipe is followed by a formfeed character .Ql \ef . -. .Mx Va password .It Va password-USER@HOST , password-HOST , password \*(IN Variable chain that sets a password, which is used in case none has @@ -9650,7 +9421,6 @@ as a last resort \*(UA will ask for a password on the user's terminal if the authentication method requires a password. Specifying passwords in a startup file is generally a security risk; the file should be readable by the invoking user only. -. .It Va password-USER@HOST \*(OU (see the chain above for \*(IN) Set the password for @@ -9661,14 +9431,11 @@ If no such variable is defined for a host, the user will be asked for a password on standard input. Specifying passwords in a startup file is generally a security risk; the file should be readable by the invoking user only. -. .Mx .It Va piperaw \*(BO Send messages to the .Ic pipe command without performing MIME and character set conversions. -. -. .Mx .It Va pipe-TYPE/SUBTYPE When a MIME message part of type @@ -9681,7 +9448,6 @@ Note that only parts which can be displayed inline as plain text (see are displayed unless otherwise noted, other MIME parts will only be considered by and for the command .Ic mimeview . -. .Pp The special value commercial at .Ql @ @@ -9697,7 +9463,6 @@ And \*(OPally MIME type handlers may be defined via \(em these directives, .Cd copiousoutput has already been used, should be referred to for further documentation. -. .Pp The commercial at .Ql @ @@ -9705,31 +9470,25 @@ can in fact be used as a trigger character to adjust usage and behaviour of a following shell command specification more thoroughly by appending more special characters which refer to further mailcap directives, e.g., the following hypothetical command specification could be used: -. .Bd -literal -offset indent ? set pipe-X/Y='@!++=@vim ${MAILX_FILENAME_TEMPORARY}' .Ed -. .Pp .Bl -tag -compact -width ".It Ql __" .It Ql * The command produces plain text to be integrated in \*(UAs output: .Cd copiousoutput . -. .It Ql # If set the handler will not be invoked when a message is to be quoted, but only when it will be displayed: .Cd x-mailx-noquote . -. .It Ql & Run the command asynchronously, i.e., without blocking \*(UA: .Cd x-mailx-async . -. .It Ql \&! The command must be run on an interactive terminal, \*(UA will temporarily release the terminal to it: .Cd needsterminal . -. .It Ql + Request creation of a zero-sized temporary file, the absolute pathname of which will be made accessible via the environment variable @@ -9738,7 +9497,6 @@ of which will be made accessible via the environment variable If given twice then the file will be unlinked automatically by \*(UA when the command loop is entered again at latest: .Cd x-mailx-tmpfile-unlink . -. .It Ql = 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 @@ -9748,24 +9506,20 @@ the creation of which is implied; note however that in order to cause deletion of the temporary file you still have to use two plus signs .Ql ++ explicitly! -. .It Ql @ To avoid ambiguities with normal shell command content you can use another commercial at to forcefully terminate interpretation of remaining characters. (Any character not in this list will have the same effect.) .El -. .Pp Some information about the MIME part to be displayed is embedded into the environment of the shell command: -. .Pp .Bl -tag -compact -width ".It Ev _AIL__ILENAME__ENERATED" .Mx .It Ev MAILX_CONTENT The MIME content-type of the part, if known, the empty string otherwise. -. .Mx .It Ev MAILX_CONTENT_EVIDENCE If @@ -9774,23 +9528,18 @@ includes the carry-around-bit (2), then this will be set to the detected MIME content-type; not only then identical to .Ev \&\&MAILX_CONTENT otherwise. -. .Mx .It Ev MAILX_FILENAME The filename, if any is set, the empty string otherwise. -. .Mx .It Ev MAILX_FILENAME_GENERATED A random string. -. .Mx .It Ev MAILX_FILENAME_TEMPORARY If temporary file creation has been requested through the command prefix this variable will be set and contain the absolute pathname of the temporary file. .El -. -. .Mx .It Va pipe-EXTENSION This is identical to @@ -9801,14 +9550,12 @@ except that names a file extension, e.g., .Ql xhtml . Handlers registered using this method take precedence. -. .Mx Va pop3-auth .It Va pop3-auth-USER@HOST , pop3-auth-HOST , pop3-auth \*(OP\*(IN Variable chain that sets the POP3 authentication method. The only possible value as of now is .Ql plain , which is thus the default. -. .Mx .Mx Va pop3-bulk-load .It Va pop3-bulk-load-USER@HOST , pop3-bulk-load-HOST , pop3-bulk-load @@ -9818,7 +9565,6 @@ For the POP3 protocol this means that the message headers will be downloaded twice. If this variable is set then \*(UA will download only complete messages from the given POP3 server(s) instead. -. .Mx Va pop3-keepalive .It Va pop3-keepalive-USER@HOST , pop3-keepalive-HOST , pop3-keepalive \*(OP POP3 servers close the connection after a period of inactivity; @@ -9829,7 +9575,6 @@ Setting this variable to a numeric value greater than causes a .Ql NOOP command to be sent each value seconds if no other operation is performed. -. .Mx Va pop3-no-apop .It Va pop3-no-apop-USER@HOST , pop3-no-apop-HOST , pop3-no-apop \*(BO\*(OP Unless this variable is set the @@ -9843,7 +9588,6 @@ only a single packet is sent for the user/password tuple. Note that .Va pop3-no-apop-HOST requires \*(IN. -. .Mx Va pop3-use-starttls .It Va pop3-use-starttls-USER@HOST , pop3-use-starttls-HOST , pop3-use-starttls \*(BO\*(OP Causes \*(UA to issue a @@ -9854,8 +9598,6 @@ and is not used if the session is already encrypted by the POP3S method. Note that .Va pop3-use-starttls-HOST requires \*(IN. -. -. .Mx .It Va posix \*(BO This flag enables POSIX mode, which changes behaviour of \*(UA @@ -9867,7 +9609,6 @@ are loaded if the environment variable is set, and adjusting any of those two will be reflected by the other one implicitly. The following behaviour is covered and enforced by this mechanism: -. .Pp .Bl -bullet -compact .It @@ -9880,11 +9621,9 @@ These exits can be circumvented on a per-command base by using one of the .Sx "Command modifiers" , for each command which shall be allowed to fail. -. .It .Ic alternates will replace the list of alternate addresses instead of appending to it. -. .It Upon changing the active .Ic file @@ -9893,13 +9632,11 @@ no summary of will be displayed even if .Va header is set. -. .It Setting .Va ignoreeof implies the behaviour described by .Va dot . -. .It The variable .Va keep @@ -9908,8 +9645,6 @@ is extended to cover any empty mailbox, not only empty .Sx "primary system mailbox" Ns es: they will be removed when they are left in empty state otherwise. .El -. -. .Mx .It Va print-alternatives \*(BO When a MIME message part of type @@ -9920,7 +9655,6 @@ other parts are normally discarded. Setting this variable causes all subparts to be displayed, just as if the surrounding part was of type .Ql multipart/mixed . -. .Mx .It Va prompt The string used as a prompt in interactive mode. @@ -9944,18 +9678,15 @@ a slot for coloured prompts is also available with the \*(OPal command Prompting may be prevented by setting this to the null string (a.k.a.\| .Ql set noprompt ) . -. .Mx .It Va prompt2 This string is used for secondary prompts, but is otherwise identical to .Va prompt . The default is .Ql ..\0 . -. .Mx .It Va quiet \*(BO Suppresses the printing of the version when first invoked. -. .Mx .It Va quote If set, \*(UA starts a replying message with the original message @@ -9990,7 +9721,6 @@ act like an automatic .Pf ` Ic ~M Ns ' command; also see .Va quote-as-attachment . -. .Mx .It Va quote-as-attachment \*(BO Add the original message in its entirety as a @@ -9998,7 +9728,6 @@ command; also see MIME attachment when replying to a message. Note this works regardless of the setting of .Va quote . -. .Mx .It Va quote-fold \*(OP Can be set in addition to @@ -10016,7 +9745,6 @@ The goal cannot be smaller than the length of .Va indentprefix plus some additional pad. Necessary adjustments take place silently. -. .Mx .It Va r-option-implicit \*(BO Setting this option evaluates the contents of @@ -10026,7 +9754,6 @@ Necessary adjustments take place silently. and passes the results onto the used (file-based) MTA as described for the .Fl r option (empty argument case). -. .Mx .It Va recipients-in-cc \*(BO When doing a @@ -10043,7 +9770,6 @@ ends in the new .Ql To: , the rest is merged into .Ql Cc: . -. .Mx .It Va record Unless this variable is defined, no copies of outgoing mail will be saved. @@ -10061,7 +9787,6 @@ to force interpretation relative to .Va folder .Va outfolder needs to be set in addition. -. .Mx .It Va record-files \*(BO If this variable is set the meaning of @@ -10072,7 +9797,6 @@ recipients (see These address types will not appear in recipient lists unless .Va add-file-recipients is also set. -. .Mx .It Va record-resent \*(BO If this variable is set the meaning of @@ -10082,7 +9806,6 @@ will be extended to also cover the and .Ic Resend commands. -. .Mx .It Va reply-in-same-charset \*(BO If this variable is set \*(UA first tries to use the same @@ -10090,7 +9813,6 @@ character set of the original message for replies. If this fails, the mechanism described in .Sx "Character sets" is evaluated as usual. -. .Mx .It Va reply-strings Can be set to a comma-separated list of (case-insensitive according to @@ -10106,7 +9828,6 @@ and the .Ql Wg: which often has been seen in the wild; I.e., the separating colon has to be specified explicitly. -. .Mx .It Va replyto A list of addresses to put into the @@ -10115,7 +9836,6 @@ field of the message header. Members of this list are handled as if they were in the .Ic alternates list. -. .Mx .It Va reply-to-honour Controls whether a @@ -10126,7 +9846,6 @@ or .Ic Lreply . This is a quadoption; if set without a value it defaults to .Dq yes . -. .Mx .It Va rfc822-body-from_ \*(BO This variable can be used to force displaying a so-called @@ -10134,13 +9853,11 @@ This is a quadoption; if set without a value it defaults to line for messages that are embedded into an envelope mail via the .Ql message/rfc822 MIME mechanism, for more visual convenience. -. .Mx .It Va save \*(BO Enable saving of (partial) messages in .Ev DEAD upon interrupt or delivery error. -. .Mx .It Va screen The number of lines that represents a @@ -10164,7 +9881,6 @@ and .Ev LINES and the variable .Va crt . -. .Mx .It Va searchheaders \*(BO Expand message-list specifiers in the form @@ -10174,7 +9890,6 @@ to all messages containing the substring in the header field .Ql x . The string search is case insensitive. -. .Mx .It Va sendcharsets \*(OP A comma-separated list of character set names that can be used in @@ -10190,7 +9905,6 @@ Also see and refer to the section .Sx "Character sets" for the complete picture of character set conversion in \*(UA. -. .Mx .It Va sendcharsets-else-ttycharset \*(BO\*(OP If this variable is set, but @@ -10220,7 +9934,6 @@ setting, since in this case the character set is US-ASCII by definition, so that it is better to also override .Va ttycharset , then. -. .Mx .It Va sender An address that is put into the @@ -10237,23 +9950,18 @@ address is handled as if it were in the list; also see .Fl r , .Va r-option-implicit . -. .It Va sendmail \*(OB Predecessor of .Va mta . -. .It Va sendmail-arguments \*(OB Predecessor of .Va mta-arguments . -. .It Va sendmail-no-default-arguments \*(OB\*(BO Predecessor of .Va mta-no-default-arguments . -. .It Va sendmail-progname \*(OB Predecessor of .Va mta-argv0 . -. .Mx .It Va sendwait \*(BO When sending a message wait until the @@ -10263,36 +9971,30 @@ list; also see with this variable set errors reported by the MTA will be recognizable! If the MTA returns a non-zero exit status, the exit status of \*(UA will also be non-zero. -. .Mx .It Va showlast \*(BO This setting causes \*(UA to start at the last message instead of the first one when opening a mail folder. -. .Mx .It Va showname \*(BO Causes \*(UA to use the sender's real name instead of the plain address in the header field summary and in message specifications. -. .Mx .It Va showto \*(BO Causes the recipient of the message to be shown in the header summary if the message was sent by the user. -. .Mx .It Va Sign The string to expand .Ic ~A to (see .Sx "COMMAND ESCAPES" ) . -. .Mx .It Va sign The string to expand .Ic ~a to (see .Sx "COMMAND ESCAPES" ) . -. .Mx .It Va signature Must correspond to the name of a readable file if set. @@ -10300,14 +10002,12 @@ The file's content is then appended to each singlepart message and to the first part of each multipart message. Be warned that there is no possibility to edit the signature for an individual message. -. .Mx .It Va skipemptybody \*(BO If an outgoing message does not contain any text in its first or only message part, do not send it but discard it silently (see also the command line option .Fl E ) . -. .Mx .Mx .It Va smime-ca-dir , smime-ca-file @@ -10321,19 +10021,16 @@ be explicitly turned off by setting .Va smime-ca-no-defaults , and further fine-tuning is possible via .Va smime-ca-flags . -. .Mx .It Va smime-ca-flags \*(OP Can be used to fine-tune behaviour of the X509 CA certificate storage, and the certificate verification that is used. The actual values and their meanings are documented for .Va ssl-ca-flags . -. .Mx .It Va smime-ca-no-defaults \*(BO\*(OP Do not load the default CA locations that are built into the used to SSL/TLS library to verify S/MIME signed messages. -. .Mx Va smime-cipher .It Va smime-cipher-USER@HOST , smime-cipher \*(OP Specifies the cipher to use when generating S/MIME encrypted @@ -10361,17 +10058,14 @@ library that \*(UA uses. dynamic loading via, e.g., .Xr EVP_get_cipherbyname 3 (OpenSSL) if \*(UA has been compiled to support this. -. .Mx .It Va smime-crl-dir \*(OP Specifies a directory that contains files with CRLs in PEM format to use when verifying S/MIME messages. -. .Mx .It Va smime-crl-file \*(OP Specifies a file that contains a CRL in PEM format to use when verifying S/MIME messages. -. .Mx .It Va smime-encrypt-USER@HOST \*(OP If this variable is set, messages send to the given receiver are @@ -10389,11 +10083,9 @@ variable is set. It is recommended to sign encrypted messages, i.e., to also set the .Va smime-sign variable. -. .Mx .It Va smime-force-encryption \*(BO\*(OP Causes \*(UA to refuse sending unencrypted messages. -. .Mx .It Va smime-sign \*(BO\*(OP S/MIME sign outgoing messages with the user's private key @@ -10408,7 +10100,6 @@ Also see .Va smime-sign-cert , smime-sign-include-certs and .Va smime-sign-message-digest . -. .Mx Va smime-sign-cert .It Va smime-sign-cert-USER@HOST , smime-sign-cert \*(OP Points to a file in PEM format. @@ -10460,7 +10151,6 @@ and needed passwords would then be looked up via the pseudo hosts .Ql bob@exam.ple.smime-cert-cert ) . To include intermediate certificates, use .Va smime-sign-include-certs . -. .Mx Va smime-sign-include-certs .It Va smime-sign-include-certs-USER@HOST , smime-sign-include-certs \*(OP If used, this is supposed to a consist of a comma-separated list @@ -10488,7 +10178,6 @@ will be used for performing password lookups for these certificates, shall they have been given one, therefore the lookup can be automatized via the mechanisms described in .Sx "On URL syntax and credential lookup" . -. .Mx Va smime-sign-message-digest .It Va smime-sign-message-digest-USER@HOST , smime-sign-message-digest \*(OP Specifies the message digest to use when signing S/MIME messages. @@ -10514,7 +10203,6 @@ refers to the variable .Va from (or, if that contains multiple addresses, .Va sender ) . -. .It Va smtp \*(OB\*(OP To use the built-in SMTP transport, specify a SMTP URL in .Va mta . @@ -10522,7 +10210,6 @@ refers to the variable .Va smtp is used in preference of .Va mta . -. .Mx Va smtp-auth .It Va smtp-auth-USER@HOST , smtp-auth-HOST , smtp-auth \*(OP Variable chain that controls the SMTP @@ -10559,7 +10246,6 @@ is \*(IN. .Va smtp-auth-USER@HOST : may override dependent on sender address in the variable .Va from . -. .It Va smtp-auth-password \*(OP\*(OU Sets the global fallback password for SMTP authentication. If the authentication method requires a password, but neither @@ -10568,13 +10254,11 @@ nor a matching .Va smtp-auth-password-USER@HOST can be found, \*(UA will ask for a password on the user's terminal. -. .It Va smtp-auth-password-USER@HOST \*(OU Overrides .Va smtp-auth-password for specific values of sender addresses, dependent upon the variable .Va from . -. .It Va smtp-auth-user \*(OP\*(OU Sets the global fallback user name for SMTP authentication. If the authentication method requires a user name, but neither @@ -10583,13 +10267,11 @@ nor a matching .Va smtp-auth-user-USER@HOST can be found, \*(UA will ask for a user name on the user's terminal. -. .It Va smtp-auth-user-USER@HOST \*(OU Overrides .Va smtp-auth-user for specific values of sender addresses, dependent upon the variable .Va from . -. .Mx .It Va smtp-hostname \*(OP\*(IN Normally \*(UA uses the variable @@ -10624,7 +10306,6 @@ Setting this variable also influences generated and .Ql Content-ID: header fields. -. .Mx Va smtp-use-starttls .It Va smtp-use-starttls-USER@HOST , smtp-use-starttls-HOST , smtp-use-starttls \*(BO\*(OP Causes \*(UA to issue a @@ -10632,7 +10313,6 @@ header fields. command to make an SMTP .Va mta session SSL/TLS encrypted, i.e., to enable transport layer security. -. .Mx Va socks-proxy .It Va socks-proxy-USER@HOST , socks-proxy-HOST , socks-proxy \*(OP If this is set to the hostname (SOCKS URL) of a SOCKS5 server then @@ -10649,7 +10329,6 @@ $ ssh -D 10000 USER@HOST # Then, start a client that uses it in terminal 2 $ \*(uA -Ssocks-proxy-USER@HOST=localhost:10000 .Ed -. .Mx .It Va spam-interface \*(OP In order to use any of the spam-related commands (like, e.g., @@ -10659,7 +10338,6 @@ Please refer to the manual section .Sx "Handling spam" for the complete picture of spam handling in \*(UA. All or none of the following interfaces may be available: -. .Bl -tag -width ".It Ql _ilte_" .It Ql spamc Interaction with @@ -10689,7 +10367,6 @@ Note that this interface does not inspect the .Ql is-spam flag of a message for the command .Ic spamforget . -. .It Ql filter generic spam filter support via freely configurable hooks. This interface is meant for programs like @@ -10723,15 +10400,12 @@ available and the .Va spamfilter-rate-scanscore variable is set. .El -. -. .Mx .It Va spam-maxsize \*(OP Messages that exceed this size will not be passed through to the configured .Va spam-interface . If unset or 0, the default of 420000 bytes is used. -. .Mx .It Va spamc-command \*(OP The path to the @@ -10743,7 +10417,6 @@ Note that the path is not expanded, but used .Dq as is . A fallback path will have been compiled into the \*(UA binary if the executable had been found during compilation. -. .Mx .It Va spamc-arguments \*(OP Even though \*(UA deals with most arguments for the @@ -10752,7 +10425,6 @@ executable had been found during compilation. automatically, it may at least sometimes be desirable to specify connection-related ones via this variable, e.g., .Ql -d server.example.com -p 783 . -. .Mx .It Va spamc-user \*(OP Specify a username for per-user configuration files for the @@ -10761,7 +10433,6 @@ connection-related ones via this variable, e.g., If this is set to the empty string then \*(UA will use the name of the current .Va user . -. .Mx .Mx .Mx @@ -10775,7 +10446,6 @@ current The manual section .Sx "Handling spam" contains examples for some programs. -. .Mx .It Va spamfilter-rate-scanscore \*(OP Because of the generic nature of the @@ -10792,7 +10462,6 @@ Then the latter is used to parse the first output line of the .Va spamfilter-rate hook, and, in case the evaluation is successful, the group that has been specified via the number is interpreted as a floating point scan score. -. .Mx .Mx .It Va ssl-ca-dir , ssl-ca-file @@ -10811,8 +10480,6 @@ also see for more information. \*(UA will try to use the TLS/SNI (ServerNameIndication) extension when establishing TLS connections to servers identified with hostnames. -. -. .Mx .It Va ssl-ca-flags \*(OP Can be used to fine-tune behaviour of the X509 CA certificate @@ -10828,7 +10495,6 @@ and the availability of which depends on the used SSL/TLS library version: a directive without mapping is ignored (error log subject to .Va debug ) . Directives currently understood (case-insensitively) include: -. .Pp .Bl -tag -compact -width ".It Cd BaNg" .It Cd no-alt-chains @@ -10858,13 +10524,10 @@ Newer versions of OpenSSL support alternative chain checking and enable it by default, resulting in the same behaviour; also see .Cd no-alt-chains . .El -. -. .Mx .It Va ssl-ca-no-defaults \*(BO\*(OP Do not load the default CA locations that are built into the used to SSL/TLS library to verify SSL/TLS server certificates. -. .Mx Va ssl-cert .It Va ssl-cert-USER@HOST , ssl-cert-HOST , ssl-cert \*(OP Variable chain that sets the filename for a SSL/TLS client @@ -10874,7 +10537,6 @@ This is a direct interface to the slot of the .Xr SSL_CONF_cmd 3 function of the OpenSSL library, if available. -. .Mx Va ssl-cipher-list .It Va ssl-cipher-list-USER@HOST , ssl-cipher-list-HOST , ssl-cipher-list \*(OP Specifies a list of ciphers for SSL/TLS connections. @@ -10894,7 +10556,6 @@ ciphers), possibly cramped to what the actually used SSL/TLS library supports \(en the manual section .Sx "An example configuration" also contains a SSL/TLS use case. -. .Mx .It Va ssl-config-file \*(OP If this variable is set \*(UA will call @@ -10906,7 +10567,6 @@ configuration file to be used instead of the global OpenSSL default; note that in this case it is an error if the file cannot be loaded. The application name will always be passed as .Dq \*(uA . -. .Mx Va ssl-curves .It Va ssl-curves-USER@HOST , ssl-curves-HOST , ssl-curves \*(OP Specifies a list of supported curves for SSL/TLS connections. @@ -10918,13 +10578,11 @@ function of the OpenSSL library, if available; see .Xr SSL_CTX_set1_curves_list 3 for more information. By default \*(UA does not set a list of curves. -. .Mx .Mx .It Va ssl-crl-dir , ssl-crl-file \*(OP Specify a directory / a file, respectively that contains a CRL in PEM format to use when verifying SSL/TLS server certificates. -. .Mx Va ssl-key .It Va ssl-key-USER@HOST , ssl-key-HOST , ssl-key \*(OP Variable chain that sets the filename for the private key of @@ -10936,7 +10594,6 @@ This is a direct interface to the slot of the .Xr SSL_CONF_cmd 3 function of the OpenSSL library, if available. -. .It Va ssl-method-USER@HOST , ssl-method-HOST , ssl-method \*(OB\*(OP Please use the newer and more flexible .Va ssl-protocol @@ -10961,7 +10618,6 @@ is mapped to .Ql ALL, -SSLv2 and thus includes the SSLv3 protocol. Note that SSLv2 is no longer supported at all. -. .Mx Va ssl-protocol .It Va ssl-protocol-USER@HOST , ssl-protocol-HOST , ssl-protocol \*(OP Specify the used SSL/TLS protocol. @@ -10998,13 +10654,11 @@ Especially for older protocols explicitly securing .Va ssl-cipher-list may be worthwile, see .Sx "An example configuration" . -. .Mx .It Va ssl-rand-egd \*(OP Gives the pathname to an entropy daemon socket, see .Xr RAND_egd 3 . Not all SSL/TLS libraries support this. -. .Mx .It Va ssl-rand-file \*(OP Gives the filename to a file with random entropy data, see @@ -11021,7 +10675,6 @@ If \*(UA successfully seeded the SSL PRNG then it will update the file This variable is only used if .Va ssl-rand-egd is not set (or not supported by the SSL/TLS library). -. .Mx Va ssl-verify .It Va ssl-verify-USER@HOST , ssl-verify-HOST , ssl-verify \*(OP Variable chain that sets the action to be performed if an error @@ -11044,7 +10697,6 @@ Valid (case-insensitive) values are (do not perform validation). The default is .Ql ask . -. .Mx .It Va stealthmua If only set without an assigned value, then this setting inhibits the @@ -11065,8 +10717,6 @@ then the mentioned and .Ql Content-ID: suppression does not occur. -. -. .Mx .It Va termcap (\*(OP) This specifies a comma-separated list of @@ -11080,7 +10730,6 @@ entries. .Sy Note this variable will only be queried once at program startup and can thus only be specified in resource files or on the command line. -. .Pp String capabilities form .Ql cap=value @@ -11109,25 +10758,19 @@ finally three letter octal sequences, as in are supported. To specify that a terminal supports 256-colours, and to define sequences that home the cursor and produce an audible bell, one might write: -. .Bd -literal -offset indent ? set termcap='Co#256,home=\eE[H,bel=^G' .Ed -. .Pp The following terminal capabilities are or may be meaningful for the operation of the built-in line editor or \*(UA in general: -. .Pp .Bl -tag -compact -width ".It Cd yay" -.\" HAVE_COLOUR .It Cd colors Ns \0or Cd Co .Cd max_colors : numeric capability specifying the maximum number of colours. Note that \*(UA does not actually care about the terminal beside that, but always emits ANSI / ISO 6429 escape sequences. -. -.\" HAVE_TERMCAP .It Cd rmcup Ns \0or Cd te Ns \0/ Cd smcup Ns \0or Cd ti .Cd exit_ca_mode and @@ -11136,7 +10779,6 @@ respectively: exit and enter the alternative screen ca-mode, effectively turning \*(UA into a fullscreen application. This must be enabled explicitly by setting .Va termcap-ca-mode . -. .It Cd smkx Ns \0or Cd ks Ns \0/ Cd rmkx Ns \0or Cd ke .Cd keypad_xmit and @@ -11145,11 +10787,9 @@ 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. -. .It Cd ed Ns \0or Cd cd .Cd clr_eos : clear the screen. -. .It Cd clear Ns \0or Cd cl .Cd clear_screen : clear the screen and home cursor. @@ -11157,19 +10797,15 @@ clear the screen and home cursor. .Cd ho plus .Cd cd . ) -. .It Cd home Ns \0or Cd ho .Cd cursor_home : home cursor. -. -.\" HAVE_MLE .It Cd el Ns \0or Cd ce .Cd clr_eol : clear to the end of line. (Will be simulated via .Cd ch plus repetitions of space characters.) -. .It Cd hpa Ns \0or Cd ch .Cd column_address : move the cursor (to the given column parameter) in the current row. @@ -11177,19 +10813,16 @@ move the cursor (to the given column parameter) in the current row. .Cd cr plus .Cd nd . ) -. .It Cd cr .Cd carriage_return : move to the first column in the current row. The default built-in fallback is .Ql \er . -. .It Cd cub1 Ns \0or Cd le .Cd cursor_left : move the cursor left one space (non-destructively). The default built-in fallback is .Ql \eb . -. .It Cd cuf1 Ns \0or Cd nd .Cd cursor_right : move the cursor right one space (non-destructively). @@ -11201,12 +10834,9 @@ Less often occur and .Ql \eEOC . .El -. .Pp Many more capabilities which describe key-sequences are documented for .Ic bind . -. -. .Mx .It Va termcap-ca-mode \*(OP Allow usage of the @@ -11219,7 +10849,6 @@ application, as documented for .Sy Note this variable will only be queried once at program startup and can thus only be specified in resource files or on the command line. -. .Mx .It Va termcap-disable \*(OP Disable any interaction with a terminal control library. @@ -11229,7 +10858,6 @@ describe the terminal to \*(UA. .Sy Note this variable will only be queried once at program startup and can thus only be specified in resource files or on the command line. -. .Mx .It Va toplines If defined, gives the number of lines of a message to be displayed @@ -11244,13 +10872,11 @@ unsigned right shifting (see the .Va screen height. -. .Mx .It Va topsqueeze \*(BO If set then the .Ic top command series will strip adjacent empty lines and quotations. -. .Mx .It Va ttycharset The character set of the terminal \*(UA operates on, @@ -11264,7 +10890,6 @@ It defaults to UTF-8 if conversion is available. Refer to the section .Sx "Character sets" for the complete picture about character sets. -. .Mx .It Va typescript-mode \*(BO A special multiplex variable that disables all variables and @@ -11276,7 +10901,6 @@ e.g., it sets and (before startup completed only) .Va termcap-disable . Unsetting it does not restore the former state of the covered settings. -. .Mx .It Va umask For a safety-by-default policy \*(UA sets its process @@ -11288,14 +10912,12 @@ set it to an empty value to do not change the (current) setting (on startup), otherwise the process file mode creation mask is updated to the new value. Child processes inherit the process file mode creation mask. -. .Mx Va user .It Va user-HOST , user \*(IN Variable chain that sets a global fallback user name, which is 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 \*(UA. -. .Mx .It Va v15-compat \*(BO Setting this enables upward compatibility with \*(UA @@ -11303,7 +10925,6 @@ version 15.0 in respect to which configuration options are available and how they are handled. This manual uses \*(IN and \*(OU to refer to the new and the old way of doing things, respectively. -. .Mx .It Va verbose \*(BO This setting, also controllable via the command line option @@ -11316,7 +10937,6 @@ the actual message delivery and protocol conversations are shown. A single .Pf no Va verbose is sufficient to disable verbosity as such. -. .Mx .Mx .Mx @@ -11330,7 +10950,6 @@ The date is in ISO 8601 notation. The output of the command .Ic version will include this information. -. .Mx .It Va writebackedited If this variable is set messages modified using the @@ -11346,14 +10965,7 @@ performed, and proper RFC 4155 quoting of newly added or edited content is also left as an excercise to the user. .El -.\" }}} (Variables) -. -.\" }}} (INTERNAL VARIABLES) -. -. -.\" .Sh ENVIRONMENT {{{ .Sh ENVIRONMENT -. The term .Dq environment variable should be considered an indication that these variables are either @@ -11371,7 +10983,6 @@ and .Ic unset , causing automatic program environment updates (to be inherited by newly created child processes). -. .Pp In order to transparently integrate other environment variables equally they need to be imported (linked) with the command @@ -11383,13 +10994,11 @@ The following example, applicable to a POSIX shell, sets the environment variable for \*(UA only, and beforehand exports the .Ev EDITOR in order to affect any further processing in the running shell: -. .Bd -literal -offset indent $ EDITOR="vim -u ${HOME}/.vimrc" $ export EDITOR $ COLUMNS=80 \*(uA -R .Ed -. .Bl -tag -width ".It Ev BaNg" .Mx .It Ev COLUMNS @@ -11402,7 +11011,6 @@ in interactive mode thereafter. Ignored in non-interactive mode, which always uses 80 columns, unless in .fl # batch mode. -. .Mx .It Ev DEAD The name of the (mailbox) @@ -11418,7 +11026,6 @@ If the variable .Va debug is set no output will be generated, otherwise the contents of the file will be replaced. -. .Mx .It Ev EDITOR Pathname of the text editor to use in the @@ -11427,7 +11034,6 @@ command and .Ic ~e .Sx "COMMAND ESCAPES" . A default editor is used if this value is not defined. -. .Mx .It Ev HOME The user's home directory. @@ -11440,7 +11046,6 @@ variable settings this directory is a default write target, e.g. for .Ev DEAD , .Ev MBOX and more.) -. .Mx .Mx .Mx @@ -11455,7 +11060,6 @@ Runtime changes trigger automatic updates of the entire locale system, updating and overwriting also a .Va ttycharset set by the user. -. .Mx .It Ev LINES The user's preferred number of lines on a page or the vertical screen @@ -11465,7 +11069,6 @@ processes in interactive mode thereafter. Ignored in non-interactive mode, which always uses 24 lines, unless in .fl # batch mode. -. .Mx .It Ev LISTER Pathname of the directory lister to use in the @@ -11475,13 +11078,11 @@ Default is .Xr ls 1 (path search through .Ev SHELL ) . -. .Mx .It Ev LOGNAME Upon startup \*(UA will actively ensure that this variable refers to the name of the user who runs \*(UA, in order to be able to pass a verified name to any newly created child process. -. .Mx .It Ev MAIL Is used as the users @@ -11491,17 +11092,14 @@ unless .Va inbox is set. This is assumed to be an absolute pathname. -. .Mx .It Ev MAILCAPS \*(OP Overrides the default path search for .Sx "The Mailcap files" , which is defined in the standard RFC 1524 as .Ql ~/.mailcap:\:/etc/mailcap:\:/usr/etc/mailcap:\:/usr/local/etc/mailcap . -.\" TODO we should have a mailcaps-default virtual RDONLY option! (\*(UA makes it a configuration option, however.) Note this is not a search path, but a path search. -. .Mx .It Ev MAILRC Is used as a startup file instead of @@ -11515,7 +11113,6 @@ or the command line option should be used in order to avoid side-effects from reading their configuration files. This variable is only used when it resides in the process environment. -. .Mx .It Ev MAILX_NO_SYSTEM_RC If this variable is set then reading of @@ -11526,7 +11123,6 @@ had been started up with the option (and according argument) or .Fl n . This variable is only used when it resides in the process environment. -. .Mx .It Ev MBOX The name of the users @@ -11546,13 +11142,11 @@ Traditionally this MBOX is used as the file to save messages from the that have been read. Also see .Sx "Message states" . -. .Mx .It Ev NETRC \*(IN\*(OP This variable overrides the default location of the user's .Pa ~/.netrc file. -. .Mx .It Ev PAGER Pathname of the program to use for backing the command @@ -11584,19 +11178,16 @@ will optionally be set to .Dq -c . Alse see .Va colour-pager . -. .Mx .It Ev PATH A colon-separated list of directories that is searched by the shell when looking for commands, e.g., .Ql /bin:/usr/bin:/usr/local/bin . -. .Mx .It Ev POSIXLY_CORRECT This variable is automatically looked for upon startup, see .Va posix for more. -. .Mx .It Ev SHELL The shell to use for the commands @@ -11607,7 +11198,6 @@ the .Sx "COMMAND ESCAPES" and when starting subprocesses. A default shell is used if this environment variable is not defined. -. .Mx .It Ev SOURCE_DATE_EPOCH This specifies a time in seconds since the Unix epoch (1970-01-01) to be @@ -11622,7 +11212,6 @@ It is to be used during development or by software packagers. a program abortion. .Pp .Dl $ SOURCE_DATE_EPOCH=`date +%s` \*(uA -. .Mx .It Ev TERM \*(OP The terminal type for which output is to be prepared. @@ -11630,7 +11219,6 @@ For extended colour and font control please refer to .Sx "Coloured display" , and for terminal management in general to .Sx "On terminal control and line editor" . -. .Mx .It Ev TMPDIR Used as directory for temporary files instead of @@ -11639,14 +11227,12 @@ if set, existent, accessible as well as read- and writable. This variable is only used when it resides in the process environment, but \*(UA will ensure at startup that this environment variable is updated to contain a usable temporary directory. -. .Mx .It Ev USER Identical to .Ev LOGNAME (see there), but this variable is not standardized, should therefore not be used, and is only corrected if already set. -. .Mx .It Ev VISUAL Pathname of the text editor to use in the @@ -11655,23 +11241,14 @@ command and .Ic ~v .Sx "COMMAND ESCAPES" . .El -. -.\" }}} -. -. -.\" .Sh FILES {{{ .Sh FILES -. -.\" file list {{{ .Bl -tag -width ".It Pa BaNg" .It Pa \*(ur File giving initial commands, one of the .Sx "Resource files" . -. .It Pa \*(UR System wide initialization file, one of the .Sx "Resource files" . -. .Mx .It Pa ~/.mailcap \*(OP Personal MIME type handler definition file, see @@ -11679,32 +11256,27 @@ System wide initialization file, one of the This location is part of the RFC 1524 standard search path, which is a configuration option and can be overridden via .Ev MAILCAPS . -. .Mx .It Pa /etc/mailcap \*(OP System wide MIME type handler definition file, see .Sx "The Mailcap files" . This location is part of the RFC 1524 standard search path, which is a configuration option and can be overridden via -. .Mx .It Pa ~/mbox The default value for .Ev MBOX . The actually used path is a configuration option. -. .Mx .It Pa ~/.mime.types Personal MIME types, see .Sx "The mime.types files" . The actually used path is a configuration option. -. .Mx .It Pa /etc/mime.types System wide MIME types, see .Sx "The mime.types files" . The actually used path is a configuration option. -. .Mx .It Pa ~/.netrc \*(IN\*(OP The default location of the users @@ -11714,20 +11286,14 @@ file \(en the section documents the file format. The actually used path is a configuration option and can be overridden via .Ev NETRC . -. .Mx .It Pa /dev/null The data sink .Xr null 4 . The actually used path is a compile-time constant. .El -.\" }}} -. -.\" .Ss "Resource files" {{{ .Ss "Resource files" -. Upon startup \*(UA reads in several resource files: -. .Bl -tag -width ".It Pa BaNg" .Mx .It Pa \*(UR @@ -11740,7 +11306,6 @@ command line options, or by setting the .Sx ENVIRONMENT variable .Ev MAILX_NO_SYSTEM_RC . -. .Mx .It Pa \*(ur File giving initial commands. @@ -11751,7 +11316,6 @@ variable Reading of this file can be suppressed with the .Fl \&: command line option. -. .It Va mailx-extra-rc Defines a startup file to be read after all other resource files. It can be used to specify settings that are not understood by other @@ -11761,10 +11325,8 @@ This variable is only honoured when defined in a resource file, e.g., it is one of the .Sx "INTERNAL VARIABLES" . .El -. .Pp The content of these files is interpreted as follows: -. .Pp .Bl -bullet -compact .It @@ -11790,14 +11352,12 @@ then it is a comment-command and also ignored. (The comment-command is a real command, which does nothing, and therefore the usual follow lines mechanism applies!) .El -. .Pp Unless \*(UA is about to enter interactive mode syntax errors that occur while loading these files are treated as errors and cause program exit. More files with syntactically equal content can be .Ic source Ns ed . The following, saved in a file, would be an examplary content: -. .Bd -literal -offset indent # This line is a comment command. And y\e es, it is really continued here. @@ -11805,11 +11365,7 @@ set debug \e verbose set editheaders .Ed -.\" }}} -. -.\" .Ss "The mime.types files" {{{ .Ss "The mime.types files" -. As stated in .Sx "HTML mail and MIME attachments" \*(UA needs to learn about MIME (Multipurpose Internet Mail Extensions) @@ -11823,12 +11379,10 @@ Another is the command which also offers access to \*(UAs MIME type cache. .Pa mime.types files have the following syntax: -. .Bd -literal -offset indent type/subtype extension [extension ...] # E.g., text/html html htm .Ed -. .Pp where .Ql type/subtype @@ -11843,19 +11397,15 @@ s, separated by whitespace, can be bound to the media type format. Comments may be introduced anywhere on a line with a number sign .Ql # , causing the remaining line to be discarded. -. \*(UA also supports an extended, non-portable syntax in especially crafted files, which can be loaded via the alternative value syntax of .Va mimetypes-load-control , and prepends an optional .Ql type-marker : -. .Pp .Dl [type-marker ]type/subtype extension [extension ...] -. .Pp The following type markers are supported: -. .Pp .Bl -tag -compact -width ".It Ar _n_u" .It Ar @ @@ -11873,7 +11423,6 @@ Likewise but instead of falling back to plain text require an explicit content handler to be defined. .El -. .Pp Further reading: for sending messages: @@ -11888,12 +11437,7 @@ For reading etc. messages: .Va mimetypes-load-control , .Va pipe-TYPE/SUBTYPE , .Va pipe-EXTENSION . -.\" }}} -. -.\" .Ss "The Mailcap files" {{{ .Ss "The Mailcap files" -. -.\" TODO MAILCAP DISABLED .Sy This feature is not available in v14.9.0, sorry! RFC 1524 defines a .Dq User Agent Configuration Mechanism @@ -11911,7 +11455,6 @@ environment variable that can be used to overwrite that (repeating here that it is not a search path, but instead a path search specification). Any existing files will be loaded in sequence, appending any content to the list of MIME type handler directives. -. .Pp .Dq Mailcap files consist of a set of newline separated entries. @@ -11928,7 +11471,6 @@ by preceding them with the reverse solidus character .Ql \e . The standard does not specify how leading whitespace of follow lines is to be treated, therefore \*(UA retains it. -. .Pp .Dq Mailcap entries consist of a number of semicolon @@ -11940,7 +11482,6 @@ semicolon and itself. 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 content is ignored (removed). -. .Pp The first field defines the MIME .Ql TYPE/SUBTYPE @@ -11956,7 +11497,6 @@ The second field defines the shell command which shall be used to MIME parts of the given type; it is implicitly called the .Cd view command. -. .Pp For data .Dq consuming @@ -11982,7 +11522,6 @@ then \*(UA will remove it again, as if the and .Cd x-mailx-tmpfile-unlink flags had been set; see below for more. -. .Pp The optional fields either define a shell command or an attribute (flag) value, the latter being a single word and the former being a keyword @@ -11992,14 +11531,11 @@ succeeded by a shell command, and as usual for any .Dq Mailcap content any whitespace surrounding the equals sign will be removed, too. Optional fields include the following: -. -. .Bl -tag -width ".It Cd BaNg" .It Cd compose A program that can be used to compose a new body or body part in the given format. (Currently unused.) -. .It Cd composetyped Similar to the .Cd compose @@ -12007,24 +11543,20 @@ field, but is to be used when the composing program needs to specify the .Ql Content-type: header field to be applied to the composed data. (Currently unused.) -. .It Cd edit A program that can be used to edit a body or body part in the given format. (Currently unused.) -. .It Cd print A program that can be used to print a message or body part in the given format. (Currently unused.) -. .It Cd test Specifies a program to be run to test some condition, e.g., 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 .Cd x-mailx-test-once . -. .Mx .It Cd needsterminal This flag field indicates that the given shell command must be run on @@ -12033,7 +11565,6 @@ an interactive terminal. interactive mode, in non-interactive mode this entry will be entirely ignored; this flag implies .Cd x-mailx-noquote . -. .Mx .It Cd copiousoutput A flag field which indicates that the output of the @@ -12042,7 +11573,6 @@ command will be an extended stream of textual output that can be (re)integrated into \*(UA's normal visual display. It is mutually exclusive with .Cd needsterminal . -. .It Cd textualnewlines A flag field which indicates that this type of data is line-oriented and that, if encoded in @@ -12050,7 +11580,6 @@ that, if encoded in all newlines should be converted to canonical form (CRLF) before encoding, and will be in that form after decoding. (Currently unused.) -. .It Cd nametemplate This field gives a filename format, in which .Ql %s @@ -12065,15 +11594,12 @@ by using Note that \*(UA ignores the name template unless that solely specifies a filename suffix that consists of (ASCII) alphabetic and numeric characters, the underscore and dot only. -. .It Cd x11-bitmap 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 \*(UA. -. .It Cd description A textual description that describes this type of data. -. .Mx .It Cd x-mailx-even-if-not-interactive An extension flag test field \(em by default handlers without @@ -12082,7 +11608,6 @@ are entirely ignored in non-interactive mode, but if this flag is set then their use will be considered. It is an error if this flag is set for commands that use the flag .Cd needsterminal . -. .Mx .It Cd x-mailx-noquote An extension flag field that indicates that even a @@ -12090,7 +11615,6 @@ An extension flag field that indicates that even a .Cd view command shall not be used to generate message quotes (as it would be by default). -. .Mx .It Cd x-mailx-async Extension flag field that denotes that the given @@ -12098,7 +11622,6 @@ Extension flag field that denotes that the given command shall be executed asynchronously, without blocking \*(UA. Cannot be used in conjunction with .Cd needsterminal . -. .Mx .It Cd x-mailx-test-once Extension flag which denotes whether the given @@ -12106,7 +11629,6 @@ Extension flag which denotes whether the given command shall be evaluated once only and the (boolean) result be cached. This is handy if some global unchanging condition is to be queried, like .Dq running under the X Window System . -. .Mx .It Cd x-mailx-tmpfile Extension flag field that requests creation of a zero-sized temporary @@ -12115,7 +11637,6 @@ file, the name of which is to be placed in the environment variable It is an error to use this flag with commands that include a .Ql %s format. -. .Mx .It Cd x-mailx-tmpfile-fill Normally the MIME part content is passed to the handler via standard @@ -12128,7 +11649,6 @@ explicitly! It is an error to use this flag with commands that include a .Ql %s format. -. .Mx .It Cd x-mailx-tmpfile-unlink Extension flag field that requests that the temporary file shall be @@ -12142,7 +11662,6 @@ or without also setting .Cd x-mailx-tmpfile or .Cd x-mailx-tmpfile-fill . -. .Mx .It Cd x-mailx-tmpfile-keep Using the string @@ -12153,8 +11672,6 @@ and deal with the temporary file yourself, you can add in this flag to forcefully ignore .Cd x-mailx-tmpfile-unlink . .El -. -. .Pp The standard includes the possibility to define any number of additional entry fields, prefixed by @@ -12176,12 +11693,10 @@ command shall not, the following will help out the latter (with enabled or an increased .Va verbose level \*(UA will show information about handler evaluation): -. .Bd -literal -offset indent application/postscript; ps-to-terminal %s; needsterminal application/postscript; ps-to-terminal %s; compose=idraw %s .Ed -. .Pp In fields any occurrence of the format string .Ql %t @@ -12197,7 +11712,6 @@ followed by the parameter name and a closing character. The entire parameter should appear as a single command line argument, regardless of embedded spaces; thus: -. .Bd -literal -offset indent # Message Content-type: multipart/mixed; boundary=42 @@ -12209,9 +11723,7 @@ multipart/*; /usr/local/bin/showmulti \e # Executed shell command /usr/local/bin/showmulti multipart/mixed 42 .Ed -. .Pp -.\" TODO v15: Mailcap: %n,%F Note that \*(UA does not support handlers for multipart MIME parts as shown in this example (as of today). \*(UA does not support the additional formats @@ -12223,7 +11735,6 @@ An example file, also showing how to properly deal with the expansion of which includes any quotes that are necessary to make it a valid shell argument by itself and thus will cause undesired behaviour when placed in additional user-provided quotes: -. .Bd -literal -offset indent # Comment line text/richtext; richtext %s; copiousoutput @@ -12241,7 +11752,6 @@ application/*; echo "This is \e"%t\e" but \e is 50 \e% Greek to me" \e; < %s head -c 1024 | cat -vET; \e copiousoutput; x-mailx-noquote .Ed -. .Pp Further reading: .Sx "HTML mail and MIME attachments" , @@ -12251,11 +11761,7 @@ Further reading: .Va mime-counter-evidence , .Va pipe-TYPE/SUBTYPE , .Va pipe-EXTENSION . -.\" }}} -. -.\" .Ss "The .netrc file" {{{ .Ss "The .netrc file" -. The .Pa .netrc file contains user credentials for machine accounts. @@ -12270,7 +11776,6 @@ syntax, but users should nonetheless be aware of portability glitches of that file format, shall their .Pa .netrc be usable across multiple programs and platforms: -. .Pp .Bl -bullet -compact .It @@ -12304,7 +11809,6 @@ than .Dq anonymous , \*(UA will always require these strict permissions. .El -. .Pp Of the following list of supported tokens \*(UA only uses (and caches) .Cd machine , @@ -12316,7 +11820,6 @@ At runtime the command can be used to control \*(UA's .Pa .netrc cache. -. .Bl -tag -width ".It Cd BaNg" .It Cd machine Ar name The hostname of the entries' machine, lowercase-normalized by \*(UA @@ -12352,24 +11855,19 @@ nor .Ql 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). -. .It Cd default This is the same as .Cd machine except 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. -. .It Cd login Ar name The user name on the remote machine. -. .It Cd password Ar string The user's password on the remote machine. -. .It Cd account Ar string Supply an additional account password. This is merely for FTP purposes. -. .It Cd macdef Ar name Define a macro. A macro is defined with the specified @@ -12387,17 +11885,8 @@ If a macro named exists, it is automatically run as the last step of the login process. This is merely for FTP purposes. .El -.\" }}} -. -.\" }}} -. -. -.\" .Sh EXAMPLES {{{ .Sh EXAMPLES -. -.\" .Ss "An example configuration" {{{ .Ss "An example configuration" -. .Bd -literal -offset indent # This example assumes v15.0 compatibility mode set v15-compat @@ -12563,7 +12052,6 @@ define V { } commandalias V '\e'call V .Ed -. .Pp When storing passwords in .Pa \*(ur @@ -12575,7 +12063,6 @@ is available user credentials can be stored in the central .Pa .netrc file instead; e.g., here is a different version of the example account that sets up SMTP and POP3: -. .Bd -literal -offset indent define XandeX { set folder=~/spool/XandeX inbox=+syste.mbox sent=+sent @@ -12593,26 +12080,18 @@ account XandeX { \ecall XandeX } .Ed -. .Pp and, in the .Pa .netrc file: -. .Bd -literal -offset indent machine *.yXXXXx.ru login USER password PASS .Ed -. .Pp This configuration should now work just fine: -. .Pp .Dl $ echo text | \*(uA -dvv -AXandeX -s Subject user@exam.ple -.\" }}} -. -.\" .Ss "S/MIME step by step" {{{ .Ss "S/MIME step by step" -. \*(OP The first thing you need for participating in S/MIME message exchange is your personal certificate, including a private key. The certificate contains public information, in particular your name and @@ -12623,7 +12102,6 @@ The certificate is included in each signed message you send. The private key must be kept secret. It is used to decrypt messages that were previously encrypted with your public key, and to sign messages. -. .Pp For personal use it is recommended that you get a S/MIME certificate from one of the major CAs on the Internet using your WWW browser. @@ -12642,7 +12120,6 @@ or as a vivid member of the .Va smime-ca-file . But let us take a step-by-step tour on how to setup S/MIME with a certificate from CAcert.org despite this situation! -. .Pp First of all you will have to become a member of the CAcert.org community, simply by registrating yourself via the web interface. @@ -12654,15 +12131,12 @@ Now ready to create S/MIME certificates, so let us create a new 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 .Dq common name . -. .Pp Create a private key and a certificate request on your local computer (please see the manual pages of the used commands for more in-depth knowledge on what the used arguments etc. do): -. .Pp .Dl $ openssl req -nodes -newkey rsa:4096 -keyout key.pem -out creq.pem -. .Pp Afterwards copy-and-paste the content of .Dq creq.pem @@ -12676,15 +12150,12 @@ will find its way into the certificate via the certificate-request). You are now ready and can create your CAcert certified certificate. Download and store or copy-and-paste it as .Dq pub.crt . -. .Pp Yay. In order to use your new S/MIME setup a combined private key/public key (certificate) file has to be created: -. .Pp .Dl $ cat key.pem pub.crt > ME@HERE.com.paired -. .Pp This is the file \*(UA will work with. If you have created your private key with a passphrase then \*(UA will @@ -12692,19 +12163,13 @@ ask you for it whenever a message is signed or decrypted. Set the following variables to henceforth use S/MIME (setting .Va smime-ca-file is of interest for verification only): -. .Bd -literal -offset indent ? set smime-ca-file=ALL-TRUSTED-ROOT-CERTS-HERE \e smime-sign-cert=ME@HERE.com.paired \e smime-sign-message-digest=SHA256 \e smime-sign .Ed -. -.\" }}} -. -.\" .Ss "Using CRLs with S/MIME or SSL/TLS" {{{ .Ss "Using CRLs with S/MIME or SSL/TLS" -. \*(OP Certification authorities (CAs) issue certificate revocation lists (CRLs) on a regular basis. These lists contain the serial numbers of certificates that have been @@ -12719,14 +12184,11 @@ There is otherwise no method to distinguish between valid and invalidated certificates. \*(UA currently offers no mechanism to fetch CRLs, nor to access them on the Internet, so they have to be retrieved by some external mechanism. -. .Pp \*(UA accepts CRLs in PEM format only; CRLs in DER format must be converted, like, e.\|g.: -. .Pp .Dl $ openssl crl \-inform DER \-in crl.der \-out crl.pem -. .Pp To tell \*(UA about the CRLs, a directory that contains all CRL files (and no other files) must be created. @@ -12737,14 +12199,7 @@ or variables, respectively, must then be set to point to that directory. After that, \*(UA requires a CRL to be present for each CA that is used to verify a certificate. -.\" }}} -. -.\" }}} (Examples) -. -. -.\" .Sh "FAQ" {{{ .Sh "FAQ" -. In general it is a good idea to turn on .Va debug .Pf ( Fl d ) @@ -12754,10 +12209,7 @@ and / or twice) if something does not work well. Very often a diagnostic message can be produced that leads to the problems' solution. -. -.\" .Ss "\*(UA shortly hangs on startup" {{{ .Ss "\*(UA shortly hangs on startup" -. This can have two reasons, one is the necessity to wait for a file lock and cannot be helped, the other being that \*(UA calls the function .Xr uname 2 @@ -12776,17 +12228,12 @@ Does this local hostname have a domain suffix? RFC 6762 standardized the link-local top-level domain .Ql .local , try again after adding an (additional) entry with this extension. -.\" }}} -. -.\" .Ss "I cannot login to Google mail aka GMail" {{{ .Ss "I cannot login to Google mail aka GMail" -. Since 2014 some free service providers classify programs as .Dq less secure unless they use a special authentification method (OAuth 2.0) which was not standardized for non-HTTP protocol authentication token query until August 2015 (RFC 7628). -. .Pp Different to Kerberos / GSSAPI, which is developed since the mid of the 1980s, where a user can easily create a local authentication ticket for @@ -12796,14 +12243,12 @@ program, 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 \*(UA is invoked (in interactive sessions situation may differ). -. .Pp \*(UA does not support OAuth. Because of this it is necessary to declare \*(UA a .Dq 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: -. .Pp .Bl -enum -compact .It @@ -12818,11 +12263,7 @@ use that special password instead of the real Google account password in \*(UA (for more on that see the section .Sx "On URL syntax and credential lookup" ) . .El -.\" }}} -. -.\" .Ss "Not \(dqdefunctional\(dq, but the editor key does not work" {{{ .Ss "Not \(dqdefunctional\(dq, but the editor key does not work" -. It can happen that the terminal library (see .Sx "On terminal control and line editor", .Ic bind , @@ -12839,7 +12280,6 @@ The listing of .Ic bind Ns ings will show the byte sequences that are expected. -. .Pp To overcome the situation, use, e.g., the program .Xr cat 1 , @@ -12851,7 +12291,6 @@ by keypresses, and use the variable to make \*(UA aware of them. E.g., the terminal this is typed on produces some false sequences, here an example showing the shifted home key: -. .Bd -literal -offset indent ? set verbose ? bind* @@ -12865,14 +12304,7 @@ $ cat -v # 1B 5B=[ 48=H bind base :kHOM z0 .Ed -.\" }}} -. -.\" }}} -. -. -.\" .Sh "IMAP CLIENT" {{{ .Sh "IMAP CLIENT" -. \*(OPally 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 @@ -12884,7 +12316,6 @@ was reinstantiated on user demand: in effect the IMAP code is at the level of \*(UA v14.8.16 (with .Ic imapcodec being the sole exception), and should be treated with some care. -. .Pp IMAP uses the .Ql imap:// @@ -12911,7 +12342,6 @@ mailboxes below the .Va folder target box, while folder names prefixed by `@' refer to folders below the hierarchy base. -. .Pp Note: some IMAP servers do not accept the creation of mailboxes in the hierarchy base, but require that they are created as subfolders of @@ -12922,15 +12352,12 @@ the hierarchy base, but require that they are created as subfolders of should be used (the last character is the server's hierarchy delimiter). The following IMAP-specific commands exist: -. -. .Bl -tag -width ".It Ic BaNg" .Mx .It Ic cache Only applicable to cached IMAP mailboxes; takes a message list and reads the specified messages into the IMAP cache. -. .Mx .It Ic connect If operating in disconnected mode on an IMAP mailbox, @@ -12939,7 +12366,6 @@ the mailbox status. See the description of the .Va disconnected variable for more information. -. .Mx .It Ic disconnect If operating in online mode on an IMAP mailbox, @@ -12952,7 +12378,6 @@ the respective messages are then read into the cache before the connection is closed, thus .Ql disco * makes the entire mailbox available for disconnected use. -. .Mx .It Ic imap Sends command strings directly to the current IMAP server. @@ -12976,7 +12401,6 @@ inner parentheses separate them. For each namespace a prefix and a hierarchy separator is listed. Not all IMAP servers support this command. .El -. .Mx .It Ic imapcodec Perform IMAP path transformations. @@ -12996,12 +12420,8 @@ to the internationalized variant used by IMAP, .Ar d[ecode] performs the reverse operation. .El -. -. .Pp The following IMAP-specific internal variables exist: -. -. .Bl -tag -width ".It Va BaNg" .Mx .It Va disconnected @@ -13025,13 +12445,11 @@ ones in the cache at that time. Data is saved to .Ev DEAD when this problem occurs. -. .It Va disconnected-USER@HOST The specified account is handled as described for the .Va disconnected variable above, but other accounts are not affected. -. .Mx Va imap-auth .It Va imap-auth-USER@HOST , imap-auth Sets the IMAP authentication method. @@ -13040,7 +12458,6 @@ Valid values are `login' for the usual password-based authentication `cram-md5', which is a password-based authentication that does not send the password over the network in clear text, and `gssapi' for GSS-API based authentication. -. .Mx .It Va imap-cache Enables caching of IMAP mailboxes. @@ -13048,7 +12465,6 @@ The value of this variable must point to a directory that is either existent or can be created by \*(UA. All contents of the cache can be deleted by \*(UA at any time; it is not safe to make assumptions about them. -. .Mx Va imap-delim .It Va imap-delim-USER@HOST , imap-delim-HOST , imap-delim The hierarchy separator used by the IMAP server. @@ -13061,7 +12477,6 @@ the value; an empty value will cause the default to be used, it is .Ql /. . If not set, we will reuse the first hierarchy separator character that is discovered in a user-given mailbox name. -. .Mx Va imap-keepalive .It Va imap-keepalive-USER@HOST , imap-keepalive-HOST , imap-keepalive IMAP servers may close the connection after a period of @@ -13070,7 +12485,6 @@ 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. -. .Mx .It Va imap-list-depth When retrieving the list of folders on an IMAP server, the @@ -13083,7 +12497,6 @@ If the folder separator on the current IMAP server is a slash `/', this variable has no effect and the .Ic folders command does not descend to subfolders. -. .Mx Va imap-use-starttls .It Va imap-use-starttls-USER@HOST , imap-use-starttls-HOST , imap-use-starttls Causes \*(UA to issue a `STARTTLS' command to make an unencrypted @@ -13091,13 +12504,7 @@ IMAP session SSL/TLS encrypted. This functionality is not supported by all servers, and is not used if the session is already encrypted by the IMAPS method. .El -. -.\" }}} -. -. -.\" .Sh "SEE ALSO" {{{ .Sh "SEE ALSO" -. .Xr bogofilter 1 , .Xr gpg 1 , .Xr more 1 , @@ -13116,13 +12523,7 @@ and is not used if the session is already encrypted by the IMAPS method. .Xr re_format 7 , .Xr mailwrapper 8 , .Xr sendmail 8 -. -.\" }}} -. -. -.\" .Sh HISTORY {{{ .Sh HISTORY -. M. Douglas McIlroy writes in his article .Dq A Research UNIX Reader: Annotated Excerpts \ from the Programmer's Manual, 1971-1986 @@ -13131,7 +12532,6 @@ that a command already appeared in First Edition .Ux in 1971: -. .Bd -ragged -offset indent Electronic mail was there from the start. Never satisfied with its exact behavior, everybody touched it at one @@ -13143,7 +12543,6 @@ Later, as mail became global in its reach, Dave Presotto took charge and brought order to communications with a grab-bag of external networks (v8). .Ed -. .Pp .Bx Mail was written in 1978 by Kurt Shoens and developed as part of the @@ -13160,19 +12559,13 @@ Since 2012 S-nail is maintained by Steffen (Daode) Nurpmeso. This man page is derived from .Dq The Mail Reference Manual that was originally written by Kurt Shoens. -. -.\" }}} -. -. .Sh AUTHORS -. .An "Kurt Shoens" , .An "Edward Wang" , .An "Keith Bostic" , .An "Christos Zoulas" , .An "Gunnar Ritter" , .An "Steffen Nurpmeso" . -. .Pp The variables .Va contact-mail @@ -13180,13 +12573,8 @@ and .Va contact-web provide contact addresses: .Pp -.\" v15-compat: drop eval as `mail' will expand variable? .Dl ? echo $contact-web; eval mail $contact-mail -. -. -.\" .Sh CAVEATS {{{ .Sh CAVEATS -. \*(ID Interrupting an operation via .Dv \&\&SIGINT aka @@ -13200,7 +12588,6 @@ 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 .Va ignore ) . -. .Pp The SMTP and POP3 protocol support of \*(UA is very basic. Also, if it fails to contact its upstream SMTP server, it will not make @@ -13211,21 +12598,12 @@ and may be useful). If this is a concern, it might be better to set up a local SMTP server that is capable of message queuing. -. -.\" }}} -. -. .Sh BUGS -. 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. -. In threaded display a power user may encounter crashes very occasionally (this is may and very). -. The file .Pa TODO in the source repository lists future directions. -. -.\" s-ts-mode diff --git a/nail.rc b/nail.rc index 3ec2f207..79cc715a 100644 --- a/nail.rc +++ b/nail.rc @@ -11,9 +11,7 @@ #@ the escaped newline is not. #@ - The number sign # is the comment-command and causes the (joined) line #@ (content) to be ignored. -#--MKREL-START-- #@ S-nail v14.9.1 / 2017-07-31 -#--MKREL-END-- ## Variables -- 2.11.4.GIT