changeset 95:edac7e46a9f2

More text about switches.
author markus schnalke <meillo@marmaro.de>
date Sat, 16 Jun 2012 13:26:30 +0200
parents 13bdd6917156
children 12348d620245
files ch03.roff
diffstat 1 files changed, 426 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/ch03.roff	Sat Jun 16 09:26:57 2012 +0200
+++ b/ch03.roff	Sat Jun 16 13:26:30 2012 +0200
@@ -1076,8 +1076,17 @@
 The special-casing of `the' draft message became irrelevant after
 the rework of the draft system.
 (See Sec. XXX.)
+Equally,
+.Pn comp
+lost its
+.Sw -file
+switch.
+The draft folder facility, together with the
+.Sw -form
+switch, are sufficient.
 
-.U3 "Inplace
+
+.U3 "Inplace Editing
 .P
 .Pn anno
 had the switches
@@ -1103,98 +1112,455 @@
 .Pn burst
 also had
 .Sw -[no]inplace
-switches, but they had different meaning, as written in nmh's
-.Mp burst(1)
-man page:
-.sp
-.QP
-If -noinplace is given, each digest is preserved, no table
-of contents is produced, and the messages contained within
-the digest are placed at the end of the folder. Other messages
-are not tampered with in any way.
-.sp
-.P
+switches, but with different meaning.
 With
 .Sw -inplace ,
 the digest had been replaced by the table of contents (i.e. the
 introduction text) and the bursted messages were placed right
 after this message, renumbering all following messages.
-Also, any trailing text of the digest will be lost, though,
+Also, any trailing text of the digest was lost, though,
 in practice, it usually consists of an end-of-digest marker only.
+Nontheless, this behavior appeared less elegant than the
+.Sw -noinplace
+behavior, which already had been the default.
+Nmh's
+.Mp burst (1)
+man page reads:
+.sp \n(PDu
+.QP
+If -noinplace is given, each digest is preserved, no table
+of contents is produced, and the messages contained within
+the digest are placed at the end of the folder. Other messages
+are not tampered with in any way.
+.sp \n(PDu
+.LP
 The decision to drop the
 .Sw -inplace
-behavior was supported by the complexity and possible data loss
-it introduced.
+behavior was supported by the code complexity and the possible data loss
+it caused.
 .Sw -noinplace
-was the default behavior already and is the chosen behavior now.
+was chosen to be the definitive behavior.
+
+
+.U3 "Forms and Format Strings
+.P
+Historically, the tools that had
+.Sw -form
+switches to supply a form file had
+.Sw -format
+switches as well to supply the contents of a form file as a string
+on the command line directly.
+In consequence, the following two lines equaled:
+.VS
+scan -form scan.mailx
+scan -format "`cat .../scan.mailx`"
+VE
+The
+.Sw -format
+switches were dropped in favor for extending the
+.Sw -form
+switches.
+If their argument starts with an equal sign (`='),
+then the rest of the argument is taken as a format string,
+otherwise the arguments is treated as the name of a format file.
+Thus, now the following two lines equal:
+.VS
+scan -form scan.mailx
+scan -form "=`cat .../scan.mailx`"
+VE
+This rework removed the prefix collision between
+.Sw -form
+and
+.Sw -format .
+Now, typing
+.Sw -fo
+suffices to specify form or format string.
+.P
+The different meaning of
+.Sw -format
+for
+.Pn repl
+and
+.Pn forw
+was removed in mmh.
+.Pn forw
+was completely switched to MIME-type forwarding, thus removing the
+.Sw -[no]format .
+For
+.Pn repl ,
+the
+.Sw -[no]format
+switches were reworked to
+.Sw -[no]filter
+switches.
+The
+.Sw -format
+switches of
+.Pn send
+and
+.Pn post ,
+which had a third meaning,
+were removed likewise.
+Eventually, the ambiguity of the
+.Sw -format
+switches was resolved by not anymore having any such switch in mmh.
+
+
+.U3 "MIME Tools
+.P
+The MIME tools, which were once part of
+.Pn mhn ,
+had several switches that added little practical value to the programs.
+The
+.Sw -[no]realsize
+switches of
+.Pn mhbuild
+and
+.Pn mhlist
+were removed, doing real size calculations always now, as
+``This provides an accurate count at the expense of a small delay.''
+This small delay is not noticable on modern systems.
+.P
+The
+.Sw -[no]check
+switches were removed together with the support for
+.Hd Content-MD5
+header fields.
+.[
+rfc 1864
+.]
+(See Sec. XXX)
+.P
+The
+.Sw -[no]ebcdicsafe
+and
+.Sw -[no]rfc934mode
+switches of
+.Pn mhbuild
+were removed because they are considered obsolete.
+.P
+Content caching of external MIME parts, activated with the
+.Sw -rcache
+and
+.Sw -wcache
+switches was completely removed.
+External MIME parts are truly rare today, having a caching facility
+for them is appeares to be unnecessary.
+.P
+In pre-MIME times,
+.Pn mhl
+had covered many tasks that are part of MIME handling today.
+Therefore,
+.Pn mhl
+could be simplified to a large extend, reducing the number of its
+switches from 21 to 6.
+
+
+.U3 "Mail Transfer Switches
+.P
+With the removal of the mail transfer facilities, a lot of switches
+vanished automatically.
+.Pn inc
+lost 9 switches, namely
+.Sw -host ,
+.Sw -port ,
+.Sw -user ,
+.Sw -proxy ,
+.Sw -snoop ,
+.Sw -[no]pack ,
+as well as
+.Sw -sasl
+and
+.Sw -saslmech .
+.Pn send
+and
+.Pn post 
+lost 11 switches each, namely
+.Sw -server ,
+.Sw -port ,
+.Sw -client ,
+.Sw -user ,
+.Sw -mail ,
+.Sw -saml ,
+.Sw -send ,
+.Sw -soml ,
+.Sw -snoop ,
+as well as
+.Sw -sasl ,
+.Sw -saslmech ,
+and
+.Sw -tls .
+.Pn send
+had the switches only to pass them further to
+.Pn post ,
+because the user would invoke
+.Pn post
+not directly, but through
+.Pn send .
+All these switches, except
+.Sw -snoop
+were usually defined as default switches in the user's profile,
+but hardly given in interactive usage.
+.P
+Of course, those switches did not really ``vanish'', but the configuration
+they did was handed over to external MSAs and MRAs.
+Instead of setting up the mail transfer in mmh, it is set up in
+external tools.
+Yet, this simplifies mmh.
+Specialized external tools will likely have simple configuration files.
+Hence, instead of having one complicated central configuration file,
+the configuration of each domain is separate.
+Although the user needs to learn to configure each of the tools,
+each configuration is likely much simpler.
+
+
+.U3 "Maildrop Formats
+.P
+With the removal of MMDF maildrop format support,
+.Pn packf
+and
+.Pn rcvpack
+no longer needed their
+.Sw -mbox
+and
+.Sw -mmdf
+switches.
+.Sw -mbox
+is the sole  behavior now.
+In the same go,
+.Pn packf
+was reworked (see Sec. XXX) and its
+.Sw -file
+switch became unnecessary.
 
-.U3 "mbox and MMDF
+
+.U3 "Terminal Magic
+.P
+Mmh's tools will no longer clear the screen (\c
+.Pn scan 's
+and
+.Pn mhl 's
+.Sw -[no]clear
+switches).
+Neither will
+.Pn mhl
+ring the bell (\c
+.Sw -[no]bell )
+nor page the output itself (\c
+.Sw -length ).
+.P
+Generally, the pager to use is no longer specified with the
+.Sw -[no]moreproc
+command line switches for
+.Pn mhl
+and
+.Pn show /\c
+.Pn mhshow .
+.P
+.Pn prompter
+lost its
+.Sw -erase
+and
+.Sw -kill
+switches because today the terminal cares for the line editing keys.
+
+
+.U3 "Header Printing
+.P
+.Pn folder 's
+data output is self-explaining enough that
+displaying the header line makes few sense.
+Hence, the
+.Sw -[no]header
+switch was removed and headers are never printed.
+.P
+In
+.Pn mhlist ,
+the
+.Sw -[no]header
+switches were removed, too.
+But in this case headers are always printed,
+because the output is not self-explaining.
+.P
+.Pn scan
+also had
+.Sw -[no]header
+switches.
+Printing the header had been sensible until the introduction of
+format strings made it impossible to display the column headings.
+Only the folder name and the current date remained to be printed.
+As this information can be perfectly retrieved by
+.Pn folder
+and
+.Pn date ,
+consequently, the switches were removed.
+.P
+By removing all
+.Sw -header
+switches, the collision with
+.Sw -help
+on the first two letters was resolved.
+Currently,
+.Sw -h
+evaluates to
+.Sw -help
+for all tools of mmh.
+
+
+.U3 "Suppressing Edits or the WhatNow Shell
+.P
+The
+.Sw -noedit
+switches of
+.Pn comp ,
+.Pn repl ,
+.Pn forw ,
+.Pn dist ,
+and
+.Pn whatnow
+was removed, but it can now be replaced by specifying
+.Sw -editor
+with an empty argument.
+(Specifying
+.Cl "-editor true
+is nearly the same, only differing by the previous editor being set.)
 .P
-packf: file mbox mmdf
-rcvpack: mbox mmdf
+The more important change is the removal of the
+.Sw -nowhatnowproc
+switch.
+This switch had introduced an awkward behavior, as explained in nmh's
+man page for
+.Mp comp (1):
+.QP
+The \-editor editor switch indicates the editor  to  use  for
+the  initial  edit.  Upon exiting from the editor, comp will
+invoke the whatnow program.  See whatnow(1) for a discussion
+of available options.  The invocation of this program can be
+inhibited by using the \-nowhatnowproc switch.  (In truth  of
+fact,  it  is  the  whatnow program which starts the initial
+edit.  Hence, \-nowhatnowproc  will  prevent  any  edit  from
+occurring.)
+.P
+Effectively, the
+.Sw -nowhatnowproc
+switch stored a copy of the form file into the draft folder.
+As
+.Cl "-whatnowproc true
+causes the same behavior, the
+.Sw -nowhatnowproc
+switch was removed for being redundant.
+Likely, however, the intention for specifying
+.Sw -nowhatnowproc
+is sending a fully prepared form file at once.
+This can be done with
+.Cl "-whatnowproc send" .
+
+
+.U3 "Compatibility Switches
+.BU
+The hidden
+.Sw -[no]total
+switches of
+.Pn flist .
+They were simply the inverse of the visible
+.Sw -[no]fast
+switches:
+.Sw -total
+was
+.Sw -nofast
+and
+.Sw -nototal
+was
+.Sw -fast .
+I removed the
+.Sw -[no]total
+legacy.
+.BU
+The
+.Sw -subject
+switch of
+.Pn sortm
+existed for compatibility only.
+It can be fully replaced by
+.Cl "-textfield subject
+thus it was removed.
+
+
+.U3 "Various
+.BU
+In order to avoid prefix collisions amoung switch names, the
+.Sw -version
+switch was renamed to
+.Sw -Version
+(with capital `V').
+Every program has the
+.Sw -version
+switch but its first three letters collided with the
+.Sw -verbose
+switch, present in many programs.
+The rename solved this problem once for all.
+Although this rename breaks a basic interface, having the
+.Sw -V
+abbreviation to display the version information, isn't all too bad.
+.BU
+.Sw -[no]preserve
+of
+.Pn refile
+was removed because what use was it anyway?
+.QP
+Normally when a message is refiled, for each destination
+folder it is assigned the number which is one above the current
+highest message number in that folder. Use of the
+\-preserv [sic!] switch will override this message renaming, and try
+to preserve the number of the message. If a conflict for a
+particular folder occurs when using the \-preserve switch,
+then refile will use the next available message number which
+is above the message number you wish to preserve.
+.BU
+The removal of the
+.Sw -[no]reverse
+switches of
+.Pn scan
+is a bug fix, supported by the comments
+``\-[no]reverse under #ifdef BERK (I really HATE this)''
+by Rose and
+``Lists messages in reverse order with the `\-reverse' switch.
+This should be considered a bug.'' by Romine in the documentation.
+The question remaining is why neither Rose and Romine had fixed this
+bug in the Eighties when they wrote these comments nor has anyone
+thereafter.
 
 
 .ig
 
-ap: width
-dp: width
-burst: [no]quiet
-flist: [no]total
-folder: [no]header
+forw: [no]dashstuffing(mhl)
 
-comp: file
-dist: file(msh)
-forw: filter, [no]mime, [no]dashstuffing(mhl)
-repl: [no]format/filter width
+mhshow: [no]pause [no]serialonly
 
 mhmail: resent queued
 inc: snoop, (pop)
-mhbuild: [no]check, [no]ebcdicsafe, [no]headers, [no]list, [no]realsize
-	[no]rfc934mode, [no]contentid (caching)
-mhlist: [no]check [no]headers [no]realsize (caching)
-mhstore: [no]check [no]verbose (caching)
-
-scan: [no]clear [no]header [no]reverse
 
-mhl: [no]bell [no]clear [no]faceproc folder [no]moreproc length sleep
+mhl: [no]faceproc folder sleep
 	[no]dashstuffing(forw) digest list volume number issue number
-mhshow: [no]check [no]pause [no]serialonly (caching) [no]moreproc
-	length width
 
-prompter: erase kill [no]doteof
+prompter: [no]doteof
 
 refile: [no]preserve [no]unlink [no]rmmproc
 
-send: filter [no]format [no]forward [no]mime [no]msgid
+send: [no]forward [no]mime [no]msgid
 	[no]push split [no]unique (sasl) width snoop [no]dashstuffing
 	attach attachformat
 whatnow: (noedit) attach
 
 slocal: [no]suppressdups
 
-sortm: subject
-
-spost: [no]filter [no]format [no]remove [no]backup width [no]push idanno
+spost: [no]filter [no]backup width [no]push idanno
 	[no]check(whom) whom(whom)
 
 whom: ???
 
-
-(pop) host, port, user, [no]pack, proxy
-(smtp) mail saml send soml client server user port
-(sasl) sasl, saslmech
-(tls)
-(caching) rcache wcache
+..
 
-noedit
-nowhatnowproc
-
-
-format -> form
-
-version -> Version
-
-..
 
 .ig
 
@@ -1233,6 +1599,9 @@
 
 ..
 
+
+
+
 .H1 "Modernizing