Common subdirectories: ./Doc and ../majordomo-1.94.2#3/Doc
diff -u ./NEWLIST ../majordomo-1.94.2#3/NEWLIST
--- ./NEWLIST   Tue Mar 11 11:01:17 1997
+++ ../majordomo-1.94.2#3/NEWLIST       Wed Apr  2 12:32:06 1997
@@ -2,7 +2,7 @@
             |\/| |__|  | |  | |__/ |  \ |  | |\/| |  |
             |  | |  | _| |__| |  \ |__/ |__| |  | |__|

-                            Release 1.94
+                           Release 1.94.2
                              NEWLIST
  --------------------------------------------------------------------------

@@ -32,9 +32,9 @@

   These would look like this:

-       test:            :include:/usr/test/majordomo-1.94/lists/test
+       test:            :include:/usr/test/majordomo-1.94.2/lists/test
       owner-test:      you,
-       test-request:    "|/usr/test/majordomo-1.94/wrapper request-answer test"
+       test-request:    "|/usr/test/majordomo-1.94.2/wrapper request-answer test"
       test-approval:   you

   It's more likely that the outgoing messages to the list will be
@@ -42,11 +42,11 @@
   give other useful features.  A typical set of aliases without anything
   fancy, such as archiving or digesting, would look like this:

-       test:    "|/usr/test/majordomo-1.94/wrapper resend -l test test-list"
-       test-list:  :include:/usr/test/majordomo-1.94/lists/test
+       test:    "|/usr/test/majordomo-1.94.2/wrapper resend -l test test-list"
+       test-list:  :include:/usr/test/majordomo-1.94.2/lists/test
       owner-test:   you,
       test-owner:   you
-       test-request: "|/usr/test/majordomo-1.94/wrapper majordomo -l test"
+       test-request: "|/usr/test/majordomo-1.94.2/wrapper majordomo -l test"

   Finally, a more complete set of aliases that provides digestification,
   archiving, and header manipulation would look like:
diff -u ./README ../majordomo-1.94.2#3/README
--- ./README    Mon Dec 23 15:29:56 1996
+++ ../majordomo-1.94.2#3/README        Mon Apr  7 20:56:56 1997
@@ -46,7 +46,7 @@

   Majordomo is a program which automates the management of Internet
   mailing lists. Commands are sent to Majordomo via electronic mail to
-   handle all aspects of list maintainance. Once a list is set up,
+   handle all aspects of list maintenance. Once a list is set up,
   virtually all operations can be performed remotely, requiring no
   intervention upon the postmaster of the list site.

@@ -118,7 +118,7 @@
Majordomo and digest were originally written by Brent Chapman, however
he doesn't have the time currently to do more development on it.  John
Rouillard did a lot of work for configuration files and managed the
-releases for the 1.62 to 1.93 timeframe.  Chan Wilson
+releases for the 1.62 to 1.93 time frame.  Chan Wilson
([email protected]) is currently "release coordinator" for 1.94 and
beyond.

@@ -354,15 +354,15 @@
    open/append/read a to a file that it was supposed to be able to
    access.  Usually this is caused by improper permissions.

-  chmod(, link(, operation not permited -- the corresponding chmod or
+  chmod(, link(, operation not permitted -- the corresponding chmod or
    link operation failed when it shouldn't have. Usually this is caused
    by improper permissions, most often on the wrapper.  Make certain
-    that it is unstalled setuid, and that "wrapper config-test" run as a
+    that it is installed setuid, and that "wrapper config-test" run as a
    normal user (not root or the majordomo user) reports no problems.

  Can't invoke -- the program majordomo wanted to invoke to send mail
    couldn't be invoked.  This error is usually only seen when you are
-    tracing the smtp connection using /usr/ucb/Mail -v.
+    tracing the SMTP connection using /usr/ucb/Mail -v.

  Can't connect to sendmail -- for some reason the attempt to run
    sendmail in the function resend_sendmail in the resend program
@@ -372,30 +372,31 @@
    could not be run; make certain that config-test reports that the
    mailer is properly accessible.  Bugs in previous versions caused
    errors of the form "mailer -fMajordomo-Owner not executable."  These
-    bugs should be fixed; please report any occurrances of this type of
+    bugs should be fixed; please report any occurrences of this type of
    error just in case the bugs persist.

-  mailer exited unexpectedly with error XXXX -- it is expected that the
-    mailer will return a zero exit code upon success, so any nonzero code
-    is reported as an error.  The mail may or may not have been propperly
-    sent to your list.  To track down the source of this error, first
-    inspect the debug logs (see Debugging below) to see if the mailer
-    emitted any diagnostics.  Failing that, the true exit status of the
-    program can be obtained by dividing the error number by 256.  Consult
-    your mailer's documentation for the meaning of the exit statis, or if
-    you use Sendmail, consult the chart below for some of the more common
+  mailer exited unexpectedly with error XX -- it is expected that the
+    mailer will return a zero exit code upon success, so any nonzero
+    code is reported as an error. The mail may or may not have been
+    properly sent to your list. To track down the source of this
+    error, first inspect the debug logs (see Debugging below) to see
+    if the mailer emitted any diagnostics. Failing that, consult your
+    mailer's documentation for the meaning of the exit status, or if you
+    use Sendmail, consult the chart below for some of the more common
    errors:

    64 - EX_USAGE - Sendmail uses this to indicate a command line usage
      error, but it also uses it to report a general error condition.
      Some versions of Sendmail do this somewhat unpredictably and for
-      this reason the '-oee' flag has been added to the defaut mailer
+      this reason the '-oee' flag has been added to the default mailer
      definitions.  This flag should prevent these errors for versions of
      Sendmail that support it.
+
    67 - EX_NOUSER - The alias that is used to send out list mail (which
      is passed as the last argument on resend's command line) does not
      exist.  Make certain that there are no typographical errors in your
      alias file, and that the file has been properly rebuilt.
+
    69 through 74, 77 - These are generally serious errors that are
      caused by either lack of resources or improper configuration of
      Sendmail.  You should consult the Sendmail documentation.
@@ -492,7 +493,7 @@
  that contains this list if the file name used for the -I flag to
  resend.  For example the filename "<listname>-can_post" can be
  created in the majordomo mailing lists directory. This list should
-  be unadvertized and closed. Don't bother creating any sendmail
+  be unadvertised and closed. Don't bother creating any sendmail
  aliases for it. This allows people to be added to or removed from
  the list using majordomo commands.

@@ -538,7 +539,7 @@

If you want to change the defaults, change the values assigned to each
keyword. There is some documentation in the config_parse.pl file. The
-config_parse.pl file is also a man page describing the programatic
+config_parse.pl file is also a man page describing the programmatic
interface to the config file parser and some other details about the
config file parser.

diff -u ./approve ../majordomo-1.94.2#3/approve
--- ./approve   Tue Dec  3 19:11:53 1996
+++ ../majordomo-1.94.2#3/approve       Sat Apr  5 21:18:36 1997
@@ -56,15 +56,20 @@
# +1 415 962 0841                                 Mountain View, CA  94041

# $Source: /sources/cvsrepos/majordomo/approve,v $
-# $Revision: 1.13 $
-# $Date: 1996/12/03 18:11:53 $
+# $Revision: 1.15 $
+# $Date: 1997/04/05 19:18:36 $
# $Author: cwilson $
# $State: Exp $
#
# $Locker:  $

-$MAILER = '/usr/lib/sendmail';
+$MAILER = '/usr/lib/sendmail' if -x '/usr/lib/sendmail';
+$MAILER = '/usr/sbin/sendmail' if -x '/usr/sbin/sendmail';

+die "Couldn't find a sendmail to invoke, please define!"
+    if !$MAILER;
+
+
require "getopts.pl";

&Getopts("df:") ||
@@ -150,16 +155,19 @@
           if (defined($opt_d)) {
               open(MAIL, ">&STDOUT");
               print MAIL "-" x 20, "\n";
-               print MAIL "To: $reply_to\n\n";
           } else {
               open(MAIL, "|$MAILER $reply_to") ||
                   die ("open(\"|$MAILER ...\"): $!");
           }
+
+           print MAIL "To: $reply_to\n\n";
           print MAIL "approve $passwd $_";
           close(MAIL);
           last;
       }
    }
+    print STDERR "Mailed approved command to $list list.\n"
+       unless defined $opt_d;
}

sub process_bounce {
Common subdirectories: ./contrib and ../majordomo-1.94.2#3/contrib
Common subdirectories: ./include and ../majordomo-1.94.2#3/include
diff -u ./majordomo ../majordomo-1.94.2#3/majordomo
--- ./majordomo Wed Mar 12 17:51:00 1997
+++ ../majordomo-1.94.2#3/majordomo     Wed Apr  2 13:31:15 1997
@@ -1,5 +1,5 @@
#!/bin/perl
-# $Modified: Wed Mar 12 17:42:40 1997 by cwilson $
+# $Modified: Wed Apr  2 13:30:32 1997 by cwilson $

# majordomo: a person who speaks, makes arrangements, or takes charge
#      for another.
@@ -8,8 +8,8 @@
#   usage rights.
#
# $Source: /sources/cvsrepos/majordomo/majordomo,v $
-# $Revision: 1.82 $
-# $Date: 1997/03/12 16:51:00 $
+# $Revision: 1.85 $
+# $Date: 1997/04/02 11:31:15 $
# $Author: cwilson $
# $State: Exp $
#
@@ -472,7 +472,7 @@
               }
               &log("unsubscribe $clean_list $subscriber");
               &sendmail(BYE, "$clean_list-approval\@$whereami",
-                         "UNSUBSCRIBE $clean_list");
+                         "UNSUBSCRIBE $clean_list $subscriber");
               print BYE "$subscriber has unsubscribed from $clean_list.\n";
               print BYE "No action is required on your part.\n";
               close(BYE);
@@ -1204,7 +1204,7 @@
    foreach (sort @lists) {
       $list = $_;
       $list =~ /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.)
-       next if /^(RCS|CVS|core)$/;     # my favorite two.
+       next if /^(RCS|CVS|core)$/;     # files and directories to ignore

       &get_config($listdir, $list) if !&cf_ck_bool($list, '', 1);

@@ -1445,7 +1445,7 @@
This help message is being sent to you from the Majordomo mailing list
management system at $whoami.

-This is version $version of Majordomo.
+This is version $majordomo_version of Majordomo.

If you're familiar with mail servers, an advanced user's summary of
Majordomo's commands appears at the end of this message.
@@ -1455,7 +1455,7 @@
archives.

You can interact with the Majordomo software by sending it commands
-in the body of mail messages addressed to "Majordomo\@$whoami".
+in the body of mail messages addressed to "$whoami".
Please do not put your commands on the subject line; Majordomo does
not process commands in the subject line.

@@ -1478,7 +1478,7 @@
I.     FINDING OUT WHICH LISTS ARE ON THIS SYSTEM

To get a list of publicly-available mailing lists on this system, put the
-following line in the body of your mail message to Majordomo\@$whoami:
+following line in the body of your mail message to $whoami:

       lists

@@ -1522,7 +1522,7 @@
that an authorization key is required for subscription.  Another message
will be sent to the address to be subscribed (which may or may not be the
same as yours) containing the key, and directing the user to send a
-command found in that message back to Majordomo\@whoami.  (This can be
+command found in that message back to $whoami.  (This can be
a bit of extra hassle, but it helps keep you from being swamped in extra
email by someone who forged requests from your address.)  You may also
get a message that your subscription is being forwarded to the list owner
@@ -1534,7 +1534,7 @@
list policies and features.  Save this message for future reference; it
will also contain exact directions for unsubscribing.  If you lose the
intro mail and would like another copy of the policies, send this message
-to Majordomo\@$whoami:
+to $whoami:

       intro demo-list

@@ -1556,7 +1556,7 @@

       unsubscribe demo-list jqpublic\@my-isp.com

-In either of these cases, you can tell Majordomo\@$whoami to remove
+In either of these cases, you can tell $whoami to remove
the address in question from all lists on this server by using "*"
in place of the list name:

@@ -1566,7 +1566,7 @@
IV.    FINDING THE LISTS TO WHICH AN ADDRESS IS SUBSCRIBED

To find the lists to which your address is subscribed, send this command
-in the body of a mail message to Majordomo\@$whoami:
+in the body of a mail message to $whoami:

       which

@@ -1613,17 +1613,17 @@
       get demo-list profile.form
       get demo-list demo-list.9611

-in your mail to Majordomo\@$whoami.
+in your mail to $whoami.

VII.   GETTING MORE HELP

-To contact a human site manager, send mail to Majordomo-Owner\@$whoami.
+To contact a human site manager, send mail to $whoami_owner.
To contact the owner of a specific list, send mail to that list's
approval address, which is formed by adding "-approval" to the user-name
portion of the list's address.  For instance, to contact the list owner
-for demo-list\@$whoami, you would send mail to $list-approval\@$whoami.
+for demo-list\@$whereami, you would send mail to $list-approval\@$whereami.

-To get another copy of this help message, send mail to Majordomo\@$whoami
+To get another copy of this help message, send mail to $whoami
with a line saying

       help
@@ -1883,6 +1883,10 @@
print MSG <<"EOM";
command in the body of your email message:

+    unsubscribe $list
+
+or from another account, besides $subscriber:
+
    unsubscribe $list $subscriber

EOM
@@ -1921,7 +1925,7 @@
    close(MSG);

    # tell the list owner of the new subscriber
-    &sendmail(NOTICE, "$list-approval\@$whereami", "SUBSCRIBE $list");
+    &sendmail(NOTICE, "$list-approval\@$whereami", "SUBSCRIBE $list $subscriber");
    print NOTICE "$subscriber has been added to $list.\n";
    print NOTICE "No action is required on your part.\n";
    close(NOTICE);
diff -u ./majordomo.aliases ../majordomo-1.94.2#3/majordomo.aliases
--- ./majordomo.aliases Sun Jan 28 20:21:05 1996
+++ ../majordomo-1.94.2#3/majordomo.aliases     Wed Apr  2 12:32:32 1997
@@ -14,12 +14,12 @@
# restart sendmail.
#

-majordomo:  "|/usr/test/majordomo-1.94/wrapper majordomo"
+majordomo:  "|/usr/test/majordomo-1.94.2/wrapper majordomo"
majordomo-owner: chan
owner-majordomo: chan

-test:          "|/usr/test/majordomo-1.94/wrapper resend -l test test-list"
-test-list:     :include:/usr/test/majordomo-1.94/lists/test
+test:          "|/usr/test/majordomo-1.94.2/wrapper resend -l test test-list"
+test-list:     :include:/usr/test/majordomo-1.94.2/lists/test
owner-test:    chan
test-owner:    chan
test-request:  chan
diff -u ./majordomo.pl ../majordomo-1.94.2#3/majordomo.pl
--- ./majordomo.pl      Mon Mar 10 17:07:14 1997
+++ ../majordomo-1.94.2#3/majordomo.pl  Wed Apr  2 16:04:14 1997
@@ -1,12 +1,12 @@
# General subroutines for Majordomo

# $Source: /sources/cvsrepos/majordomo/majordomo.pl,v $
-# $Revision: 1.53 $
-# $Date: 1997/03/10 16:07:14 $
+# $Revision: 1.55 $
+# $Date: 1997/04/02 14:04:14 $
# $Author: cwilson $
# $State: Exp $
#
-# $Header: /sources/cvsrepos/majordomo/majordomo.pl,v 1.53 1997/03/10 16:07:14 cwilson Exp $
+# $Header: /sources/cvsrepos/majordomo/majordomo.pl,v 1.55 1997/04/02 14:04:14 cwilson Exp $
#

# The exit codes for abort.  Look in /usr/include/sysexits.h.
@@ -13,8 +13,8 @@
#
$EX_DATAERR = 65;
$EX_TEMPFAIL = 75;
+$EX_NOUSER = 67;

-
package Majordomo;

$DEBUG = $main'DEBUG;
@@ -94,7 +94,7 @@
sub main'ParseAddrs {
    local($_) = shift;
    1 while s/\([^\(\)]*\)//g;                 # strip comments
-    1 while s/"[^"]*"//g;              # strip comments"
+    1 while s/"[^"]*"\s//g;            # strip comments"
    split(/,/);                                # split into parts
    foreach (@_) {
       1 while s/.*<(.*)>.*/$1/;
diff -u ./majordomo_version.pl ../majordomo-1.94.2#3/majordomo_version.pl
--- ./majordomo_version.pl      Wed Mar 12 17:51:16 1997
+++ ../majordomo-1.94.2#3/majordomo_version.pl  Mon Apr  7 20:59:16 1997
@@ -1,5 +1,5 @@
-# $Header: /sources/cvsrepos/majordomo/majordomo_version.pl,v 1.19 1997/03/12 16:51:16 cwilson Exp $
+# $Header: /sources/cvsrepos/majordomo/majordomo_version.pl,v 1.21 1997/04/07 18:59:16 cwilson Exp $

-$majordomo_version = "1.94.2_spin1";
+$majordomo_version = "1.94.2_spin3";
1;

Common subdirectories: ./md-sub and ../majordomo-1.94.2#3/md-sub
diff -u ./resend ../majordomo-1.94.2#3/resend
--- ./resend    Tue Mar 11 17:18:33 1997
+++ ../majordomo-1.94.2#3/resend        Wed Apr  2 16:04:48 1997
@@ -1,12 +1,12 @@
#!/bin/perl
-# $Modified: Mon Dec 23 14:59:36 1996 by cwilson $
+# $Modified: Wed Apr  2 14:16:55 1997 by cwilson $

# Copyright 1992, D. Brent Chapman.  All Rights Reserved.  For use by
# permission only.
#
# $Source: /sources/cvsrepos/majordomo/resend,v $
-# $Revision: 1.82 $
-# $Date: 1997/03/11 16:18:33 $
+# $Revision: 1.85 $
+# $Date: 1997/04/02 14:04:48 $
# $Author: cwilson $
# $State: Exp $
#
@@ -133,6 +133,11 @@
    open (STDERR, ">>$TMPDIR/resend.debug");
}

+# XXX some standard way of setting defaults needs to be done..
+#
+$MAX_HEADER_LINE_LENGTH = $MAX_HEADER_LINE_LENGTH || 128;
+$MAX_TOTAL_HEADER_LENGTH = $MAX_TOTAL_HEADER_LENGTH || 1024;
+
print STDERR "$0 [$$]: starting.\n" if $DEBUG;

if ( ! @ARGV) {
@@ -513,7 +518,11 @@
#
close(MAILIN);
unlink(&fileglob("$TMPDIR", "^resend\.$$\.")) || &abort("Error unlinking temp files: $!");
-close(MAILOUT) || &abort("Mailer $sendmail_cmd exited unexpectedly with error $?");
+close(MAILOUT) || do {
+    $? >>= 8;
+    &abort("Mailer $sendmail_cmd exited unexpectedly with error $?")
+       unless ($sendmail_cmd =~ /sendmail/ && $? == $EX_NOUSER);
+};

# Seeya.
#
@@ -609,7 +618,7 @@
       print STDERR "$0: parse_header: [$.] administrative_header check\n"
           if $DEBUG;

-       if ($#admin_headers >= $[ && !$approved &&
+       if ($#admin_headers >= $[ && !$approved && defined($opt_s) &&
           eval $is_admin_header) {
           $gonna_bounce .= "Admin request: $taboo ";
           print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG;
diff -u ./sample.cf ../majordomo-1.94.2#3/sample.cf
--- ./sample.cf Tue Mar 11 11:19:46 1997
+++ ../majordomo-1.94.2#3/sample.cf     Mon Apr  7 20:57:43 1997
@@ -227,6 +227,7 @@
/^subject:\s*help\b/i
/^subject:\s.*\bchange\b.*\baddress\b/i
/^subject:\s*request\b(.*\b)?addition\b/i
+/^subject:\s*cancel\b/i
END

# Common things that people send to the wrong address.
@@ -239,6 +240,7 @@
# each new majordomo command.
#
$admin_body = <<'END';
+/\bcancel\b/i
/\badd me\b/i
/\bdelete me\b/i
/\bremove\s+me\b/i
@@ -282,6 +284,7 @@
/^subject:\s*Returned mail\b/i
/^subject:\s*unable to deliver mail\b/i
/^subject:\s.*\baway from my mail\b/i
+/^subject:\s*Autoreply/i
END

# Taboo body contents to catch and forward to the approval address
@@ -298,7 +301,7 @@

# Majordomo will not send replies to addresses which match this.
# The match is done case-insensitively.
-$majordomo_dont_reply = '(mailer-daemon|uucp|listserv|majordomo)\@';
+$majordomo_dont_reply = '(mailer-daemon|uucp|listserv|majordomo|listproc)\@';

1;
-# $Header: /sources/cvsrepos/majordomo/sample.cf,v 1.30 1997/03/11 10:19:46 cwilson Exp $
+# $Header: /sources/cvsrepos/majordomo/sample.cf,v 1.32 1997/04/07 18:57:43 cwilson Exp $