23 years agoAPOP support: Making APOP a ./configure option with --enable-apop,
Shantonu Sen [Mon, 17 Apr 2000 05:07:03 +0000 (05:07 +0000)]
APOP support: Making APOP a ./configure option with --enable-apop,
   and giving more information about the types of POP support
   in the configuration summary.

23 years agoAdding APOP #defines
Shantonu Sen [Mon, 17 Apr 2000 05:04:05 +0000 (05:04 +0000)]
Adding APOP #defines

23 years agoChanged some string terminations from NULL to \0.
Shantonu Sen [Sun, 16 Apr 2000 13:28:12 +0000 (13:28 +0000)]
Changed some string terminations from NULL to \0.

23 years agoMoved most of the documentation into a new "docs" subdirectory. Added a MAILING-LISTS...
Doug Morris [Sat, 15 Apr 2000 04:28:27 +0000 (04:28 +0000)]
Moved most of the documentation into a new "docs" subdirectory. Added a MAILING-LISTS file talking about the lists and archives, and updated the FAQ to refer to it.

23 years agoAdded a "releasing nmh" section to README.developers, while the process was
Dan Harkless [Sat, 15 Apr 2000 02:00:43 +0000 (02:00 +0000)]
Added a "releasing nmh" section to README.developers, while the process was
fresh in my mind.

23 years agoOkay, got that tag stuff straightened out. Now upping the version to 1.0.4+dev.
Dan Harkless [Fri, 14 Apr 2000 21:38:37 +0000 (21:38 +0000)]
Okay, got that tag stuff straightened out.  Now upping the version to 1.0.4+dev.

23 years agoOops. Had a duplicate entry.
Dan Harkless [Fri, 14 Apr 2000 21:26:56 +0000 (21:26 +0000)]
Oops.  Had a duplicate entry.

23 years agoOops. Didn't do a `cvs rtag` before changing the version to 1.0.4+dev. Putting
Dan Harkless [Fri, 14 Apr 2000 21:05:34 +0000 (21:05 +0000)]
Oops.  Didn't do a `cvs rtag` before changing the version to 1.0.4+dev.  Putting
it back.

23 years agoUpped the version number to 1.0.4+dev.
Dan Harkless [Fri, 14 Apr 2000 20:47:32 +0000 (20:47 +0000)]
Upped the version number to 1.0.4+dev.

23 years ago* Added new files README.developers, ChangeLog_MH-3_to_MH-6.6, and
Dan Harkless [Fri, 14 Apr 2000 20:40:31 +0000 (20:40 +0000)]
* Added new files README.developers, ChangeLog_MH-3_to_MH-6.6, and
ChangeLog_MH-6.7.0_to_MH-6.8.4.html to DIST target in

* Released nmh-1.0.4.

23 years agoJust reworded the bit about '%s' being safe not to quote (it's only safe not to
Dan Harkless [Wed, 12 Apr 2000 00:54:54 +0000 (00:54 +0000)]
Just reworded the bit about '%s' being safe not to quote (it's only safe not to
quote on the -charset- line).

23 years agoApplied Brian Campbell <>'s patch:
Dan Harkless [Wed, 12 Apr 2000 00:25:23 +0000 (00:25 +0000)]
Applied Brian Campbell <>'s patch:

    It appears that there shouldn't be quotes around the %s in the iso-8859-1
    charset entry; xterm passes the remaining arguments to the program, quoting
    them means that xterm thinks they're part of the program's name.

%s doesn't come from MIME headers, so not quoting it is safe.

23 years agobug fix - prevents core-dumping on scan -format '1'
Doug Morris [Sun, 9 Apr 2000 07:04:24 +0000 (07:04 +0000)]
bug fix - prevents core-dumping on scan -format '1'

23 years agoRichard Coleman threw out a lot of old MH-specific files in nmh. Much of the
Dan Harkless [Fri, 7 Apr 2000 00:42:55 +0000 (00:42 +0000)]
Richard Coleman threw out a lot of old MH-specific files in nmh.  Much of the
stuff, indeed, is not worth saving, but there are nuggets that are very
worthwhile, and should probably be added back in.  Most important, IMHO, are the
MH change logs, as they can help answer questions like "Why is this code like
this?" or "How long has this been broken?" or "What was this ever used for?"

I've added a new file to the nmh tree called ChangeLog_MH-3_to_MH-6.6.  It's
cobbled together from the mh-6.8.4/papers/mh*/MHCHANGES files.  I've re-ordered
the entries to go from newest at the top to oldest at the bottom to match the
ChangeLog convention.  Unfortunately there are no change logs for versions of MH
prior to 3 in the MH tar files available at <>.
Also, it appears to me that there are MH-6.6 changes that aren't documented in
the logs.

I've also added ChangeLog_MH-6.7.0_to_MH-6.8.4.html.  This is based on
mh-6.8.4/papers/changes/  The nroff format and its "catman"-type
output are a pain to deal with, but I was loath to throw away the formatting, so
I converted the file to HTML.  The only actual markup in the body are the "<B>"
and "<U>" tags, and "&lt;" and "&gt;" instead of '<' and '>', so it's quite
doable to view the file in plain ASCII mode as well.  Note that some of the
changes this file documents as having been made in MH-6.8.4 may not be present
in nmh -- Richard started with 6.8.3 and later put in certain 6.8.4 stuff.

23 years agoWhoah, this should have been changed a long time ago. For one thing, Richard
Dan Harkless [Thu, 6 Apr 2000 19:56:35 +0000 (19:56 +0000)]
Whoah, this should have been changed a long time ago.  For one thing, Richard
forgot to update the copyright date when he made modifications in 1999, but more
significantly, this COPYRIGHT notice hasn't been changed since Richard ceded
control of nmh development and it became an open-source project.

Changed the COPYRIGHT notice to a BSD License, with a couple of minor wording
tweaks.  Copyright is assigned to "the authors of nmh", which is anyone who
writes code, whether they have CVS accounts or not.

23 years ago* Add some way to configure whether you prefer to see text/plain or text/html
Dan Harkless [Thu, 6 Apr 2000 00:22:06 +0000 (00:22 +0000)]
* Add some way to configure whether you prefer to see text/plain or text/html
  parts of multipart/alternative messages.

23 years agoApplied Eric Schnoebelen <>'s mhshowsbr.c patch fixing apparent
Dan Harkless [Thu, 6 Apr 2000 00:11:50 +0000 (00:11 +0000)]
Applied Eric Schnoebelen <>'s mhshowsbr.c patch fixing apparent
bugs in Dan Winship's new security quoting code:

    Since upgrading, I've been getting the following errors while attempting to
    process some MIME messages:

        (1) Syntax error: Unterminated quoted string
            exit 2


        (2) line 1/10 (END)Segmentation fault (core dumped)

    (2) appears to be due to the testing of an unset pointer in
    mhshowsbr.c:show_multi_aux().  (1) appears to be caused by mis-quoting a
    filename being handed to the shell in mhshowsbr.c:show_content_aux().

    Resolving the pointer reference issue in mhshowsbr.c:show_multi_aux() turned
    up a similar mis-quoting problem in the routine.

23 years agoTerran Melconian pointed out that my theory as to why -help was printed as
Dan Harkless [Fri, 31 Mar 2000 04:25:26 +0000 (04:25 +0000)]
Terran Melconian pointed out that my theory as to why -help was printed as
"-(help)" in the -help output was probably not the most likely scenario.  Added
his.  ;^>

23 years agoadded Todd Miller's packf patch
Doug Morris [Tue, 28 Mar 2000 14:42:36 +0000 (14:42 +0000)]
added Todd Miller's packf patch

23 years agoWhen I applied Wesley Craig's original KPOP patch, I made a change directly to
Dan Harkless [Fri, 17 Mar 2000 20:19:43 +0000 (20:19 +0000)]
When I applied Wesley Craig's original KPOP patch, I made a change directly to  That's a no-no since that file is automatically generated.  Now
that I've applied Wesley's second patch that makes things work as I had
originally documented, I'm re-making the change here, but this time by properly
modifying acconfig.h and then generating from that.

23 years did not document his previous KPOP patch, so I did so,
Dan Harkless [Fri, 17 Mar 2000 20:11:03 +0000 (20:11 +0000)] did not document his previous KPOP patch, so I did so,
and asked him to check what I wrote.  Unfortunately he didn't notice my
misunderstanding of his patch.  I wrote that if you #define POPSERVICE "kpop",
inc and msgchk will use KPOP exclusively, but if you leave it as "pop3", you can
use Wesley's new -kpop switch on a given invocation.  Instead, however, -kpop
turned out to be necessary on every invocation, and a KPOP user complained.
Applied Wesley's new patch, which makes things work like I thought his original
patch did.  After that, did one more clarifying pass to the documentation in and

23 years agoAdded a new README.developers file. From the file:
Dan Harkless [Thu, 16 Mar 2000 02:40:42 +0000 (02:40 +0000)]
Added a new README.developers file.  From the file:

    This file is intended to provide a few tips for anyone doing development on
    nmh.  Developers who learn things "the hard way" about the nmh codebase (as
    opposed to local info best encoded in a comment) are encouraged to share
    their wisdom here.

Currently the topics are "autoconf files" and "directory structure".

23 years agoWhen I added my --enable-masquerade option, you'll note that I didn't make it
Dan Harkless [Wed, 15 Mar 2000 23:37:30 +0000 (23:37 +0000)]
When I added my --enable-masquerade option, you'll note that I didn't make it
--enable-nmh-masquerade.  I find the --enable-nmh-* options too wordy and I'm
not sure why Richard went that route.  I've renamed them to just --enable-*, but
the old versions will still work as well (they just aren't advertised).

Added a line to the "nmh configuration" output saying whether POP is enabled.

23 years agoWhen I fixed the long-standing makedir() bugs in January, I had the code call
Dan Harkless [Wed, 15 Mar 2000 22:25:16 +0000 (22:25 +0000)]
When I fixed the long-standing makedir() bugs in January, I had the code call
strtoul(..., 0), which I believed to be safe as all modes specified as ASCII
constants in the nmh code started with a leading zero (signifying octal), which
I did as it would work if internal constants were ever changed to hex.
Unfortunately I was unaware of the "Folder-Protect:" .mh_profile entry, which documents as an octal-only constant, with no leading zero
required.  I've changed the strtoul() call to an atooi() call and removed the
misleading leading zeroes on the ASCII octal constants in the code and man
pages.  Also changed the "Folder-Protect:" example in the man page to something
more interesting than a duplication of the default.

23 years agoAdded:
Dan Harkless [Tue, 14 Mar 2000 21:21:28 +0000 (21:21 +0000)]
I put Simon's patch under the control of a new #define called
FIX_NON_Y2K_COMPLIANT_MUA_DATES.  There's some commentary in
acconfig.h about when you might not want to #define it.

23 years agoAdded missing dependency in zotnet/tws/ for dtimep.c: dtimep.c-lexed.
Dan Harkless [Tue, 14 Mar 2000 21:15:55 +0000 (21:15 +0000)]
Added missing dependency in zotnet/tws/ for dtimep.c: dtimep.c-lexed.

23 years agoCreated new dtimep.c-lexed with Simon's change using dtimep.lex lexed on
Dan Harkless [Tue, 14 Mar 2000 21:07:56 +0000 (21:07 +0000)]
Created new dtimep.c-lexed with Simon's change using dtimep.lex lexed on
Solaris 2.6.

Removed my comment about strdup().  The Solaris 2.6 failure was due to
failing to do a make distclean after configuring for Ultrix 4.2A.  I'll
leave the change, though, since it's still a good one (just not worth
reporting in the ChangeLog).

23 years agoChanged strdup() in strdup.c to take a _const_ char*. Don't know why this
Dan Harkless [Tue, 14 Mar 2000 20:50:19 +0000 (20:50 +0000)]
Changed strdup() in strdup.c to take a _const_ char*.  Don't know why this
didn't hit anyone before, but I wasn't able to compile on Solaris 2.6 without
doing this, due to a "previous declaration" error.

23 years agoApplied Simon Burge <>'s dtimep.lex patch:
Dan Harkless [Tue, 14 Mar 2000 20:40:47 +0000 (20:40 +0000)]
Applied Simon Burge <>'s dtimep.lex patch:

  It seems that some MUA's didn't handle y2k very well - ELM seems to be one of
  them, and Ultrix's DXmail (based on MH!).  I've got a few emails this month
  that look like:

          575   Jan 00  Xxxxxx Xxxx       3603  ...
           22+  Jan 00  Xxx Xxxxx         1771  ...

  The first has "15 Jan 100" as the date and the second has "19 Jan 00" as the
  date.  The following works around this so that scan, show, sortm, etc work ok.

Added scan.MMDDYY and scan.YYYYMMDD format files.

23 years ago* Applied, after some finessing,
Dan Harkless [Tue, 14 Mar 2000 09:20:27 +0000 (09:20 +0000)]
* Applied, after some finessing,
Simon Burge <>'s --with-smtpservers patch:

    Here's a patch that allows you to add


    to the ./configure command line to set the "servers: " line in etc/mts.conf.
    Around here, we use "mailhost" so that all machines in the current domain
    just talk to a central machine and nothing else runs an MTA.  Now, I can use


    instead of having to remember to fix this by hand (and often forgetting to
    do so!).

* Inspired by Simon's patch, added an --enable-masquerade option
to configure.  It will set the "masquerade:" line of mts.conf.  You may specify
a subset of the three types of masquerading, like
--enable-masquerade="draft_from mmailid", or leave off explicit arguments to
enable all three types.

* Alphabetized the --enable and --with options in and INSTALL and
added documentation of the two new options to the latter.

* Added new dependency for mts.conf: Makefile.  If this isn't
done, then when you reconfigure nmh with new values for --enable-masquerade or
--with-smtpservers, you'll fail to get an updated copy of mts.conf.

23 years agoApplied Simon Burge <>'s dtime.c patch:
Dan Harkless [Tue, 14 Mar 2000 05:24:57 +0000 (05:24 +0000)]
Applied Simon Burge <>'s dtime.c patch:

  There's a wrap-around problem that affects the implementation of Zeller's
  congruence in dtime.c.  This causes the day-of-week calculations to fail for
  dates after Feb 29, 2000 (probably up until some year far in the future).

23 years agoModified username_extension masquerading to only use the extended address on
Dan Harkless [Tue, 14 Mar 2000 05:05:49 +0000 (05:05 +0000)]
Modified username_extension masquerading to only use the extended address on
generated [Resent-]From: lines and SMTP envelope From:.  With Neil's original
implementation, nmh's global idea of the username was changed, which would
result in inc lying and saying you had no new mail because it was looking for a
mailbox called, for instance, "dan-nmh" (where username was "dan" and

While in there (adrsprintf()), added checking of snprintf()'s return code and
added calls to adios() when things are not kosher.  Also simplfied the really
confusing REALLYDUMB #ifdef'ing, which didn't even jibe with the comment
explaining REALLYDUMB in acconfig.h.  Now adrsprintf() will always return just
the username, even if an explicit domain is passed in (which currently doesn't
happen anywhere in nmh).

23 years agoJust removed the odd space between the "!" and the "/bin/sh". I believe some
Dan Harkless [Tue, 14 Mar 2000 02:39:13 +0000 (02:39 +0000)]
Just removed the odd space between the "!" and the "/bin/sh".  I believe some
OSes might choke on that, and certainly no OS requires it.

23 years agoApplied Sullivan N. Beck <>'s mhshow-suffix patch:
Dan Harkless [Tue, 14 Mar 2000 02:29:26 +0000 (02:29 +0000)]
Applied Sullivan N. Beck <>'s mhshow-suffix patch:

    With the patch below, you can add lines like:

        mhshow-suffix-application/msword: .doc
        mhshow-suffix-application/PostScript: .ps

    to the mhn.defaults file to append the given suffix to a scratch file.  This
    allows applications which require a certain suffix to run properly.

Removed -force_html from lynx entry in (I believe older versions
of lynx lack that option) and added "mhshow-suffix-text/html: .html".

23 years agoApplied Neil W Rickert <>'s msh.c patch:
Dan Harkless [Mon, 6 Mar 2000 20:19:04 +0000 (20:19 +0000)]
Applied Neil W Rickert <>'s msh.c patch:

    I finally tracked down the problem in msh that was causing errors
    whenever I tried to examine a 'mmdf' style mailbox.

    It turns out that not enough memory was being allocated with
    calloc(), causing memory pointers to be overwritten and corrupted.

23 years agoChanged the new "plussed_user" option to mts.conf's "masquerade:" to
Dan Harkless [Sat, 4 Mar 2000 00:02:46 +0000 (00:02 +0000)]
Changed the new "plussed_user" option to mts.conf's "masquerade:" to
"username_extension" after getting feedback from qmail users, who use '-' as a
separator rather than '+'.  Removed checking of $USERPLUS variable.  Now check
$USERNAME_EXTENSION, which needs to include the appropriate separator for your
MTA ('-', '+', or whatever) as its first character.

23 years agoOops. I was using an older email address for Neil -- now he uses the $USERPLUS
Dan Harkless [Fri, 3 Mar 2000 07:30:31 +0000 (07:30 +0000)]
Oops.  I was using an older email address for Neil -- now he uses the $USERPLUS
feature that I'm crediting him for.  ;^>

23 years agoAdded a new "boolean" type to mh.h and TRUE and FALSE constants.
Dan Harkless [Fri, 3 Mar 2000 07:24:41 +0000 (07:24 +0000)]
Added a new "boolean" type to mh.h and TRUE and FALSE constants.

Added a note to DIFFERENCES stating that it's out-of-date (Richard was the last
one to update it) and that we should consider only documenting incompatibilities
with MH there.

Implemented (and documented) a third kind of username masquerading: "plussed
user" masquerading.  This one was suggested by Neil Rickert
<>.  It's based on sendmail's "plussed user" feature, where
mail sent to <user>+<string> will be delivered to <user>.  When it's enabled,
it's controlled by the $USERPLUS environment variable.  How is it enabled?
Well, that leads me to:

Renamed the "mmailid:" setting in mts.conf to "masquerade:", and changed it so
that rather than being a boolean, it can be set to any combination of the three
values "draft_from", "mmailid", and "plussed_user".  Thus it is now possible to
enable the three types of masquerading individually.

Fixed a bug with "mmailid" masquerading (dating back to MH?)  where if it was
turned on, ','s would no longer be considered GECOS field delimiters.

23 years agoOops. You can't just change comments in, or configure won't be
Dan Harkless [Thu, 2 Mar 2000 08:20:00 +0000 (08:20 +0000)]
Oops.  You can't just change comments in, or configure won't be
modified (it doesn't contain the comments) and you won't be able to commit it,
and then the timestamps'll be messed up for everyone and unnecessary autoconf
calls will occur.  Added some unnecessary (but frequently used in the file)
trailing 'dnl's on some AC_SUBST()s.

23 years agoOops. My last group commit comment failed to mention what I was doing in this
Dan Harkless [Thu, 2 Mar 2000 07:56:00 +0000 (07:56 +0000)]
Oops.  My last group commit comment failed to mention what I was doing in this
file.  I was adding:

* Change all man pages to group all the commandline options together in one
  section with each as a separate mini-heading.  Having to dig through prose to
  find what a particular option does is a pain in the nads.

This time, moved it out of the [POSSIBILITIES] section and put it in the [TODO]
section, as I feel it's very important (and wouldn't be that difficult to do --
somewhat time-consuming, yes, but not difficult).

23 years agoChanged the GECOS-field '&' translation behavior to be controlled by the BSD42
Dan Harkless [Thu, 2 Mar 2000 07:52:47 +0000 (07:52 +0000)]
Changed the GECOS-field '&' translation behavior to be controlled by the BSD42
#define rather than GCOS_HACK, since it's apparently always appropriate on OSes
where BSD42 is #defined, and never appropriate on any other OSes.  Thanks to
Kimmo Suominen for responding to my "What is this code here for?" comment in
mts.c and explaining the feature.

Also added ULTRIX 4.2A to the list of OSes that have an initgroups() function
but no prototype in the system headers.

23 years agoMade a goofy change so that I could produce a new configure because when I
Dan Harkless [Tue, 29 Feb 2000 06:17:58 +0000 (06:17 +0000)]
Made a goofy change so that I could produce a new configure because when I
checked in the last version I did it with "cvs commit ... configure
..." and that apparently gives a newer timestamp than configure,
which results in spurious autoconf runs when people download the source.  We
need to write a little note to developers somewhere saying what in order you
need to check in those autoconf files and how long you need to wait in between
each one and such...

23 years agoChanged "echo >" in to "date >" so that
Dan Harkless [Tue, 29 Feb 2000 05:59:16 +0000 (05:59 +0000)]
Changed "echo >" in to "date >" so that will be different each time and related files are
changed, making it easier to check it in (which is necessary to prevent
unnecessary autoconf calls).

My declaration of initgroups() in slocal.c to eliminate the "no prototype"
warning wasn't portable (FreeBSD 3.[23] choked).  Now use AC_EGREP_HEADER to see
where initgroups() is declared, if anywhere.

23 years agoUpped the version number to 1.0.3+dev (ideally this should be done by whoever
Dan Harkless [Tue, 29 Feb 2000 05:16:35 +0000 (05:16 +0000)]
Upped the version number to 1.0.3+dev (ideally this should be done by whoever
makes a release tar file, immediately after doing so).

Applied Paul Fox <>'s scansbr.c patch, posted to, which he says prevents loss of mail when inc'ing into a full

23 years ago * Fix security hole in mhshowsbr.c which allowed untrusted shell
Ruud de Rooij [Mon, 28 Feb 2000 17:09:02 +0000 (17:09 +0000)]
* Fix security hole in mhshowsbr.c which allowed untrusted shell
  code to be executed.
* Released nmh 1.0.3.

23 years agoOops. %-escapes on mhstore lines in should not be surrounded by
Dan Harkless [Thu, 10 Feb 2000 18:50:23 +0000 (18:50 +0000)]
Oops.  %-escapes on mhstore lines in should not be surrounded by
single quotes, as a shell is not spawned when just saving files, and the
filenames will end up with literal quotes embedded in them.

23 years agoRemoved an item that Richard did without removing its TODO, and removed an item
Dan Harkless [Fri, 4 Feb 2000 20:36:43 +0000 (20:36 +0000)]
Removed an item that Richard did without removing its TODO, and removed an item
that was duplicated in two different priority sections.

23 years agoWhoever originally added the -help switch to all the commands got too cute and
Dan Harkless [Fri, 4 Feb 2000 20:34:07 +0000 (20:34 +0000)]
Whoever originally added the -help switch to all the commands got too cute and
had the option itself print out as "-(help)" in the -help output.  I guess the
idea was to make reference to the fact that clearly you know about the -help
option since you're currently looking at its output.  I think it's a bad idea to
overload the meaning of the parentheses, however -- they're supposed to indicate
what abbreviated prefix of the switch you're allowed to specify.  It doesn't
make sense to show that you're allowed to "abbreviate" the switch to its entire

23 years agoWhoever originally added the -help switch to all the commands got too cute and
Dan Harkless [Fri, 4 Feb 2000 20:28:23 +0000 (20:28 +0000)]
Whoever originally added the -help switch to all the commands got too cute and
had the option itself print out as "-(help)" in the -help output.  I guess the
idea was to make reference to the fact that clearly you know about the -help
option since you're currently looking at its output.  I think it's a bad idea to
overload the meaning of the parentheses, however -- they're supposed to indicate
what abbreviated prefix of the switch you're allowed to specify.  It doesn't
make sense to show that you're allowed to "abbreviate" the switch to its entire

23 years agoModified INSTALL and to reflect the new -kpop feature.
Dan Harkless [Fri, 4 Feb 2000 01:46:29 +0000 (01:46 +0000)]
Modified INSTALL and to reflect the new -kpop feature.

23 years ago* Applied's KPOP patches. According to him:
Dan Harkless [Fri, 4 Feb 2000 01:32:12 +0000 (01:32 +0000)]
* Applied's KPOP patches.  According to him:

      The following patch fixes a problem with requesting a service key for a
      machine that has multiple 'A' records.  It also makes "-kpop" a command
      line option, for users who would like to use both "kpop" and "pop".

  Did no testing of the new features, as I don't have access to a KPOP server.

  One tweak I made to the patch he sent to nmh-workers was to move the
  declaration of his new hp2 variable into the #ifdef KPOP section so you don't
  get an "unused variable" warning when compiling without KPOP.

* Modified and to document Wesley's new -kpop.

23 years agoAdded check for lynx to write mhshow-show-text/html line in
Dan Harkless [Sat, 29 Jan 2000 01:34:20 +0000 (01:34 +0000)]
Added check for lynx to write mhshow-show-text/html line in

23 years agoMade a couple of minor whitespace changes to test if the latest beta version of
Dan Harkless [Fri, 28 Jan 2000 23:29:06 +0000 (23:29 +0000)]
Made a couple of minor whitespace changes to test if the latest beta version of
CVS fixes this bug:

    dilvish-dan> cvs commit ../ChangeLog's password:
    Warning: Remote host denied X11 forwarding, perhaps xauth program could not be run on the server side.
    cvs: lock.c:179: lock_name: Assertion `*short_repos++ == '/'' failed.
    Terminated with fatal signal 6
    cvs commit: saving log message in /tmp/cvslIx_yb

23 years agoAll %-escapes in mhn.defaults that actually expand to something should be
Dan Harkless [Fri, 28 Jan 2000 22:00:33 +0000 (22:00 +0000)]
All %-escapes in mhn.defaults that actually expand to something should be
surrounded by single quotes.  Added quotes to the ones in that
were missing them.

23 years agomakedir() had multiple bugs dating back to MH. It passed an octal constant to
Dan Harkless [Thu, 27 Jan 2000 20:20:01 +0000 (20:20 +0000)]
makedir() had multiple bugs dating back to MH.  It passed an octal constant to
atoi(), which interpreted it as decimal, resulting in directories with no user
read or execute permissions, making nested directory creation fail.  Also, when
creating a nested directory, correct permissions were only set on the inner one.

A second `make install' would always fail because the check for whether
mh_profile.5 existed was written incorrectly.

23 years agoDoug's check for whether mh_profile.5 exists was bad -- it looked in the local
Dan Harkless [Thu, 27 Jan 2000 20:14:58 +0000 (20:14 +0000)]
Doug's check for whether mh_profile.5 exists was bad -- it looked in the local
directory rather than the installation directory, so the check would always
return false and re-installation when mh_profile.5 did exist would bomb out.

23 years agoFixed multiple bugs in makedir(). First off, when creating nested folders, it
Dan Harkless [Thu, 27 Jan 2000 20:12:38 +0000 (20:12 +0000)]
Fixed multiple bugs in makedir().  First off, when creating nested folders, it
only set permissions properly on the innermost one.  Secondly, it passwd an
octal constant to atoi(), which only works on decimal numbers, resulting in
directories with no user read or execute permission, making creation of nested
dirs fail.

Also added a comment wondering why we do special processing when euid != uid.
If no one disagrees with my comments, I'll remove that weird code in the future.

23 years agoDan Winship informed me that the right fix when gcc -Wall complains about char
Dan Harkless [Wed, 26 Jan 2000 21:35:43 +0000 (21:35 +0000)]
Dan Winship informed me that the right fix when gcc -Wall complains about char
indexes to arrays is to cast to unsigned char, not int.  You want to prevent
negative indexes into the array.

23 years agoAdded documentation on both types of masquerading to post's man page.
Dan Harkless [Wed, 26 Jan 2000 10:16:32 +0000 (10:16 +0000)]
Added documentation on both types of masquerading to post's man page.

Also clarified some wording and added a note that the new type of masquerading
has been implemented only for post, not for the undocumented spost backend.

23 years agoExpanded the mention of the $SIGNATURE environment variable to talk about the
Dan Harkless [Wed, 26 Jan 2000 10:14:14 +0000 (10:14 +0000)]
Expanded the mention of the $SIGNATURE environment variable to talk about the
three different ways to override "From:" header construction.  Also added
mh-tailor(5) to the "SEE ALSO" section.

23 years agoJust added a comment explaining that akvalue() does mh alias substitution.
Dan Harkless [Wed, 26 Jan 2000 09:27:59 +0000 (09:27 +0000)]
Just added a comment explaining that akvalue() does mh alias substitution.

23 years agoI had my envelope-From:-setting in the wrong place in the code, before alias
Dan Harkless [Wed, 26 Jan 2000 09:26:23 +0000 (09:26 +0000)]
I had my envelope-From:-setting in the wrong place in the code, before alias
processing was done.  Put it in the right place, and properly implemented
Resent-From:-handling, which I had neglected before.

23 years agoAdded a comment bemoaning the lack of aliasing on the From: header and
Dan Harkless [Wed, 26 Jan 2000 09:24:15 +0000 (09:24 +0000)]
Added a comment bemoaning the lack of aliasing on the From: header and
explaining why I wasn't going to bother implementing my new draft-From:-based
email address masquerading right now.

23 years agoDoug's portability fix of my setgid inc autodetection had a caching bug -- if
Dan Harkless [Wed, 26 Jan 2000 06:51:50 +0000 (06:51 +0000)]
Doug's portability fix of my setgid inc autodetection had a caching bug -- if
you re-ran configure, uip/Makefile would be corrupted, and installation would
fail on OSes where inc needs to be setgid.

Implemented a new kind of email address masquerading.  When a user writes a
custom "From:" header in a draft, nmh uses it rather than generating one.
However, the user's true address is used in the SMTP envelope "From:" and is
revealed in the "Sender:" header.  Now, when mmailid is set to non-zero, the
envelope "From:" uses the address specified in the draft "From:" header, and
there is no "Sender:" header.  This is useful when sending on behalf of a remote
POP3 account or when remote mail robots incorrectly use the envelope "From:" in
preference to the body "From:".

23 years agoI'm surprised this didn't hit anyone sooner. Doug's portability fix of my
Dan Harkless [Wed, 26 Jan 2000 06:39:49 +0000 (06:39 +0000)]
I'm surprised this didn't hit anyone sooner.  Doug's portability fix of my
setgid inc autodetection didn't do its caching properly.  It cached the variable
$nmh_cv_ls_mail_grp (previously $nmh_group_mailspool), but did substitution on
$MAIL_SPOOL_GRP (previously $MAILGROUP) without setting the latter to the
former.  That meant that when re-running configure, $MAIL_SPOOL_GRP would be
NULL, so the $(MAIL_SPOOL_GRP) Make variable would be NULL, and installation
would fail with the error "install:  2755 does not exist" (since the argument to
-g was missing).

23 years agoImplemented a new type of username masquerading, which is also activated by
Dan Harkless [Wed, 26 Jan 2000 05:40:30 +0000 (05:40 +0000)]
Implemented a new type of username masquerading, which is also activated by
setting mmailid to non-zero in mts.conf.  The new type is based on the From:
header in the message draft rather than the GECOS field of the passwd file like
the old type.

With mmailid turned off, when a user specifies a custom From: header in a draft,
it'll be used, but the user's real address will be revealed in the SMTP envelope
From: and in the Sender: header.  With mmailid on, this revelation is disabled.

Also copied to here my new comment from mh.h explaining (if I understand it
correctly) the functionality of struct swit's minchars field.  Also, changed the
minchars for "help" from 4 to 0.  It doesn't make sense to use a positive
integer that's the exact length of the option.  That'll make it print out like
"-(help)".  The parentheses are supposed to go around the minimum part of the
option you need to specify when abbreviating it.  Perhaps someone thought it
would be cute to put "help" in parentheses to imply that you know about it
already as you just specified it be seeing the current output, but I think this
"overloading" of the meaning of the parentheses is awkward.  I need to go around
and change "help" to 0 everywhere, but it's getting too late to do it tonight.

Also added some other explanatory comments to existing code.

23 years agoUpdated to reflect that there are now two types of username masquerading
Dan Harkless [Wed, 26 Jan 2000 05:28:33 +0000 (05:28 +0000)]
Updated to reflect that there are now two types of username masquerading
(GECOS-based, the old one, and draft-From:-based, the new one).  Also clarified
existing wording.

23 years agoDocumented the minchars field of struct swit to the best of my understanding.
Dan Harkless [Wed, 26 Jan 2000 05:03:07 +0000 (05:03 +0000)]
Documented the minchars field of struct swit to the best of my understanding.

23 years agoModified the mmailid comment to reflect that there are now two types of
Dan Harkless [Wed, 26 Jan 2000 05:01:06 +0000 (05:01 +0000)]
Modified the mmailid comment to reflect that there are now two types of
masquerading (wouldn't want sysadmins to not realize that by allowing one,
they're allowing the other).  I also prefer my new wording of "allow" vs. the
old "turn on" because the latter implied that masquerading would take effect
just by setting that variable (not the case unless /etc/passwd had been
previously modified to have the <fakeusername>s).

23 years agoWhoever changed all the references to to
Dan Harkless [Wed, 26 Jan 2000 04:57:57 +0000 (04:57 +0000)]
Whoever changed all the references to to missed this file.

23 years agoChanged Mmailids to an extern so that we can access it from post.c to see if we
Dan Harkless [Wed, 26 Jan 2000 04:54:30 +0000 (04:54 +0000)]
Changed Mmailids to an extern so that we can access it from post.c to see if we
should do the new draft-From:-based masquerading.  Also clarified some comments
now that there are two different types of masquerading.

23 years agoJust clarified a couple of points in my last change description.
Dan Harkless [Tue, 25 Jan 2000 21:06:09 +0000 (21:06 +0000)]
Just clarified a couple of points in my last change description.

23 years agoThe prototype I gave for initgroups() which was documented in the AIX 4.1 info
Dan Harkless [Tue, 25 Jan 2000 07:45:10 +0000 (07:45 +0000)]
The prototype I gave for initgroups() which was documented in the AIX 4.1 info
page conflicted with the real one that comes from grp.h on Solaris 2.6.
Adjusted it so the local prototype is correct on both (hopefully all)
platforms.  Also added an include of <unistd.h>, which is where initgroups()
lives on HP-UX 10.20.

23 years agoI kept going back and forth checking in new pointless revisions of
Dan Harkless [Tue, 25 Jan 2000 07:10:25 +0000 (07:10 +0000)]
I kept going back and forth checking in new pointless revisions of
configure[.in], but it now looks like the problem was that was older
than (or maybe there were two problems).  Hopefully this'll get rid
of the needless auto* calls.

23 years agoShoot. Apparently it gets the timestamp from the check-in time rather than
Dan Harkless [Tue, 25 Jan 2000 06:56:25 +0000 (06:56 +0000)]
Shoot.  Apparently it gets the timestamp from the check-in time rather than
preserving the actual timestamp on the file when you check it in, so the
timestamp was the same for and configure, so the Makefile was doing
an autoconf just in case.  This time I'm checking in first and
configure at least a second later.  What a pain.

23 years agoAccidentally checked in configure with older date than, but I
Dan Harkless [Tue, 25 Jan 2000 06:46:13 +0000 (06:46 +0000)]
Accidentally checked in configure with older date than, but I
hadn't made changes to that would result in a different configure,
so I can't check one in with the right timestamp.  Therefore, I made a
meaningless change to (adding a "dnl" to the end of line that was
like others that had "dnl" at the end but didn't have one itself) and
regenerated configure.

23 years agoThe conditional definition of the "np" variable didn't make any sense. It was
Dan Harkless [Tue, 25 Jan 2000 06:21:38 +0000 (06:21 +0000)]
The conditional definition of the "np" variable didn't make any sense.  It was
only defined if HAVE_GETHOSTBYNAME was defined and only used when
HAVE_GETHOSTBYNAME wasn't defined.  I'm kind of surprised that never blew up
anywhere.  Changed the definition conditional to match the usage conditional.

23 years agoGot rid of the rest of the warnings that I didn't have time for on 1999-07-15
Dan Harkless [Tue, 25 Jan 2000 06:19:51 +0000 (06:19 +0000)]
Got rid of the rest of the warnings that I didn't have time for on 1999-07-15
(and, it would seem, some new ones people introduced since then).  The primary
ones were the warnings that default prototypes were being used for [v]snprintf()
and str[n]casecmp().  As of right now, there are _no_ compilation warnings
except on the lex output file (at least under AIX 4.1.5 and Solaris 2.6).

23 years agoOn AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
Dan Harkless [Tue, 25 Jan 2000 06:18:54 +0000 (06:18 +0000)]
On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
<stdio.h> or elsewhere.  Apparently it's not officially supported (though it
seems to work perfectly and IBM apparently uses it in internal code).  Anyhow,
if we omit our own snprintf() and vsnprintf() prototypes when we HAVE_SNPRINTF,
we get a billion warnings at compile time.  Use the C preprocessor to preprocess
stdio.h and make sure that there's actually a prototype.  Define
HAVE_SNPRINTF_PROTOTYPE if so, and use that to control our local prototype

Also, define strcasecmp() and strncasecmp() here all the time since we define
our own versions and always use them.  The only way we could get into trouble
doing this would be if the vendor's versions didn't have the same parameters,
but I don't see that happening.  If we don't define them here, we get warnings
all over the place that default prototypes are being used for 'em, and the
system header to include varies from OS to OS.

23 years agoOn AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
Dan Harkless [Tue, 25 Jan 2000 06:13:38 +0000 (06:13 +0000)]
On AIX 4.1, snprintf() is defined in libc.a but there's no prototype in
<stdio.h> or elsewhere.  Apparently it's not officially supported (though it
seems to work perfectly and IBM apparently uses it in internal code).  Anyhow,
if we omit our own snprintf() and vsnprintf() prototypes when we HAVE_SNPRINTF,
we get a billion warnings at compile time.  Use the C preprocessor to preprocess
stdio.h and make sure that there's actually a prototype.  Define
HAVE_SNPRINTF_PROTOTYPE if so, and use that to control our local prototype

23 years agoAdded include of signals.h for SIGNAL() prototype.
Dan Harkless [Tue, 25 Jan 2000 06:06:18 +0000 (06:06 +0000)]
Added include of signals.h for SIGNAL() prototype.

23 years agoAdded include of mh.h for snprintf() prototype.
Dan Harkless [Tue, 25 Jan 2000 06:04:29 +0000 (06:04 +0000)]
Added include of mh.h for snprintf() prototype.

23 years agoAdded include of mh.h to get snprintf() prototype and changed all references to
Dan Harkless [Tue, 25 Jan 2000 06:00:22 +0000 (06:00 +0000)]
Added include of mh.h to get snprintf() prototype and changed all references to
getcpy() to our_getcpy() to prevent conflict with the external one.

23 years agoPut in a prototype for stdio internal function _filbuf() to get rid of the
Dan Harkless [Tue, 25 Jan 2000 05:58:26 +0000 (05:58 +0000)]
Put in a prototype for stdio internal function _filbuf() to get rid of the
"default prototype" warning (only do this when we didn't #define it to something
specific due to another #define telling us to do so).

23 years agoPut in a prototype for client() to get rid of the "default prototype" warning.
Dan Harkless [Tue, 25 Jan 2000 05:55:20 +0000 (05:55 +0000)]
Put in a prototype for client() to get rid of the "default prototype" warning.
The prototype should really go in a new client.h file or somewhere, but I don't
have time right now for that.

23 years agoTypecast to get rid of warnings that index into cc[] is a char.
Dan Harkless [Tue, 25 Jan 2000 05:53:40 +0000 (05:53 +0000)]
Typecast to get rid of warnings that index into cc[] is a char.

23 years agoPut in prototype for initgroups() to get rid of "default prototype" warning. On
Dan Harkless [Tue, 25 Jan 2000 05:52:31 +0000 (05:52 +0000)]
Put in prototype for initgroups() to get rid of "default prototype" warning.  On
AIX 4.1, at least, the function exists in libc.a but doesn't exist in any .h.

23 years agoTypecast to get rid of warnings that array index into types[] is a char.
Dan Harkless [Tue, 25 Jan 2000 05:50:12 +0000 (05:50 +0000)]
Typecast to get rid of warnings that array index into types[] is a char.

23 years ago * Move mhtest from bindir to libdir.
Ruud de Rooij [Thu, 6 Jan 2000 21:30:07 +0000 (21:30 +0000)]
* Move mhtest from bindir to libdir.

* Move sendfiles from libdir to bindir.

* Updated sendfiles manpage to reflect this change.

* Added documentation for -build and -file switches to repl and
  forw manpages (patch from Peter Maydell).

* Fixed interaction between specifying -cc in profile and -group on

24 years ago* Add command to reverse the action of rmm [-nounlink] -- "urmm"? "umm"? "um"?
Dan Harkless [Thu, 11 Nov 1999 01:01:07 +0000 (01:01 +0000)]
* Add command to reverse the action of rmm [-nounlink] -- "urmm"?  "umm"?  "um"?
* Allow user customization of which kinds of text parts in multipart/alternative
  messages are preferred.  It would be nice if one selectable behavior would be
  to be prompted at runtime for which version to show.
* Add a new %-escape that makes temp files more permanent than %f, so that you
  can use gnuclient -q or netscape -remote on message parts.  Put netscape
  -remote in mhn.defaults for text/html once this is done.

24 years agoChanged the version number from 1.0.3 to 1.0.2+dev. There was not unanimous
Dan Harkless [Tue, 2 Nov 1999 21:49:47 +0000 (21:49 +0000)]
Changed the version number from 1.0.3 to 1.0.2+dev.  There was not unanimous
support for my proposed even/odd release/developer version number dichotomy.
1.0.2+dev implies release 1.0.2 plus some development.

24 years agoUpped the version number to 1.0.3. If we don't do this, then when people report
Dan Harkless [Fri, 29 Oct 1999 20:42:13 +0000 (20:42 +0000)]
Upped the version number to 1.0.3.  If we don't do this, then when people report
bugs against 1.0.2, we won't know "which" 1.0.2 they're talking about (since the
development source is publically available via CVS).  I think the Linux kernel
version numbers are a good model, so the next time we roll a tarball, it should
be version 1.0.4 (or higher -- anyhow, an even-numbered version).

24 years agoupdated INSTALL directions
Doug Morris [Fri, 29 Oct 1999 05:10:18 +0000 (05:10 +0000)]
updated INSTALL directions

24 years agorelease nmh-1.0.2
Doug Morris [Fri, 29 Oct 1999 04:49:01 +0000 (04:49 +0000)]
release nmh-1.0.2

24 years agoupdated the TODO list and bumped the revision to 1.0.2.
Doug Morris [Fri, 29 Oct 1999 04:32:50 +0000 (04:32 +0000)]
updated the TODO list and bumped the revision to 1.0.2.

24 years agofixed test in Makefiles for LIBTOOL for the case where it doesn't exist
Doug Morris [Wed, 27 Oct 1999 05:21:12 +0000 (05:21 +0000)]
fixed test in Makefiles for LIBTOOL for the case where it doesn't exist

24 years agofixed libtool check, sort of...
Doug Morris [Tue, 26 Oct 1999 21:12:36 +0000 (21:12 +0000)]
fixed libtool check, sort of...

24 years agochanges to allow building under Mac OS X/Rhapsody
Doug Morris [Thu, 21 Oct 1999 18:59:35 +0000 (18:59 +0000)]
changes to allow building under Mac OS X/Rhapsody

24 years ago * Changed repl defaults to partly revert to MH behaviour:
Ruud de Rooij [Sun, 17 Oct 1999 17:39:22 +0000 (17:39 +0000)]
* Changed repl defaults to partly revert to MH behaviour:
  "-cc all" is now only implied with -group.
* The replcomps template includes cc: header again (as in MH).
* Updated repl man page to reflect these changes.

24 years agosunos/solaris modifications
Doug Morris [Sat, 16 Oct 1999 00:56:05 +0000 (00:56 +0000)]
sunos/solaris modifications