bug #18630, #18631, #18632, #18634: various patches from Craig Leres
[mmh] / docs / DIFFERENCES
1 [NOTE: This file is out-of-date.  Updating it every time new features are added
2        to nmh forevermore is a pain.  Perhaps we should limit it to
3        documentation of _incompatibilities_ with MH (which should be rare).]
4
5 The following are the differences between nmh and MH-6.8.3.  UCI has
6 since released MH-6.8.4.  Most of the new features it adds have
7 also been added to nmh, but those differences are not listed here.
8 There are a few new features in MH-6.8.4 that are missing from nmh,
9 but they are primarily undocumented in MH-6.8.4 (and no one has
10 ever asked me for them).
11
12 GENERAL
13 -------
14 *) nmh has been converted to autoconf (configure) and should be
15    more portable and easier to install than MH.  In particular, nmh
16    will now compile on Linux.
17 *) All of MH's Makefiles have been rewritten for nmh.  You can now
18    use GNU make without any problems.  Also, if your make supports
19    the VPATH variable (such as GNU make), you can now compile in a
20    different directory from the one containing the source code.
21 *) The source code for nmh has been substantially cleaned up.
22    It now requires an ANSI C compiler (gcc is fine) to compile.
23 *) A new option `-version' has been added to all the commands.
24 *) The POP server (popd) has been removed from the distribution.
25    RPOP on the client side is not currently supported.
26 *) The support for MH-style bulletin boards has been removed
27    (NNTP makes this obsolete anyway).
28 *) Currently nmh doesn't support using shared libraries for libmh.
29    This may return in the future, but is not a high priority, since
30    the nmh commands are not that large, and disk space gets cheaper
31    every day.
32 *) Almost all of the commands in nmh have been modified to accept
33    an arbitrary number of command line arguments (most MH commands
34    will not accept more than 1000 arguments on the command line).
35 *) nmh should be more secure than MH.  Hundreds of buffer overflow
36    problems have been fixed in the source code.  Of course, I still
37    don't make any guarantees.
38
39 DOCUMENTATION
40 -------------
41 *) Many of the man pages have been cleaned up or clarified.
42 *) The mhook man page has been split into separate man pages for
43    rcvtty, rcvdist, and rcvpack.
44 *) Added new man page `mh-draft' which discusses the nmh draft
45    folder facility.
46 *) The various `procs' (rmmproc, moreproc, showmimeproc, etc...)
47    are now documented in the "mh-profile" man page.  Many of these
48    were previously undocumented.
49
50 FORMATTING
51 ----------
52 *) Added a new formatting string escape %(decode) to decode and
53    display RFC-2047 encoded header fields.
54
55 SEQUENCES
56 ---------
57 *) The is no longer a limitation on the length of lines in the file
58    containing your public sequences (.mh_sequences).  That should be
59    the end of the error message ".mh_sequences is poorly formatted".
60
61 ANNO
62 ----
63 *) The switch -inplace is now on by default.
64
65 CONFLICT
66 --------
67 *) Conflict now works on systems that define more
68    than 100 groups.
69
70 DIST
71 ----
72 *) The switch -inplace is now on by default.
73
74 FLIST
75 -----
76 *) A new command `flist' has been added to nmh, that will list the
77    folders that contain messages in a given sequence (such as the
78    unseen sequence).  This was a much needed command in the MH suite
79    of programs.
80
81 FOLDER
82 ------
83 *) `folder -all' now dynamically allocates space for folder names and can
84    handle more than 300 folders.
85 *) `folder' now uses the standard Unix trick of looking at the number of
86    links to a directory entry, in order to avoid doing a stat(2) call
87    on messages in folders with no subfolders.  This greatly increases
88    the speed of `folder -all -recurse' on large mail setups.
89 *) The switches `-header' and `-total' are more orthogonal.  The command
90    `folder -all -noheader -nototal' now does the right thing.
91
92 FORW
93 ----
94 *) The switch -inplace is now on by default.
95 *) Added switches `-dashstuffing' and `-nodashstuffing', to determine
96    whether forwarded messages are RFC934 quotes (dashstuffed).
97    (This corresponds to the undocumented switch "nodashmunging"
98    in MH).
99
100 INC
101 ---
102 *) If compiled with RPATHS, a Delivery-Date header is now added to all
103    messages incorporated with `inc'.
104 *) Using the new format string escape %(decode), the scan lines for `inc'
105    will correctly decode RFC-2047 encoded headers.
106
107 MARK
108 ----
109 *) If neither of the switches -public/-nopublic are specified, then
110    existing sequences will retain their current public/private status,
111    instead of being changed to public.
112 *) The command "mark -list -sequence foo" will now indicate if the
113    sequence "foo" is a private sequence.
114
115 MHBUILD
116 -------
117 *) The functionality in `mhn' to create MIME messages, has been cleaned
118    up substantially, and moved to separate command `mhbuild'.
119 *) If given a file argument of "-", mhbuild will now accept the MIME
120    composition file on the standard input, and output the new MIME
121    message to the standard output.  This makes it much easier to use
122    this functionality in shell scripts.
123 *) The switch -norfc934mode is now the default.
124
125 MHL
126 ---
127 *) There is a new variable "decode" which instructs `mhl' to decode
128    a component as a RFC-2047 encoded header field.
129
130 MHLIST
131 ------
132 *) The functionality of `mhn -list' has been moved to the new
133    command `mhlist'.
134
135 MHN
136 ---
137 *) mhn is now obsolete.  It has been split into the commands mhbuild,
138    mhlist, mhshow, mhstore, and viamail.  mhn still exists for
139    backward compatibility, but the new commands should be preferred.
140 *) Changed the profile entry automhnproc to automimeproc
141    (which has slightly different semantics).
142
143 MHPATH
144 ------
145 *) `mhpath all' will no longer abort if the folder has more than
146    998 messages.
147
148 MHSHOW
149 ------
150 *) The functionality of `mhn -show' has been moved to the new
151    command `mhshow'.
152 *) mhshow now correctly treats unknown subtypes of text as
153    text/plain, as specified by RFC-2046.
154 *) mhshow now correctly treats unknown subtypes of multipart as
155    multipart/mixed, as specified by RFC-2046.
156 *) You can now override the default method by which mhshow handles
157    subtypes of multipart that are known internally (mixed, alternate,
158    etc...).  Previously the behavior on these types could not be
159    changed.
160
161 MHSTORE
162 -------
163 *) The functionality of `mhn -store' has been moved to the new
164    command `mhstore'.
165 *) mhstore will now correctly identify a formatting string of "-"
166    and send the content to stdout.
167
168 PACKF
169 -----
170 *) When packing a folder, the default format is now `mbox' format, rather
171    than `mmdf' format.  The options -mbox and -mmdf have been added to
172    `packf' so you can choose the desired format.
173
174 PACKMBOX
175 --------
176 *) The script packmbox has been removed from the nmh distribution, since
177    its functionality has been added to the command packf.
178
179 PICK
180 ----
181 *) If neither of the switches -public/-nopublic are specified, then
182    existing sequences will retain their current public/private status,
183    instead of being changed to public.
184
185 RCVPACK
186 -------
187 *) The default format for `rcvpack' is now `mbox' format, rather than
188    `mmdf' format.  The options -mbox and -mmdf have been added to
189    `rcvpack' so you can choose the desired format.
190 *) Rcvpack no longer adds the field "Delivery-Date", as that is added
191    by `slocal'.
192
193 RCVSTORE
194 --------
195 *) Added new switches -unseen/-nounseen to control whether new messages
196    are added to the Unseen-Sequence.
197
198 RCVTTY
199 ------
200 *) The option `-width' has been added.
201
202 REFILE
203 ------
204 *) If an conflict occurs when using the `-preserve' switch,
205    then refile will search for and use the next available
206    message number above the one you wish to preserve, rather
207    than aborting with an error.
208 *) Added new options `-unlink' and `-nounlink' which specify
209    that that messages "removed" from the source folder should
210    just be unlinked, rather than moved to name with prefix.
211
212 REPL
213 ----
214 *) Added new options `-format' and `-noformat'.  The switch `-format'
215    will filter the message to which you are replying with a standard
216    message filter "mhl.reply" which is included in the distribution.
217    The switch `-noformat' will negate `-format' and `-filter', so that
218    the message to which you are replying is not included in the draft.
219 *) Added new options `-group' and `-nogroup'.  These switches direct
220    repl as to whether or not this is a group reply.  A group reply uses
221    a different forms (components) file (default is replgroupcomps).
222 *) The standard forms files "replcomps" and "replgroupcomps" now have
223    support for the "Mail-Reply-To:" and "Mail-Followup-To:" header fields.
224 *) The switch -inplace is now on by default.
225
226 RMM
227 ---
228 *) Added new options `-unlink' and `-nounlink' which specify
229    that that "removed" messages should just be unlinked, rather
230    than moved to name with prefix.
231
232 SCAN
233 ----
234 *) Using the new format string escape %(decode), the scan lines created
235    by `scan' will correctly decode RFC-2047 encoded headers.
236
237 SHOW/NEXT/PREV
238 --------------
239 *) Added new options `-checkmime' and `-nocheckmime' which allow you
240    to enable and disable the test for MIME messages.
241 *) The "mhnproc" profile entry has been changed to "showmimeproc".
242 *) Added `-showmimeproc' switch to specify the showmimeproc at the
243    command line.
244 *) The default "showproc" has been changed to `mhl'.
245 *) The default "showmimeproc" is now `mhshow'.
246 *) `show' is better at handling alternate character sets.  It knows that
247    US-ASCII is a subset of any ISO-8859-X character set.
248
249 SLOCAL
250 ------
251 *) Added new action `folder' or `+' to slocal, which adds new message
252    to a nmh folder.  Currently, this is handled by piping the new
253    message to rcvstore, although this may change in the future.
254 *) The action `mbox' now delivers to a file in mbox format.  Previously
255    it delivered to a file in mmdf format.
256 *) Added new action `mmdf' to deliver to a file in mmdf format.
257 *) Added new options -[no]suppressdup to slocal to check for duplicate
258    messages.  The code for suppression of duplicate messages (MH config
259    was MSGID) is now always built into slocal.
260 *) Improved the debugging of slocal ".maildelivery" files.  It will now
261    warn when an entry in this file is skipped because there are not
262    enough fields.  Also the debugging output of slocal has been cleaned up,
263    so that it is much easier to read.
264 *) Slocal now adds the Delivery-Date header to all delivered messages.
265    Previously it only added them to messages delivered to a file.
266
267 VIAMAIL
268 -------
269 *) The functionality of this new command, was formerly part of
270    `mhn' as the (undocumented) option `mhn -viamail'.
271
272 WHATNOW
273 -------
274 *) Added new action "mime" to whatnow, which causes whatnow to call
275    program specified by "buildmimeproc" profile entry, to process
276    MIME composition files (default is mhbuild).
277 *) Added new action "delete" to whatnow, which deletes draft file
278    and exits.