home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume35 / procmail / patch01a < prev    next >
Text File  |  1993-03-04  |  54KB  |  1,556 lines

  1. Newsgroups: comp.sources.misc
  2. From: berg@pool.informatik.rwth-aachen.de (Stephen R. van den Berg)
  3. Subject: v35i124:  procmail - mail processing package v2.80, Patch01a/2
  4. Message-ID: <csm-v35i124=procmail.151552@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 74ded8f872cde38393552f57ac4c3d51
  6. Date: Thu, 4 Mar 1993 21:19:24 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: berg@pool.informatik.rwth-aachen.de (Stephen R. van den Berg)
  10. Posting-number: Volume 35, Issue 124
  11. Archive-name: procmail/patch01a
  12. Environment: sendmail, smail, MMDF, mailsurr, UNIX, POSIX
  13. Patch-To: procmail: Volume 35, Issue 21-32
  14.  
  15. This is the first of a two part patch.  Please apply these patches separately.
  16. To apply this patch file:
  17.  
  18.     cd procmail280; patch -s -p1 <this_file
  19.  
  20.   -------------------
  21. Changes since v2.80:
  22.  
  23. 1993/02/19: v2.81
  24.         Fixed a major inconvenience when generating the Makefiles in
  25.            initmake
  26.         Loosened the formats accepted for (un)subscription requests (some
  27.            got rejected, but were valid)
  28.         Redirected archive requests away from the regular list address
  29.         Sharpened the FROM_MAIL_DAEMON detection
  30.         Flist, idhash and multigram now use the correct name on error
  31.            reports
  32.         Sped up multigram on duplicate names (also eliminates duplicates
  33.            in the best-matches list)
  34.         The locking tests in the autoconf scripts seemed to hang on
  35.            certain machines, I think I fixed that now
  36.         Procmail now uses saved-gids if available (allows for system-
  37.            mailbox locking from within an rcfile on systems that did not
  38.            have world-writeable /usr/mail directories)
  39.         Procmail ignores locallockfiles if the file that has to be locked
  40.            turns out to be /dev/null
  41.         Added a paragraph to the mailinglist/Manual (explaining multigram
  42.            and threshold values)
  43. -- 
  44. Sincerely,                                  berg@pool.informatik.rwth-aachen.de
  45.            Stephen R. van den Berg (AKA BuGless).    berg@physik.tu-muenchen.de
  46. --------------------------
  47. diff -c procmail/patchlevel.h:1.30 procmail/patchlevel.h:1.34
  48. *** procmail/patchlevel.h:1.30    Fri Feb 19 16:21:55 1993
  49. --- procmail/patchlevel.h    Fri Feb 19 16:21:55 1993
  50. ***************
  51. *** 1,5 ****
  52.   #define VERSION "\
  53. ! procmail v2.80 1993/02/04 written and created by Stephen R. van den Berg\n\
  54.   \t\t\t\tberg@pool.informatik.rwth-aachen.de\n\
  55.   \t\t\t\tberg@physik.tu-muenchen.de\n\
  56.   \n\
  57. --- 1,5 ----
  58.   #define VERSION "\
  59. ! procmail v2.81 1993/02/19 written and created by Stephen R. van den Berg\n\
  60.   \t\t\t\tberg@pool.informatik.rwth-aachen.de\n\
  61.   \t\t\t\tberg@physik.tu-muenchen.de\n\
  62.   \n\
  63. diff -c procmail/FEATURES:1.4 procmail/FEATURES:1.6
  64. *** procmail/FEATURES:1.4    Fri Feb 19 16:21:43 1993
  65. --- procmail/FEATURES    Fri Feb 19 16:21:43 1993
  66. ***************
  67. *** 28,38 ****
  68.       + Variable assignment and substitution is an extremely complete subset
  69.         of the standard /bin/sh syntax
  70.       + Provides a mail log file, which logs all mail arrival, shows
  71. !       in summary whence it came from, what it was about, where it went
  72. !       (what folder) and how long (in bytes) it was
  73.       + Uses this log file to display a wide range of diagnostic and error
  74.         messages (if something went wrong)
  75. !     + Does not impose *any* limits on line lenghts, mail length (as long
  76.         as memory permits), or the use of any character (any 8-bit character,
  77.         including '\0' is allowed) in the mail
  78.       + It has man pages (boy, does *it* have man pages)
  79. --- 28,38 ----
  80.       + Variable assignment and substitution is an extremely complete subset
  81.         of the standard /bin/sh syntax
  82.       + Provides a mail log file, which logs all mail arrival, shows
  83. !       in summary whence it came, what it was about, where it went (what
  84. !       folder) and how long (in bytes) it was
  85.       + Uses this log file to display a wide range of diagnostic and error
  86.         messages (if something went wrong)
  87. !     + Does not impose *any* limits on line lengths, mail length (as long
  88.         as memory permits), or the use of any character (any 8-bit character,
  89.         including '\0' is allowed) in the mail
  90.       + It has man pages (boy, does *it* have man pages)
  91. diff -c procmail/HISTORY:1.18 procmail/HISTORY:1.22
  92. *** procmail/HISTORY:1.18    Fri Feb 19 16:21:46 1993
  93. --- procmail/HISTORY    Fri Feb 19 16:21:46 1993
  94. ***************
  95. *** 21,28 ****
  96.           Implemented a custom regular expression library (fully egrep
  97.              compatible), should eliminate the annoyances with incompatible
  98.              egreps
  99. !         Accomplished the doubtful milestone of having a source file
  100. !            (regexp.c) which provokes a compiler error on an old compiler
  101.              (if using the optimiser)
  102.           Ignoring leading spaces on condition lines now (means that
  103.              everything can be indented in the rcfile)
  104. --- 21,28 ----
  105.           Implemented a custom regular expression library (fully egrep
  106.              compatible), should eliminate the annoyances with incompatible
  107.              egreps
  108. !         Reached the doubtful milestone of having a source file (regexp.c)
  109. !            which provokes a compiler error on an old compiler
  110.              (if using the optimiser)
  111.           Ignoring leading spaces on condition lines now (means that
  112.              everything can be indented in the rcfile)
  113. ***************
  114. *** 44,51 ****
  115.              this includes specific intstructions for smail 2.x
  116.           Made special entries in config.h for semi-permanent environment-
  117.              variable overrides
  118. -         Made formail more intelligent, it can now parse full-fledged
  119. -            RFC822 addresses (quoting et al)
  120.           A complete rewrite of formail, the code got bigger, the runtime
  121.              requirement got bigger, it got slower, but, it's more structured
  122.              (so much for structured programming :-)
  123. --- 44,49 ----
  124. ***************
  125. *** 179,181 ****
  126. --- 177,201 ----
  127.            locking support
  128.              - also, network support for comsat tries to build up a compile
  129.            time cache for trivial get*byname() calls
  130. +            - reached the doubtful milestone of consistently crashing the
  131. +          kernel on a Convex by running the locktst program
  132. + 1993/02/19: v2.81
  133. +         Fixed a major inconvenience when generating the Makefiles in
  134. +            initmake
  135. +         Loosened the formats accepted for (un)subscription requests (some
  136. +            got rejected, but were valid)
  137. +         Redirected archive requests away from the regular list address
  138. +         Sharpened the FROM_MAIL_DAEMON detection
  139. +         Flist, idhash and multigram now use the correct name on error
  140. +            reports
  141. +         Sped up multigram on duplicate names (also eliminates duplicates
  142. +            in the best-matches list)
  143. +         The locking tests in the autoconf scripts seemed to hang on
  144. +            certain machines, I think I fixed that now
  145. +         Procmail now uses saved-gids if available (allows for system-
  146. +            mailbox locking from within an rcfile on systems that did not
  147. +            have world-writeable /usr/mail directories)
  148. +         Procmail ignores locallockfiles if the file that has to be locked
  149. +            turns out to be /dev/null
  150. +         Added a paragraph to the mailinglist/Manual (explaining multigram
  151. +            and threshold values)
  152. diff -c procmail/Makefile:1.17 procmail/Makefile:1.19
  153. *** procmail/Makefile:1.17    Fri Feb 19 16:21:47 1993
  154. --- procmail/Makefile    Fri Feb 19 16:21:47 1993
  155. ***************
  156. *** 1,9 ****
  157. ! #$Id: Makefile,v 1.17 1993/01/28 14:21:47 berg Exp $
  158.   
  159.   # change BASENAME to your home directory if need be
  160.   BASENAME = /usr/local
  161.   
  162.   # You can predefine ARCHITECTURE to a bin directory suffix
  163.   #ARCHITECTURE=.sun4
  164.   
  165.   BINDIR      = $(BASENAME)/bin$(ARCHITECTURE)
  166. --- 1,10 ----
  167. ! #$Id: Makefile,v 1.19 1993/02/11 12:21:22 berg Exp $
  168.   
  169.   # change BASENAME to your home directory if need be
  170.   BASENAME = /usr/local
  171.   
  172.   # You can predefine ARCHITECTURE to a bin directory suffix
  173. + ARCHITECTURE=
  174.   #ARCHITECTURE=.sun4
  175.   
  176.   BINDIR      = $(BASENAME)/bin$(ARCHITECTURE)
  177. ***************
  178. *** 87,91 ****
  179.   makefiles makefile Makefiles Makefile: init
  180.   
  181.   bins mans install.bin install.man install recommend suid clean realclean \
  182. ! deinstall autoconf.h $(BINSS) multigram: init
  183.       $(HIDEMAKE) make $@
  184. --- 88,92 ----
  185.   makefiles makefile Makefiles Makefile: init
  186.   
  187.   bins mans install.bin install.man install recommend suid clean realclean \
  188. ! veryclean clobber deinstall autoconf.h $(BINSS) multigram: init
  189.       $(HIDEMAKE) make $@
  190. diff -c procmail/Makefile.1:1.9 procmail/Makefile.1:1.14
  191. *** procmail/Makefile.1:1.9    Fri Feb 19 16:21:48 1993
  192. --- procmail/Makefile.1    Fri Feb 19 16:21:49 1993
  193. ***************
  194. *** 1,4 ****
  195. ! #$Id: Makefile.1,v 1.9 1993/01/26 14:49:37 berg Exp $
  196.   
  197.   HIDEMAKE=$(MAKE)
  198.   
  199. --- 1,4 ----
  200. ! #$Id: Makefile.1,v 1.14 1993/02/18 17:19:31 berg Exp $
  201.   
  202.   HIDEMAKE=$(MAKE)
  203.   
  204. ***************
  205. *** 31,36 ****
  206. --- 31,37 ----
  207.   
  208.   config.check: config.h
  209.       @echo Housekeeping file >$@
  210. +     @-mkdir new 2>$(DEVNULL); exit 0
  211.       @-if $(FGREP) -n -e '`' config.h $(DEVNULL) | $(FGREP) -v EOFName ; \
  212.        then \
  213.        echo;echo '    ^^^^^^^^^^^^^^^^^^^^ WARNING ^^^^^^^^^^^^^^^^^^^^^';\
  214. ***************
  215. *** 73,79 ****
  216.   $(BINS): bins
  217.   
  218.   install.man: $(MANS)
  219. -     @echo Housekeeping file >install.man
  220.       @-mkdir $(MANDIR) 2>$(DEVNULL); exit 0
  221.       @-mkdir $(MAN1DIR) 2>$(DEVNULL); exit 0
  222.       @-mkdir $(MAN5DIR) 2>$(DEVNULL); exit 0
  223. --- 74,79 ----
  224. ***************
  225. *** 82,93 ****
  226.         do $(INSTALL) new/$$a.1 $(MAN1DIR)/$$a.$(MAN1SUFFIX); done
  227.       @for a in $(MANS5S); \
  228.         do $(INSTALL) new/$$a.5 $(MAN5DIR)/$$a.$(MAN5SUFFIX); done
  229.   
  230.   install.bin: $(BINS)
  231.       @-mkdir $(BINDIR) 2>$(DEVNULL); exit 0
  232.       @chmod 0755 $(BINS)
  233. -     @echo Housekeeping file >install.bin
  234.       $(INSTALL) $(BINS) $(BINDIR)
  235.   
  236.   install: install.man install.bin
  237.       @echo
  238. --- 82,94 ----
  239.         do $(INSTALL) new/$$a.1 $(MAN1DIR)/$$a.$(MAN1SUFFIX); done
  240.       @for a in $(MANS5S); \
  241.         do $(INSTALL) new/$$a.5 $(MAN5DIR)/$$a.$(MAN5SUFFIX); done
  242. +     @echo Housekeeping file >install.man
  243.   
  244.   install.bin: $(BINS)
  245.       @-mkdir $(BINDIR) 2>$(DEVNULL); exit 0
  246.       @chmod 0755 $(BINS)
  247.       $(INSTALL) $(BINS) $(BINDIR)
  248. +     @echo Housekeeping file >install.bin
  249.   
  250.   install: install.man install.bin
  251.       @echo
  252. ***************
  253. *** 96,104 ****
  254.       @cd $(MAN5DIR); echo Installed in $(MAN5DIR); ls -l $(MANS5)
  255.       @$(MAKE) recommend
  256.   
  257. - new:
  258. -     @-mkdir $@ 2>$(DEVNULL); exit 0
  259.   deinstall:
  260.       @echo ----------------------------- Deinstalling the procmail package.
  261.       @$(RM) install.man install.bin
  262. --- 97,102 ----
  263. ***************
  264. *** 108,125 ****
  265.       @-cd $(MAN5DIR); $(RM) $(MANS5); ls -l $(MANS5); exit 0
  266.       @echo ----------------------------- Ready.
  267.   
  268. ! clean: new
  269.       -for a in $(SUBDIRS); do cd $$a; $(MAKE) $@; cd ..; done; exit 0
  270.       $(RM) $(MANS) $(BINS) libcheck install.man install.bin suid.sh \
  271. !      _Makefile core
  272.   
  273.   realclean: clean _init
  274. -     -rmdir new; exit 0
  275.       $(RM) config.check
  276.       -for a in $(SUBDIRS); do $(MV) $$a/Makefile.init $$a/Makefile; done; \
  277.        exit 0
  278.   
  279. ! veryclean: realclean
  280.   
  281.   _init:
  282.       sed -e '/^# Makefile.1 - mark/,$$ d' <Makefile >_Makefile
  283. --- 106,123 ----
  284.       @-cd $(MAN5DIR); $(RM) $(MANS5); ls -l $(MANS5); exit 0
  285.       @echo ----------------------------- Ready.
  286.   
  287. ! clean: config.check
  288.       -for a in $(SUBDIRS); do cd $$a; $(MAKE) $@; cd ..; done; exit 0
  289.       $(RM) $(MANS) $(BINS) libcheck install.man install.bin suid.sh \
  290. !      _Makefile core autoconf.h.tmp
  291.   
  292.   realclean: clean _init
  293.       $(RM) config.check
  294. +     -rmdir new; exit 0
  295.       -for a in $(SUBDIRS); do $(MV) $$a/Makefile.init $$a/Makefile; done; \
  296.        exit 0
  297.   
  298. ! veryclean clobber: realclean
  299.   
  300.   _init:
  301.       sed -e '/^# Makefile.1 - mark/,$$ d' <Makefile >_Makefile
  302. diff -c procmail/config.h:1.17 procmail/config.h:1.19
  303. *** procmail/config.h:1.17    Fri Feb 19 16:21:51 1993
  304. --- procmail/config.h    Fri Feb 19 16:21:52 1993
  305. ***************
  306. *** 1,4 ****
  307. ! /*$Id: config.h,v 1.17 1993/02/02 15:26:42 berg Exp $*/
  308.   
  309.   /*#define sMAILBOX_SEPARATOR    "\1\1\1\1\n"    /* sTART- and eNDing separ.  */
  310.   /*#define eMAILBOX_SEPARATOR    "\1\1\1\1\n"    /* uncomment (one or both)
  311. --- 1,4 ----
  312. ! /*$Id: config.h,v 1.19 1993/02/11 12:07:58 berg Exp $*/
  313.   
  314.   /*#define sMAILBOX_SEPARATOR    "\1\1\1\1\n"    /* sTART- and eNDing separ.  */
  315.   /*#define eMAILBOX_SEPARATOR    "\1\1\1\1\n"    /* uncomment (one or both)
  316. ***************
  317. *** 101,109 ****
  318.    "^((Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently)-To):(.*[^a-zA-Z])?"
  319.   #define FROMDkey    "^FROM_DAEMON"
  320.   #define FROMDsubstitute "^(Precedence:.*(junk|bulk|list)|\
  321. ! (((Resent-)?(From|Sender)|X-Envelope-From):|From )(.*[^.a-z])?(\
  322.   Post(ma(st(er)?|n)|office)|Mailer|daemon|mmdf|root|uucp|LISTSERV|owner|\
  323. ! request|bounce|serv(ices?|er))([^.a-z]|$))" /* matches most kinds of daemons */
  324.   #define DEFshellmetas    "&|<>~;?*[]"            /* never put '$' in here */
  325.   #define DEFmaildir    "$HOME"
  326.   #define DEFdefault    "$ORGMAIL"
  327. --- 101,109 ----
  328.    "^((Resent-)?(To|Cc|Bcc)|(X-Envelope|Apparently)-To):(.*[^a-zA-Z])?"
  329.   #define FROMDkey    "^FROM_DAEMON"
  330.   #define FROMDsubstitute "^(Precedence:.*(junk|bulk|list)|\
  331. ! (((Resent-)?(From|Sender)|X-Envelope-From):|From )(.*[^.@a-z0-9])?(\
  332.   Post(ma(st(er)?|n)|office)|Mailer|daemon|mmdf|root|uucp|LISTSERV|owner|\
  333. ! request|bounce|serv(ices?|er))([^.a-z0-9]|$))"         /* matches most daemons */
  334.   #define DEFshellmetas    "&|<>~;?*[]"            /* never put '$' in here */
  335.   #define DEFmaildir    "$HOME"
  336.   #define DEFdefault    "$ORGMAIL"
  337. diff -c procmail/initmake:1.21 procmail/initmake:1.24
  338. *** procmail/initmake:1.21    Fri Feb 19 16:21:53 1993
  339. --- procmail/initmake    Fri Feb 19 16:21:53 1993
  340. ***************
  341. *** 1,6 ****
  342.   #! /bin/sh
  343.   :
  344. ! #$Id: initmake,v 1.21 1993/02/02 16:54:03 berg Exp $
  345.   
  346.   PATH=.:$PATH
  347.   BSHELL=$1
  348. --- 1,6 ----
  349.   #! /bin/sh
  350.   :
  351. ! #$Id: initmake,v 1.24 1993/02/11 12:08:01 berg Exp $
  352.   
  353.   PATH=.:$PATH
  354.   BSHELL=$1
  355. ***************
  356. *** 80,85 ****
  357. --- 80,86 ----
  358.   echo "$cc seems to work fine, using that as the C-compiler"
  359.   
  360.   cat >_autotst.c <<HERE
  361. + #include <stdio.h>
  362.   #include <sys/stat.h>
  363.   main()
  364.   { struct stat buf;return!&buf;
  365. ***************
  366. *** 220,226 ****
  367.   for a in $BINSS
  368.   do
  369.     echo                            >>src/_Makefile
  370. !   echo "../new/$a: $a ../new"                >>src/_Makefile
  371.     echo "    @\$(RM) \$@"                >>src/_Makefile
  372.     echo "    \$(LN) $a \$@"                >>src/_Makefile
  373.   done
  374. --- 221,227 ----
  375.   for a in $BINSS
  376.   do
  377.     echo                            >>src/_Makefile
  378. !   echo "../new/$a: $a ../config.check"            >>src/_Makefile
  379.     echo "    @\$(RM) \$@"                >>src/_Makefile
  380.     echo "    \$(LN) $a \$@"                >>src/_Makefile
  381.   done
  382. ***************
  383. *** 228,234 ****
  384.   for a in $MANSS
  385.   do
  386.     echo                            >>man/_Makefile
  387. !   echo "../new/$a: $a ../new"                >>man/_Makefile
  388.     echo "    @\$(RM) \$@"                >>man/_Makefile
  389.     echo "    \$(LN) $a \$@"                >>man/_Makefile
  390.   done
  391. --- 229,235 ----
  392.   for a in $MANSS
  393.   do
  394.     echo                            >>man/_Makefile
  395. !   echo "../new/$a: $a ../config.check"            >>man/_Makefile
  396.     echo "    @\$(RM) \$@"                >>man/_Makefile
  397.     echo "    \$(LN) $a \$@"                >>man/_Makefile
  398.   done
  399. ***************
  400. *** 238,244 ****
  401.     echo                            >>man/_Makefile
  402.     echo "$a.1: $a.man man.sed mansed"            >>man/_Makefile
  403.     echo \
  404. !    "    \$(SHELL) ./mansed \$(SHELL) $a.man \$@ \"\$(RM)\" \$(DEVNULL)" \
  405.      >>man/_Makefile
  406.   done
  407.   
  408. --- 239,245 ----
  409.     echo                            >>man/_Makefile
  410.     echo "$a.1: $a.man man.sed mansed"            >>man/_Makefile
  411.     echo \
  412. !    "    @\$(SHELL) ./mansed \$(SHELL) $a.man \$@ \"\$(RM)\" \$(DEVNULL)" \
  413.      >>man/_Makefile
  414.   done
  415.   
  416. ***************
  417. *** 247,253 ****
  418.     echo                            >>man/_Makefile
  419.     echo "$a.5: $a.man man.sed mansed"            >>man/_Makefile
  420.     echo \
  421. !    "    \$(SHELL) ./mansed \$(SHELL) $a.man \$@ \"\$(RM)\" \$(DEVNULL)" \
  422.      >>man/_Makefile
  423.   done
  424.   
  425. --- 248,254 ----
  426.     echo                            >>man/_Makefile
  427.     echo "$a.5: $a.man man.sed mansed"            >>man/_Makefile
  428.     echo \
  429. !    "    @\$(SHELL) ./mansed \$(SHELL) $a.man \$@ \"\$(RM)\" \$(DEVNULL)" \
  430.      >>man/_Makefile
  431.   done
  432.   
  433. ***************
  434. *** 256,260 ****
  435. --- 257,262 ----
  436.   
  437.   for a in $SUBDIRS
  438.   do
  439. +   echo "#" >>$a/_Makefile
  440.     $MV $a/_Makefile $a/Makefile
  441.   done
  442. diff -c procmail/examples/advanced:1.8 procmail/examples/advanced:1.9
  443. *** procmail/examples/advanced:1.8    Fri Feb 19 16:22:00 1993
  444. --- procmail/examples/advanced    Fri Feb 19 16:22:00 1993
  445. ***************
  446. *** 23,33 ****
  447.   I have the following suggestion to use as a .forward file (examples are for
  448.   sparc and sun3 architectures):
  449.   
  450. ! "|IFS=' ';if /usr/bin/sparc;then exec /home/berg/bin.sun4/procmail;else exec /home/berg/bin.sun3/procmail;fi #YOUR_LOGIN_NAME"
  451.   
  452.   or alternatively:
  453.   
  454. ! "|IFS=' ';exec /home/berg/bin.`/usr/bin/arch`/procmail #YOUR_LOGIN_NAME"
  455.   
  456.   Please note, in the .forward file there can NOT be any newlines between
  457.   the doublequotes, i.e. the former example *has* to be typed in as one long
  458. --- 23,33 ----
  459.   I have the following suggestion to use as a .forward file (examples are for
  460.   sparc and sun3 architectures):
  461.   
  462. ! |"IFS=' ';if /usr/bin/sparc;then exec /home/berg/bin.sun4/procmail;else exec /home/berg/bin.sun3/procmail;fi #YOUR_LOGIN_NAME"
  463.   
  464.   or alternatively:
  465.   
  466. ! |"IFS=' ';exec /home/berg/bin.`/usr/bin/arch`/procmail #YOUR_LOGIN_NAME"
  467.   
  468.   Please note, in the .forward file there can NOT be any newlines between
  469.   the doublequotes, i.e. the former example *has* to be typed in as one long
  470. ***************
  471. *** 39,45 ****
  472.   .forward file:
  473.   
  474.   YOUR_LOGIN_NAME@your.favourite.machine
  475. ! "|IFS=' ';if test .`/bin/uname -n` = .your.favourite.machine; then /exec /home/berg/bin/procmail; else exit 0; fi #YOUR_LOGIN_NAME"
  476.   
  477.   The leading dots are important.     Check what `/bin/uname -n` returns on
  478.   your.favourite.machine, and substitute that for your.favourite.machine in the
  479. --- 39,45 ----
  480.   .forward file:
  481.   
  482.   YOUR_LOGIN_NAME@your.favourite.machine
  483. ! |"IFS=' ';if test .`/bin/uname -n` = .your.favourite.machine; then /exec /home/berg/bin/procmail; else exit 0; fi #YOUR_LOGIN_NAME"
  484.   
  485.   The leading dots are important.     Check what `/bin/uname -n` returns on
  486.   your.favourite.machine, and substitute that for your.favourite.machine in the
  487. diff -c procmail/examples/forward:1.1.1.1 procmail/examples/forward:1.2
  488. *** procmail/examples/forward:1.1.1.1    Fri Feb 19 16:22:02 1993
  489. --- procmail/examples/forward    Fri Feb 19 16:22:02 1993
  490. ***************
  491. *** 1 ****
  492. ! "|IFS=' ';exec /usr/local/bin/procmail #YOUR_LOGIN_NAME"
  493. --- 1 ----
  494. ! |"IFS=' ';exec /usr/local/bin/procmail #YOUR_LOGIN_NAME"
  495. diff -c procmail/mailinglist/FEATURES:1.4 procmail/mailinglist/FEATURES:1.5
  496. *** procmail/mailinglist/FEATURES:1.4    Fri Feb 19 16:22:05 1993
  497. --- procmail/mailinglist/FEATURES    Fri Feb 19 16:22:05 1993
  498. ***************
  499. *** 4,10 ****
  500.       + Convenient and simple removal of existing mailinglists
  501.       + Fully automated subscription/unsubscription/help-request processing
  502.         (no operator intervention needed)
  503. !     + Enough intelligence to overcome the stupidity of some subscribers
  504.         (will direct subscribe and unsubscribe requests away from the
  505.         regular list and automatically onto the -request address)
  506.       + No hardwired format for (un)subscribe requests (i.e. new subscribers
  507. --- 4,10 ----
  508.       + Convenient and simple removal of existing mailinglists
  509.       + Fully automated subscription/unsubscription/help-request processing
  510.         (no operator intervention needed)
  511. !     + Enough intelligence to overcome the ignorance of some subscribers
  512.         (will direct subscribe and unsubscribe requests away from the
  513.         regular list and automatically onto the -request address)
  514.       + No hardwired format for (un)subscribe requests (i.e. new subscribers
  515. diff -c procmail/mailinglist/Manual:1.4 procmail/mailinglist/Manual:1.5
  516. *** procmail/mailinglist/Manual:1.4    Fri Feb 19 16:22:06 1993
  517. --- procmail/mailinglist/Manual    Fri Feb 19 16:22:06 1993
  518. ***************
  519. *** 1,4 ****
  520. ! $Id: Manual,v 1.4 1993/01/29 13:32:44 berg Exp $
  521.   
  522.           Written by Stephen R. van den Berg.
  523.                       berg@pool.informatik.rwth-aachen.de
  524. --- 1,4 ----
  525. ! $Id: Manual,v 1.5 1993/02/18 16:31:08 berg Exp $
  526.   
  527.           Written by Stephen R. van den Berg.
  528.                       berg@pool.informatik.rwth-aachen.de
  529. ***************
  530. *** 10,15 ****
  531. --- 10,16 ----
  532.           3. Customisation
  533.           4. The archive server
  534.           5. The format of the dist file
  535. +         6. Multigram and the thresholds in rc.init/rc.custom
  536.   
  537.   
  538.   1. Creating and removing mailinglists
  539. ***************
  540. *** 216,218 ****
  541. --- 217,269 ----
  542.   Not allowed by multigram (although sendmail doesn't mind):
  543.       (some comment) joe@some.where
  544.       some comment <joe@some.where>
  545. + 6. Multigram and the thresholds in rc.init/rc.custom
  546. +    -------------------------------------------------
  547. + The rc.init and rc.custom scripts define some threshold values:
  548. +     match_threshold, off_threshold, reject_threshold, submit_threshold.
  549. + These values are fed to multigram as a cut-off value with which to decide
  550. + if a certain mail address is on a list.
  551. + The higher the threshold, the better the match must be.     The thresholds
  552. + have a scale from -16383 to 32767.  This means that, for instance a threshold
  553. + of 30730 can be used to find only mailaddresses that are almost verbatim
  554. + on the list.  A value of 24476 on the other hand allows for some error
  555. + (like mailaddresses munged by gateways etc.) in finding matches to the
  556. + list.
  557. + The values 30730 and 24476 are somewhat arbitrary values which seem
  558. + to work well for the particular problems at hand.
  559. + To get a feeling for the values computed by multigram you can do
  560. + the following test:
  561. +     Create a file with the same format as the distfile, fill it with
  562. +     any number of addresses you like (e.g. you could take an existing
  563. +     distfile).
  564. +     Now make a copy of this `distfile' and alter some of the addresses
  565. +     a bit (like omit one character, or add some gateway information,
  566. +     switch two words, change it into an uucp address, etc.).
  567. +     Next you should call up multigram with the following command line:
  568. +         multigram -l-16000 -b300 pseudo_distfile <altered_distfile
  569. +     Multigram will display up the 300 best matches it found after
  570. +     crossreferencing altered_distfile and pseudo_distfile.
  571. +     The output produced by multigram can be disected as follows:
  572. +         lineno. name1 goodness name2
  573. +     Lineno. and name1 refer to the line number in pseudo_distfile which
  574. +     contains the mailaddress name1.     Goodness is the metric that
  575. +     corresponds to the aforementioned threshold values, and name2 is
  576. +     the matching mailaddress from altered_distfile (which is usually
  577. +     the incoming mail).
  578. +     Once you get the hang of it you can play around a bit with the
  579. +     entries in altered_distfile by mutilating them more and more in
  580. +     order to see what multigram makes of it (try inserting some non-
  581. +     existing addresses as well).
  582. diff -c procmail/mailinglist/install.sh:1.10 procmail/mailinglist/install.sh:1.12
  583. *** procmail/mailinglist/install.sh:1.10    Fri Feb 19 16:22:07 1993
  584. --- procmail/mailinglist/install.sh    Fri Feb 19 16:22:08 1993
  585. ***************
  586. *** 1,6 ****
  587.   #! /bin/sh
  588.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  589. ! #$Id: install.sh,v 1.10 1993/01/28 14:21:59 berg Exp $
  590.   
  591.   test $# != 1 && echo "Usage: install.sh target-directory" && exit 1
  592.   
  593. --- 1,6 ----
  594.   #! /bin/sh
  595.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  596. ! #$Id: install.sh,v 1.12 1993/02/11 13:48:36 berg Exp $
  597.   
  598.   test $# != 1 && echo "Usage: install.sh target-directory" && exit 1
  599.   
  600. ***************
  601. *** 39,47 ****
  602. --- 39,55 ----
  603.     fi
  604.   done
  605.   
  606. + cd ../src
  607. + test -f multigram || make multigram
  608. + cp multigram "$target/.bin"
  609. + cd ../mailinglist
  610.   cp Manual "$target/.etc"
  611.   mv -f "$target/.bin/procmail" "$target/.bin/.procmail" 2>/dev/null
  612.   chmod 0755 $target/.bin/*
  613. + ln -f "$target/.bin/multigram" "$target/.bin/idhash" 2>/dev/null
  614. + ln -f "$target/.bin/multigram" "$target/.bin/flist" 2>/dev/null
  615. + chmod 04755 "$target/.bin/flist"
  616.   mv -f "$target/.bin/.procmail" "$target/.bin/procmail" 2>/dev/null
  617.   
  618.   for a in $DIRS
  619. ***************
  620. *** 48,63 ****
  621.   do
  622.     ls -ld "$target/.$a" $target/.$a/*
  623.   done
  624. - cd ../src
  625. - test -f multigram || make multigram
  626. - cp multigram "$target/.bin"
  627. - cd ../mailinglist
  628. - ln -f "$target/.bin/multigram" "$target/.bin/idhash" 2>/dev/null
  629. - ln -f "$target/.bin/multigram" "$target/.bin/flist" 2>/dev/null
  630. - chmod 04755 "$target/.bin/flist"
  631. - ls -l "$target/.bin/multigram" "$target/.bin/idhash" "$target/.bin/flist"
  632.   
  633.   echo Creating link from .etc/rc.main to .procmailrc
  634.   rm -f "$target/.procmailrc"
  635. --- 56,61 ----
  636. diff -c procmail/mailinglist/bin/arch_retrieve:1.6 procmail/mailinglist/bin/arch_retrieve:1.9
  637. *** procmail/mailinglist/bin/arch_retrieve:1.6    Fri Feb 19 16:22:10 1993
  638. --- procmail/mailinglist/bin/arch_retrieve    Fri Feb 19 16:22:11 1993
  639. ***************
  640. *** 1,6 ****
  641.   #! /bin/sh
  642.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  643. ! #$Id: arch_retrieve,v 1.6 1993/02/02 15:26:48 berg Exp $
  644.   
  645.   test=test        # /bin/test
  646.   echo=echo        # /bin/echo
  647. --- 1,6 ----
  648.   #! /bin/sh
  649.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  650. ! #$Id: arch_retrieve,v 1.9 1993/02/11 14:00:08 berg Exp $
  651.   
  652.   test=test        # /bin/test
  653.   echo=echo        # /bin/echo
  654. ***************
  655. *** 20,25 ****
  656. --- 20,34 ----
  657.   from=`$echo "arch_retrieve:" \`$cat $tmpfrom\` requested`
  658.   $cat /dev/null >$tmpfrom
  659.   
  660. + case "$X_ENVELOPE_TO" in
  661. +   *$list-request*) wrongaddress="" ;;
  662. +   *) wrongaddress="
  663. + WARNING:
  664. +     Please try to use '$listreq'
  665. +     the next time when issuing archive server requests.
  666. + " ;;
  667. + esac
  668.   $formail -k -xSubject: |
  669.    $sed -e '/^--/,$ d' -e 's/^[     ]*archive[     ]//' \
  670.     -e 's/[     ]archive\/*/ /g' |
  671. ***************
  672. *** 40,45 ****
  673. --- 49,56 ----
  674.              ( $formail -rt -I"Subject: archive retrieval: $1" \
  675.                 -i"From: $listreq" -A"X-Loop: $listaddr" \
  676.                 -I"Precedence: bulk" <$tmprequest
  677. +              $test ! -z "$wrongaddress" && $echo "$wrongaddress" &&
  678. +               wrongaddress=""
  679.                if $test -f "./$1"
  680.                then
  681.               $echo "File: $1"
  682. ***************
  683. *** 64,69 ****
  684. --- 75,82 ----
  685.              ( $formail -rt -I"Subject: archive retrieval: ls $1" \
  686.                 -i"From: $listreq" -A"X-Loop: $listaddr" \
  687.                 -I"Precedence: bulk" <$tmprequest
  688. +              $test ! -z "$wrongaddress" && $echo "$wrongaddress" &&
  689. +               wrongaddress=""
  690.                if $test -r "./$1"
  691.                then
  692.               $echo "ls -l $1"
  693. ***************
  694. *** 85,90 ****
  695. --- 98,104 ----
  696.          ( $formail -rt -I"Subject: archive retrieval: ls $1" \
  697.         -i"From: $listreq" -A"X-Loop: $listaddr" -I"Precedence: bulk" \
  698.         <$tmprequest
  699. +      $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress=""
  700.        $echo "This archive server knows the following commands:"
  701.        $echo ""
  702.        $echo "get filename ..."
  703. diff -c procmail/mailinglist/bin/createlist:1.12 procmail/mailinglist/bin/createlist:1.13
  704. *** procmail/mailinglist/bin/createlist:1.12    Fri Feb 19 16:22:12 1993
  705. --- procmail/mailinglist/bin/createlist    Fri Feb 19 16:22:12 1993
  706. ***************
  707. *** 5,11 ****
  708.   #                                    #
  709.   #    Created by S.R. van den Berg, The Netherlands            #
  710.   #########################################################################
  711. ! #$Id: createlist,v 1.12 1993/01/28 15:18:25 berg Exp $
  712.   
  713.   defaults=.etc
  714.   
  715. --- 5,11 ----
  716.   #                                    #
  717.   #    Created by S.R. van den Berg, The Netherlands            #
  718.   #########################################################################
  719. ! #$Id: createlist,v 1.13 1993/02/19 15:04:25 berg Exp $
  720.   
  721.   defaults=.etc
  722.   
  723. ***************
  724. *** 152,158 ****
  725.   
  726.   echo "Now make the following entries in your /usr/lib/aliases file:" 1>&2
  727.   echo \#########################################################################
  728. ! echo "$list: \"|IFS=' ';exec $flist $list\""
  729. ! echo "$list-request: \"|IFS=' ';exec $flist $list-request\""
  730.   echo "$list-dist: :include:$listdir/$list/dist"
  731.   echo \#########################################################################
  732. --- 152,158 ----
  733.   
  734.   echo "Now make the following entries in your /usr/lib/aliases file:" 1>&2
  735.   echo \#########################################################################
  736. ! echo "$list: |\"IFS=' ';exec $flist $list\""
  737. ! echo "$list-request: |\"IFS=' ';exec $flist $list-request\""
  738.   echo "$list-dist: :include:$listdir/$list/dist"
  739.   echo \#########################################################################
  740. diff -c procmail/mailinglist/bin/subscribe:1.7 procmail/mailinglist/bin/subscribe:1.10
  741. *** procmail/mailinglist/bin/subscribe:1.7    Fri Feb 19 16:22:13 1993
  742. --- procmail/mailinglist/bin/subscribe    Fri Feb 19 16:22:13 1993
  743. ***************
  744. *** 1,6 ****
  745.   #! /bin/sh
  746.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  747. ! #$Id: subscribe,v 1.7 1993/02/02 16:54:12 berg Exp $
  748.   
  749.   test=test        # /bin/test
  750.   echo=echo        # /bin/echo
  751. --- 1,6 ----
  752.   #! /bin/sh
  753.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  754. ! #$Id: subscribe,v 1.10 1993/02/11 14:00:14 berg Exp $
  755.   
  756.   test=test        # /bin/test
  757.   echo=echo        # /bin/echo
  758. ***************
  759. *** 17,22 ****
  760. --- 17,31 ----
  761.   tmpfrom=tmp.from
  762.   subscribetxt=subscribe.txt
  763.   
  764. + case "$X_ENVELOPE_TO" in
  765. +   *$list-request*) wrongaddress="" ;;
  766. +   *) wrongaddress="
  767. + WARNING:
  768. +     Please try to use '$listreq'
  769. +     the next time when issuing (un)subscribe requests.
  770. + " ;;
  771. + esac
  772.   subscraddr=""
  773.   
  774.   address=`$formail -k -xSubject: |
  775. ***************
  776. *** 58,63 ****
  777. --- 67,74 ----
  778.   
  779.   $formail -i"From: $listreq" -rtA"X-Loop: $listaddr" -I"Precedence: bulk" \
  780.    <$tmprequest
  781. + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress=""
  782.   
  783.   $echo "You have added to the subscriber list of:"
  784.   $echo
  785. diff -c procmail/mailinglist/bin/unsubscribe:1.6 procmail/mailinglist/bin/unsubscribe:1.9
  786. *** procmail/mailinglist/bin/unsubscribe:1.6    Fri Feb 19 16:22:14 1993
  787. --- procmail/mailinglist/bin/unsubscribe    Fri Feb 19 16:22:15 1993
  788. ***************
  789. *** 1,6 ****
  790.   #! /bin/sh
  791.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  792. ! #$Id: unsubscribe,v 1.6 1993/02/02 15:26:54 berg Exp $
  793.   
  794.   test=test        # /bin/test
  795.   echo=echo        # /bin/echo
  796. --- 1,6 ----
  797.   #! /bin/sh
  798.   : &&O= || exec /bin/sh $0 $argv:q # we're in a csh, feed myself to sh
  799. ! #$Id: unsubscribe,v 1.9 1993/02/11 14:00:17 berg Exp $
  800.   
  801.   test=test        # /bin/test
  802.   echo=echo        # /bin/echo
  803. ***************
  804. *** 16,23 ****
  805. --- 16,34 ----
  806.   tmpfrom=tmp.from
  807.   dist=dist
  808.   
  809. + case "$X_ENVELOPE_TO" in
  810. +   *$list-request*) wrongaddress="" ;;
  811. +   *) wrongaddress="
  812. + WARNING:
  813. +     Please try to use '$listreq'
  814. +     the next time when issuing (un)subscribe requests.
  815. + " ;;
  816. + esac
  817.   $formail -i"From: $listreq" -rtA"X-Loop: $listaddr" -I"Precedence: junk" \
  818.    <$tmprequest
  819. + $test ! -z "$wrongaddress" && $echo "$wrongaddress" && wrongaddress=""
  820.   
  821.   fromaddr="`$cat $tmpfrom`"
  822.   
  823. diff -c procmail/mailinglist/etc/rc.custom:1.5 procmail/mailinglist/etc/rc.custom:1.6
  824. *** procmail/mailinglist/etc/rc.custom:1.5    Fri Feb 19 16:22:18 1993
  825. --- procmail/mailinglist/etc/rc.custom    Fri Feb 19 16:22:18 1993
  826. ***************
  827. *** 15,22 ****
  828.   #maxhist    =    8        # bounce history limit
  829.   #minbounce    =    3        # no. of bounces before removal
  830.   #cutoff_bounce    =    256        # lines to keep in bounce processing
  831. ! #match_threshold=    28672        # for close matches to the list
  832. ! #off_threshold    =    20480        # for loosely finding your name
  833.   
  834.   #reject_threshold=    $match_threshold # to determine if you may subscribe
  835.   #submit_threshold=    $match_threshold # to determine if you may submit
  836. --- 15,22 ----
  837.   #maxhist    =    8        # bounce history limit
  838.   #minbounce    =    3        # no. of bounces before removal
  839.   #cutoff_bounce    =    256        # lines to keep in bounce processing
  840. ! #match_threshold=    30730        # for close matches to the list
  841. ! #off_threshold    =    24476        # for loosely finding your name
  842.   
  843.   #reject_threshold=    $match_threshold # to determine if you may subscribe
  844.   #submit_threshold=    $match_threshold # to determine if you may submit
  845. diff -c procmail/mailinglist/etc/rc.init:1.6 procmail/mailinglist/etc/rc.init:1.7
  846. *** procmail/mailinglist/etc/rc.init:1.6    Fri Feb 19 16:22:20 1993
  847. --- procmail/mailinglist/etc/rc.init    Fri Feb 19 16:22:20 1993
  848. ***************
  849. *** 30,36 ****
  850.   # rc.request    rcfile used when processing requests
  851.   # rc.custom    rcfile that contains all the customisations per list
  852.   
  853. ! #$Id: rc.init,v 1.6 1993/01/27 20:33:00 berg Exp $
  854.   
  855.   PATH=.:../.bin:/bin:/usr/bin:/usr/local/bin    # setup a decent path
  856.   SHELL=/bin/sh                # to prevent surprises
  857. --- 30,36 ----
  858.   # rc.request    rcfile used when processing requests
  859.   # rc.custom    rcfile that contains all the customisations per list
  860.   
  861. ! #$Id: rc.init,v 1.7 1993/02/10 17:07:39 berg Exp $
  862.   
  863.   PATH=.:../.bin:/bin:/usr/bin:/usr/local/bin    # setup a decent path
  864.   SHELL=/bin/sh                # to prevent surprises
  865. ***************
  866. *** 72,80 ****
  867.   
  868.   FROM_MAILER_DAEMON='^(Precedence:.*junk|'\
  869.   '(((Resent-)?(From|Sender)|X-Envelope-From):|From )'\
  870. ! '(.*[^.a-z])?('\
  871.   'Post(ma(st(er)?|n)|office)|Mailer|daemon|mmdf|root|uucp|serv(ices?|er)'\
  872. ! ')([^.a-z]|$))'
  873.   
  874.   RC_INIT                    # clear this one from the environment
  875.                       # so that we include this file only
  876. --- 72,80 ----
  877.   
  878.   FROM_MAILER_DAEMON='^(Precedence:.*junk|'\
  879.   '(((Resent-)?(From|Sender)|X-Envelope-From):|From )'\
  880. ! '(.*[^.@a-z0-9])?('\
  881.   'Post(ma(st(er)?|n)|office)|Mailer|daemon|mmdf|root|uucp|serv(ices?|er)'\
  882. ! ')([^.a-z0-9]|$))'
  883.   
  884.   RC_INIT                    # clear this one from the environment
  885.                       # so that we include this file only
  886. diff -c procmail/mailinglist/etc/rc.request:1.7 procmail/mailinglist/etc/rc.request:1.8
  887. *** procmail/mailinglist/etc/rc.request:1.7    Fri Feb 19 16:22:21 1993
  888. --- procmail/mailinglist/etc/rc.request    Fri Feb 19 16:22:22 1993
  889. ***************
  890. *** 6,12 ****
  891.   # shortly before writing out the new version of this file (remove the lockfile
  892.   # afterwards of course)
  893.   
  894. ! #$Id: rc.request,v 1.7 1993/02/02 15:26:57 berg Exp $
  895.   
  896.   INCLUDERC=$RC_INIT
  897.   INCLUDERC=$RC_CUSTOM
  898. --- 6,12 ----
  899.   # shortly before writing out the new version of this file (remove the lockfile
  900.   # afterwards of course)
  901.   
  902. ! #$Id: rc.request,v 1.8 1993/02/10 17:07:41 berg Exp $
  903.   
  904.   INCLUDERC=$RC_INIT
  905.   INCLUDERC=$RC_CUSTOM
  906. ***************
  907. *** 52,58 ****
  908.   #
  909.   
  910.       :1BHA:dist.lock
  911. !     ^((Subject:)?[     ]*(remove|unsub)|(.*[^a-z])?(unsubscri.*|\
  912.                      (remove .* from|take .* off) .* list)([^a-z]|$))
  913.       | unsubscribe | $SENDMAIL $sendmailOPT `cat tmp.from`
  914.   
  915. --- 52,58 ----
  916.   #
  917.   
  918.       :1BHA:dist.lock
  919. !     ^((Subject:)?[a-z,.     ]*(remove|unsub)|(.*[^a-z])?(unsubscri.*|\
  920.                      (remove .* from|take .* off) .* list)([^a-z]|$))
  921.       | unsubscribe | $SENDMAIL $sendmailOPT `cat tmp.from`
  922.   
  923. ***************
  924. *** 63,69 ****
  925.   #
  926.   
  927.       :3BHA:dist.lock
  928. !     ^((Subject:)?[     ]*(add|sub.*[@!])|(.*[^a-z])?(subscri.*|\
  929.                         (add .* to|put .* on) .* list)([^a-z]|$))
  930.       !?multigram -b1 -l$reject_threshold reject
  931.       !?multigram -b1 -l$reject_threshold dist
  932. --- 63,69 ----
  933.   #
  934.   
  935.       :3BHA:dist.lock
  936. !     ^((Subject:)?[a-z,.     ]*(add|sub.*[@!])|(.*[^a-z])?(subscri.*|\
  937.                         (add .* to|put .* on) .* list)([^a-z]|$))
  938.       !?multigram -b1 -l$reject_threshold reject
  939.       !?multigram -b1 -l$reject_threshold dist
  940. ***************
  941. *** 134,140 ****
  942.          -A "X-Diagnostic: `multigram -b1 -l$reject_threshold reject`"
  943.   
  944.       :2A BH wfh
  945. !     ^((Subject:)?[     ]*(add|sub.*[@!])|(.*[^a-z])?(subscri.*|\
  946.                         (add .* to|put .* on) .* list)([^a-z]|$))
  947.       ?multigram -b1 -l$reject_threshold dist
  948.       | formail -A "X-Diagnostic: Already on the subscriber list" \
  949. --- 134,140 ----
  950.          -A "X-Diagnostic: `multigram -b1 -l$reject_threshold reject`"
  951.   
  952.       :2A BH wfh
  953. !     ^((Subject:)?[a-z,.     ]*(add|sub.*[@!])|(.*[^a-z])?(subscri.*|\
  954.                         (add .* to|put .* on) .* list)([^a-z]|$))
  955.       ?multigram -b1 -l$reject_threshold dist
  956.       | formail -A "X-Diagnostic: Already on the subscriber list" \
  957. diff -c procmail/mailinglist/etc/rc.submit:1.10 procmail/mailinglist/etc/rc.submit:1.11
  958. *** procmail/mailinglist/etc/rc.submit:1.10    Fri Feb 19 16:22:23 1993
  959. --- procmail/mailinglist/etc/rc.submit    Fri Feb 19 16:22:23 1993
  960. ***************
  961. *** 6,12 ****
  962.   # shortly before writing out the new version of this file (remove the lockfile
  963.   # afterwards of course)
  964.   
  965. ! #$Id: rc.submit,v 1.10 1993/02/02 15:26:59 berg Exp $
  966.   
  967.   INCLUDERC=$RC_INIT
  968.   INCLUDERC=$RC_CUSTOM
  969. --- 6,12 ----
  970.   # shortly before writing out the new version of this file (remove the lockfile
  971.   # afterwards of course)
  972.   
  973. ! #$Id: rc.submit,v 1.11 1993/02/11 12:08:21 berg Exp $
  974.   
  975.   INCLUDERC=$RC_INIT
  976.   INCLUDERC=$RC_CUSTOM
  977. ***************
  978. *** 13,19 ****
  979.   
  980.   #
  981.   # The following recipe makes sure that:
  982. ! #    The mail was not sent to the request address.
  983.   #    It does not look like an administrative request.
  984.   #    It wasn't sent by this list itself.
  985.   #    It wasn't sent by a daemon (misdirected bounce message perhaps).
  986. --- 13,19 ----
  987.   
  988.   #
  989.   # The following recipe makes sure that:
  990. ! #    The mail has a sane size (i.e. it is not inordinately big)
  991.   #    It does not look like an administrative request.
  992.   #    It wasn't sent by this list itself.
  993.   #    It wasn't sent by a daemon (misdirected bounce message perhaps).
  994. ***************
  995. *** 21,32 ****
  996.   # doing so, also check if this subscriber wants to receive copies.
  997.   #
  998.   
  999. ! :6Wh
  1000.       < $size_limit
  1001.       $!^$X_COMMAND:
  1002. !     !^TO.*-request
  1003. !     !^Subject:( *(help|info) *$|.*( \
  1004. !     (add .* to|remove .* from|take .* off|put .* on) .* list|subscri(be|ption))
  1005.       $!^X-Loop: $listaddr
  1006.       $!$FROM_MAILER_DAEMON
  1007.   METOO=    | formail -X"From " -xFrom: -xReply-To: -xSender: -xResent-From: \
  1008. --- 21,33 ----
  1009.   # doing so, also check if this subscriber wants to receive copies.
  1010.   #
  1011.   
  1012. ! :5Wh
  1013.       < $size_limit
  1014.       $!^$X_COMMAND:
  1015. !     !^Subject:([     ]*(archive([     ]+((send|get)(me)?|gimme|retrieve|\
  1016. !      mail|ls|dir(ectory)?|list|show|help|info)([     ]|$)|[        ]*$)|\
  1017. !      (help|info)[     ]*$)|[^:]*( (add .* to|remove .* from|take .* off|\
  1018. !      put .* on) .* list|subscri(be|ption))
  1019.       $!^X-Loop: $listaddr
  1020.       $!$FROM_MAILER_DAEMON
  1021.   METOO=    | formail -X"From " -xFrom: -xReply-To: -xSender: -xResent-From: \
  1022. diff -c procmail/man/Makefile.0:1.3 procmail/man/Makefile.0:1.4
  1023. *** procmail/man/Makefile.0:1.3    Fri Feb 19 16:22:26 1993
  1024. --- procmail/man/Makefile.0    Fri Feb 19 16:22:26 1993
  1025. ***************
  1026. *** 1,5 ****
  1027.   
  1028. ! #$Id: Makefile.0,v 1.3 1992/11/11 13:58:11 berg Exp $
  1029.   
  1030.   all: $(MANSS)
  1031.   
  1032. --- 1,5 ----
  1033.   
  1034. ! #$Id: Makefile.0,v 1.4 1993/02/10 19:17:47 berg Exp $
  1035.   
  1036.   all: $(MANSS)
  1037.   
  1038. ***************
  1039. *** 6,18 ****
  1040.   make:
  1041.       @$(SHELL) -c "exit 0"
  1042.   
  1043. ! ../new:
  1044. !     @-mkdir $@ 2>$(DEVNULL); exit 0
  1045.   
  1046.   man.sed: man_sed
  1047.   
  1048.   man_sed:
  1049. !     cd ../src; $(MAKE) ../man/man.sed
  1050.   
  1051.   clean:
  1052.       $(RM) $(MANSS) man.sed _Makefile core
  1053. --- 6,18 ----
  1054.   make:
  1055.       @$(SHELL) -c "exit 0"
  1056.   
  1057. ! ../config.check:
  1058. !     @cd ..; $(MAKE) config.check
  1059.   
  1060.   man.sed: man_sed
  1061.   
  1062.   man_sed:
  1063. !     @cd ../src; $(MAKE) ../man/man.sed
  1064.   
  1065.   clean:
  1066.       $(RM) $(MANSS) man.sed _Makefile core
  1067. diff -c procmail/man/procmailrc.man:1.14 procmail/man/procmailrc.man:1.15
  1068. *** procmail/man/procmailrc.man:1.14    Fri Feb 19 16:22:27 1993
  1069. --- procmail/man/procmailrc.man    Fri Feb 19 16:22:28 1993
  1070. ***************
  1071. *** 1,4 ****
  1072. ! .Id $Id: procmailrc.man,v 1.14 1993/01/13 15:20:37 berg Exp $
  1073.   .TH PROCMAILRC 5 \*(Dt BuGless
  1074.   .na
  1075.   .SH NAME
  1076. --- 1,4 ----
  1077. ! .Id $Id: procmailrc.man,v 1.15 1993/02/10 17:07:45 berg Exp $
  1078.   .TH PROCMAILRC 5 \*(Dt BuGless
  1079.   .na
  1080.   .SH NAME
  1081. ***************
  1082. *** 507,514 ****
  1083.   .PP
  1084.   When assigning boolean values to variables like VERBOSE, DELIVERED or COMSAT,
  1085.   procmail accepts as true every string starting with: a non-zero value, `on',
  1086. ! `y' or `t'.  False is every string starting with: a zero value, `off', `n' or
  1087. ! `f'.
  1088.   .PP
  1089.   If the action line of a recipe specifies a program, a sole backslash-newline
  1090.   pair in it on an otherwise empty line will be converted into a newline.
  1091. --- 507,514 ----
  1092.   .PP
  1093.   When assigning boolean values to variables like VERBOSE, DELIVERED or COMSAT,
  1094.   procmail accepts as true every string starting with: a non-zero value, `on',
  1095. ! `y', `t' or `e'.  False is every string starting with: a zero value, `off',
  1096. ! `n', `f' or 'd'.
  1097.   .PP
  1098.   If the action line of a recipe specifies a program, a sole backslash-newline
  1099.   pair in it on an otherwise empty line will be converted into a newline.
  1100. diff -c procmail/src/Makefile.0:1.8 procmail/src/Makefile.0:1.11
  1101. *** procmail/src/Makefile.0:1.8    Fri Feb 19 16:22:32 1993
  1102. --- procmail/src/Makefile.0    Fri Feb 19 16:22:32 1993
  1103. ***************
  1104. *** 1,5 ****
  1105.   
  1106. ! #$Id: Makefile.0,v 1.8 1992/11/12 11:38:12 berg Exp $
  1107.   
  1108.   PM_OBJ=cstdio.$(O) common.$(O) exopen.$(O) goodies.$(O) locking.$(O) \
  1109.    mailfold.$(O) misc.$(O) pipes.$(O) regexp.$(O) robust.$(O) sublib.$(O)
  1110. --- 1,5 ----
  1111.   
  1112. ! #$Id: Makefile.0,v 1.11 1993/02/11 13:10:43 berg Exp $
  1113.   
  1114.   PM_OBJ=cstdio.$(O) common.$(O) exopen.$(O) goodies.$(O) locking.$(O) \
  1115.    mailfold.$(O) misc.$(O) pipes.$(O) regexp.$(O) robust.$(O) sublib.$(O)
  1116. ***************
  1117. *** 22,34 ****
  1118.   
  1119.   mailstat: ../examples/mailstat
  1120.       cp ../examples/$@ .
  1121. !     chmod 0755 $@
  1122.   
  1123.   multigram: multigram.$(O) sublib.$(O) ecommon.$(O)
  1124.       $(CC) $(CFLAGS) $@.$(O) sublib.$(O) ecommon.$(O) -o $@ $(LDFLAGS)
  1125.   
  1126. ! ../new:
  1127. !     @-mkdir $@ 2>$(DEVNULL); exit 0
  1128.   
  1129.   _autotst: _autotst.$(O)
  1130.       $(CC) $(CFLAGS) $@.$(O) -o $@ $(LDFLAGS)
  1131. --- 22,34 ----
  1132.   
  1133.   mailstat: ../examples/mailstat
  1134.       cp ../examples/$@ .
  1135. !     @chmod 0755 $@
  1136.   
  1137.   multigram: multigram.$(O) sublib.$(O) ecommon.$(O)
  1138.       $(CC) $(CFLAGS) $@.$(O) sublib.$(O) ecommon.$(O) -o $@ $(LDFLAGS)
  1139.   
  1140. ! ../config.check:
  1141. !     @cd ..; $(MAKE) config.check
  1142.   
  1143.   _autotst: _autotst.$(O)
  1144.       $(CC) $(CFLAGS) $@.$(O) -o $@ $(LDFLAGS)
  1145. ***************
  1146. *** 109,117 ****
  1147.   
  1148.   ../man/man.sed: manconf.c ../autoconf.h ../config.h includes.h procmail.h
  1149.   ../man/man.sed: ../patchlevel.h
  1150. !     $(CC) $(CFLAGS) -o _autotst manconf.c $(LDFLAGS)
  1151. !     ./_autotst >$@
  1152. !     $(RM) _autotst
  1153.   
  1154.   clean:
  1155.       $(RM) procmail.$(O) $(PM_OBJ) lockfile.$(O) $(LF_OBJ) formail.$O \
  1156. --- 109,117 ----
  1157.   
  1158.   ../man/man.sed: manconf.c ../autoconf.h ../config.h includes.h procmail.h
  1159.   ../man/man.sed: ../patchlevel.h
  1160. !     @$(CC) $(CFLAGS) -o _autotst manconf.c $(LDFLAGS)
  1161. !     @./_autotst >$@
  1162. !     @$(RM) _autotst
  1163.   
  1164.   clean:
  1165.       $(RM) procmail.$(O) $(PM_OBJ) lockfile.$(O) $(LF_OBJ) formail.$O \
  1166. diff -c procmail/src/autoconf:1.32 procmail/src/autoconf:1.35
  1167. *** procmail/src/autoconf:1.32    Fri Feb 19 16:22:34 1993
  1168. --- procmail/src/autoconf    Fri Feb 19 16:22:34 1993
  1169. ***************
  1170. *** 1,6 ****
  1171.   #! /bin/sh
  1172.   :
  1173. ! #$Id: autoconf,v 1.32 1993/02/04 12:44:45 berg Exp $
  1174.   
  1175.   # All possible entries in autoconf.h:
  1176.   
  1177. --- 1,6 ----
  1178.   #! /bin/sh
  1179.   :
  1180. ! #$Id: autoconf,v 1.35 1993/02/10 19:21:41 berg Exp $
  1181.   
  1182.   # All possible entries in autoconf.h:
  1183.   
  1184. ***************
  1185. *** 81,91 ****
  1186.    echo "Don't start this script directly, use \`make ../autoconf.h'" && exit 1
  1187.   
  1188.   export SHELL PATH
  1189.   if test -f $ACONF
  1190.   then
  1191. !  trap "exit 1" 1 2 3 15
  1192.   else
  1193. !  trap "$RM $ACONF; exit 1" 1 2 3 15
  1194.   fi
  1195.   
  1196.   if test ! -z "$LD_LIBRARY_PATH"
  1197. --- 81,96 ----
  1198.    echo "Don't start this script directly, use \`make ../autoconf.h'" && exit 1
  1199.   
  1200.   export SHELL PATH
  1201. + tailpid=""
  1202.   if test -f $ACONF
  1203.   then
  1204. !   trap "cp $ACONF $ACONF.tmp;
  1205. !    test ! -z "$tailpid" && kill $tailpid; exit 1" 1 2 3 15
  1206.   else
  1207. !   trap "$RM $ACONF.tmp;mv $ACONF $ACONF.tmp;
  1208. !    test ! -z "$tailpid" && kill $tailpid; exit 1" 1 2 3 15
  1209.   fi
  1210.   
  1211.   if test ! -z "$LD_LIBRARY_PATH"
  1212. ***************
  1213. *** 275,284 ****
  1214.   #define MSK_lockf    0x02           /* change locking.c as well, fdlock() */
  1215.   #define MSK_flock    0x01
  1216.   
  1217. ! int dolock,child[NR_of_forks],timeout;
  1218.   
  1219.   void stimeout()
  1220. ! { timeout=1;killchildren();
  1221.   }
  1222.   
  1223.   static unsigned long seed;
  1224. --- 280,289 ----
  1225.   #define MSK_lockf    0x02           /* change locking.c as well, fdlock() */
  1226.   #define MSK_flock    0x01
  1227.   
  1228. ! int dolock,child[NR_of_forks],timeout,fdcollect;
  1229.   
  1230.   void stimeout()
  1231. ! { timeout=1;killchildren();close(fdcollect);
  1232.   }
  1233.   
  1234.   static unsigned long seed;
  1235. ***************
  1236. *** 334,340 ****
  1237.       int j,countlocks=MIN_locks;           /* give all children a chance */
  1238.       for(j=NR_of_lockfiles;lckdfil[--j]=0,j;);
  1239.       close(pip[1]);timeout=0;sleep(1);kill(getppid(),SIGKILL);
  1240. !     signal(SIGALRM,(void(*)())stimeout);
  1241.       dtimet=(((unsigned)time((char*)0)-otimet)*GROW)+TIME_OUT_SEC;
  1242.       do
  1243.        { unlink("_locktst.alive");alarm(dtimet+2);         /* watchdog */
  1244. --- 339,345 ----
  1245.       int j,countlocks=MIN_locks;           /* give all children a chance */
  1246.       for(j=NR_of_lockfiles;lckdfil[--j]=0,j;);
  1247.       close(pip[1]);timeout=0;sleep(1);kill(getppid(),SIGKILL);
  1248. !     fdcollect=pip[0];signal(SIGALRM,(void(*)())stimeout);
  1249.       dtimet=(((unsigned)time((char*)0)-otimet)*GROW)+TIME_OUT_SEC;
  1250.       do
  1251.        { unlink("_locktst.alive");alarm(dtimet+2);         /* watchdog */
  1252. ***************
  1253. *** 342,351 ****
  1254.           otimet*GROW:otimet+(dtimet-otimet)*DECAY+1;       /* load dependent */
  1255.          otimet=time((char*)0);
  1256.        }
  1257. !     while(1==read(pip[0],&curflag,1)&&
  1258.        (j=lckdfil[i=(curflag&MASK_fileno)>>1],!timeout)&&
  1259.        ((j^(lckdfil[i]=curflag))==1||!(j&1)&&curflag&1)&&--countlocks);
  1260. !     alarm(0);killchildren();close(pip[0]);
  1261.   #ifdef FAIR_LOCK_CHECK
  1262.       j=NR_of_lockfiles;
  1263.       do
  1264. --- 347,356 ----
  1265.           otimet*GROW:otimet+(dtimet-otimet)*DECAY+1;       /* load dependent */
  1266.          otimet=time((char*)0);
  1267.        }
  1268. !     while(1==read(fdcollect,&curflag,1)&&
  1269.        (j=lckdfil[i=(curflag&MASK_fileno)>>1],!timeout)&&
  1270.        ((j^(lckdfil[i]=curflag))==1||!(j&1)&&curflag&1)&&--countlocks);
  1271. !     alarm(0);killchildren();close(fdcollect);
  1272.   #ifdef FAIR_LOCK_CHECK
  1273.       j=NR_of_lockfiles;
  1274.       do
  1275. ***************
  1276. *** 834,841 ****
  1277.    grep 'Mlocal.*procmail' >$DEVNULL ||
  1278.    echo '#define CF_no_procmail_yet' >>$ACONF
  1279.   
  1280. - tailpid=""
  1281.   while $FGREP -e "Kernel-locking tests completed." _locktst.rrr >$DEVNULL; \
  1282.    test 0 != $?
  1283.   do
  1284. --- 839,844 ----
  1285. ***************
  1286. *** 856,861 ****
  1287. --- 859,865 ----
  1288.   done
  1289.   exec 9>&2 2>$DEVNULL
  1290.   test ! -z "$tailpid" && kill $tailpid && echo && echo
  1291. + tailpid=""
  1292.   exec 2>&9 9>&-
  1293.   echo "Collecting results from kernel-locking tests"
  1294.   sed -e '/^Kernel-locking tests completed./,$ d' <_locktst.rrr >>$ACONF
  1295. diff -c procmail/src/header.h:1.12 procmail/src/header.h:1.13
  1296. *** procmail/src/header.h:1.12    Fri Feb 19 16:22:35 1993
  1297. --- procmail/src/header.h    Fri Feb 19 16:22:35 1993
  1298. ***************
  1299. *** 9,15 ****
  1300.    *    it in the next release.                        *
  1301.    *                                    *
  1302.    ************************************************************************/
  1303. ! /*$Id: header.h,v 1.12 1993/01/26 14:49:52 berg Exp $*/
  1304.   
  1305.   static const char
  1306.    returnpath[]=        "Return-Path:",                  /* RFC 822 */
  1307. --- 9,15 ----
  1308.    *    it in the next release.                        *
  1309.    *                                    *
  1310.    ************************************************************************/
  1311. ! /*$Id: header.h,v 1.13 1993/02/10 17:07:54 berg Exp $*/
  1312.   
  1313.   static const char
  1314.    returnpath[]=        "Return-Path:",                  /* RFC 822 */
  1315. ***************
  1316. *** 61,67 ****
  1317.    distribution[]=    "Distribution:",
  1318.    xref[]=        "Xref:",
  1319.    originator[]=        "Originator:",
  1320. !  nntppostinghost[]=    "Nntp-Posting-Host:",
  1321.    title[]=        "Title:",          /* antiquated USENET extension */
  1322.    aRticleid[]=        "Article-I.D.:",            /* ditto ... */
  1323.    posted[]=        "Posted:",
  1324. --- 61,67 ----
  1325.    distribution[]=    "Distribution:",
  1326.    xref[]=        "Xref:",
  1327.    originator[]=        "Originator:",
  1328. !  nntppostinghost[]=    "NNTP-Posting-Host:",
  1329.    title[]=        "Title:",          /* antiquated USENET extension */
  1330.    aRticleid[]=        "Article-I.D.:",            /* ditto ... */
  1331.    posted[]=        "Posted:",
  1332. diff -c procmail/src/locking.c:1.11 procmail/src/locking.c:1.13
  1333. *** procmail/src/locking.c:1.11    Fri Feb 19 16:22:36 1993
  1334. --- procmail/src/locking.c    Fri Feb 19 16:22:37 1993
  1335. ***************
  1336. *** 6,12 ****
  1337.    ************************************************************************/
  1338.   #ifdef RCS
  1339.   static /*const*/char rcsid[]=
  1340. !  "$Id: locking.c,v 1.11 1993/01/28 14:22:12 berg Exp $";
  1341.   #endif
  1342.   #include "procmail.h"
  1343.   #include "robust.h"
  1344. --- 6,12 ----
  1345.    ************************************************************************/
  1346.   #ifdef RCS
  1347.   static /*const*/char rcsid[]=
  1348. !  "$Id: locking.c,v 1.13 1993/02/11 12:08:34 berg Exp $";
  1349.   #endif
  1350.   #include "procmail.h"
  1351.   #include "robust.h"
  1352. ***************
  1353. *** 16,22 ****
  1354.   #include "locking.h"
  1355.   
  1356.   void lockit(name,lockp)char*name;char**const lockp;
  1357. ! { int i,permanent=nfsTRY,triedforce=0;struct stat stbuf;time_t t;
  1358.     if(*lockp)
  1359.      { if(!strcmp(name,*lockp))    /* compare the previous lockfile to this one */
  1360.       return;             /* they're equal, save yourself some effort */
  1361. --- 16,22 ----
  1362.   #include "locking.h"
  1363.   
  1364.   void lockit(name,lockp)char*name;char**const lockp;
  1365. ! { int permanent=nfsTRY,triedforce=0;struct stat stbuf;time_t t;
  1366.     if(*lockp)
  1367.      { if(!strcmp(name,*lockp))    /* compare the previous lockfile to this one */
  1368.       return;             /* they're equal, save yourself some effort */
  1369. ***************
  1370. *** 25,33 ****
  1371.     if(!*name)
  1372.        return;
  1373.     name=tstrdup(name); /* allocate now, so we won't hang on memory *and* lock */
  1374.     for(lcking|=lck_LOCKFILE;;)
  1375. !    { yell("Locking",name);        /* in order to cater for clock skew: */
  1376. !      if(!xcreat(name,LOCKperm,&t,(int*)0))     /* get time t from filesystem */
  1377.         { *lockp=name;break;               /* lock acquired, hurray! */
  1378.         }
  1379.        switch(errno)
  1380. --- 25,35 ----
  1381.     if(!*name)
  1382.        return;
  1383.     name=tstrdup(name); /* allocate now, so we won't hang on memory *and* lock */
  1384. +   if(!strcmp(name,defdeflock))           /* is it the system mailbox lockfile? */
  1385. +      setgid(sgid);               /* try and get some extra permissions */
  1386.     for(lcking|=lck_LOCKFILE;;)
  1387. !    { yell("Locking",name);        /* in order to cater for clock skew: get */
  1388. !      if(!xcreat(name,LOCKperm,&t,(int*)0))     /* time t from the filesystem */
  1389.         { *lockp=name;break;               /* lock acquired, hurray! */
  1390.         }
  1391.        switch(errno)
  1392. ***************
  1393. *** 54,63 ****
  1394. --- 56,67 ----
  1395.          goto faillock;
  1396.   #ifdef ENAMETOOLONG
  1397.       case ENAMETOOLONG:     /* maybe filename too long, shorten and retry */
  1398. +      { int i;
  1399.          if(0<(i=strlen(name)-1)&&!strchr(dirsep,name[i-1]))
  1400.           { nlog("Truncating");logqnl(name);elog(" and retrying lock\n");
  1401.             name[i]='\0';permanent=nfsTRY;goto ce;
  1402.           }
  1403. +      }
  1404.   #endif
  1405.       default:
  1406.   faillock:  nlog("Lock failure on");logqnl(name);goto term;
  1407. ***************
  1408. *** 72,77 ****
  1409. --- 76,83 ----
  1410.   term: { free(name);break;             /* drop the preallocated buffer */
  1411.         }
  1412.      }
  1413. +   if(rc!=rc_INIT)                     /* we opened any rcfile */
  1414. +      setgid(gid);              /* we put back our regular permissions */
  1415.     lcking&=~lck_LOCKFILE;
  1416.     if(nextexit)
  1417.      { elog(whilstwfor);elog("lockfile");logqnl(name);terminate();
  1418. ***************
  1419. *** 91,98 ****
  1420. --- 97,108 ----
  1421.   { lcking|=lck_LOCKFILE;
  1422.     if(*lockp)
  1423.      { yell("Unlocking",*lockp);
  1424. +      if(!strcmp(*lockp,defdeflock))    /* is it the system mailbox lockfile? */
  1425. +     setgid(sgid);               /* try and get some extra permissions */
  1426.        if(unlink(*lockp))
  1427.       nlog("Couldn't unlock"),logqnl(*lockp);
  1428. +      if(rc!=rc_INIT)                     /* we opened any rcfile */
  1429. +     setgid(gid);              /* we put back our regular permissions */
  1430.        if(!nextexit)               /* if not inside a signal handler */
  1431.       free(*lockp);
  1432.        *lockp=0;
  1433. diff -c procmail/src/manconf.c:1.14 procmail/src/manconf.c:1.18
  1434. *** procmail/src/manconf.c:1.14    Fri Feb 19 16:22:38 1993
  1435. --- procmail/src/manconf.c    Fri Feb 19 16:22:38 1993
  1436. ***************
  1437. *** 1,6 ****
  1438.   /* A sed script generator (for transmogrifying the man pages automagically) */
  1439.   
  1440. ! /*$Id: manconf.c,v 1.14 1993/01/28 15:18:33 berg Exp $*/
  1441.   
  1442.   #include "../patchlevel.h"
  1443.   #include "procmail.h"
  1444. --- 1,6 ----
  1445.   /* A sed script generator (for transmogrifying the man pages automagically) */
  1446.   
  1447. ! /*$Id: manconf.c,v 1.18 1993/02/19 15:04:30 berg Exp $*/
  1448.   
  1449.   #include "../patchlevel.h"
  1450.   #include "procmail.h"
  1451. ***************
  1452. *** 96,108 ****
  1453.   administrator), you have to make sure it is invoked when your mail arrives.");
  1454.   #else
  1455.     ps("CF_procmail","Instead of using the system provided invocation of \
  1456. ! procmail when mail arrives, you can control the invokation of procmail \
  1457.   yourself.");
  1458.   #endif
  1459.   #ifndef MAILBOX_SEPARATOR
  1460.     ps("DOT_FORWARD",".forward");
  1461.     ps("FW_content",
  1462. !    "\"|IFS=' ';exec /usr/local/bin/procmail #YOUR_LOGIN_NAME\"");
  1463.   #else
  1464.     ps("DOT_FORWARD",".maildelivery");
  1465.     ps("FW_content",
  1466. --- 96,108 ----
  1467.   administrator), you have to make sure it is invoked when your mail arrives.");
  1468.   #else
  1469.     ps("CF_procmail","Instead of using the system provided invocation of \
  1470. ! procmail when mail arrives, you can control the invocation of procmail \
  1471.   yourself.");
  1472.   #endif
  1473.   #ifndef MAILBOX_SEPARATOR
  1474.     ps("DOT_FORWARD",".forward");
  1475.     ps("FW_content",
  1476. !    "|\"IFS=' ';exec /usr/local/bin/procmail #YOUR_LOGIN_NAME\"");
  1477.   #else
  1478.     ps("DOT_FORWARD",".maildelivery");
  1479.     ps("FW_content",
  1480. diff -c procmail/src/misc.c:1.18 procmail/src/misc.c:1.19
  1481. *** procmail/src/misc.c:1.18    Fri Feb 19 16:22:39 1993
  1482. --- procmail/src/misc.c    Fri Feb 19 16:22:40 1993
  1483. ***************
  1484. *** 6,12 ****
  1485.    ************************************************************************/
  1486.   #ifdef RCS
  1487.   static /*const*/char rcsid[]=
  1488. !  "$Id: misc.c,v 1.18 1993/02/02 15:27:13 berg Exp $";
  1489.   #endif
  1490.   #include "procmail.h"
  1491.   #include "sublib.h"
  1492. --- 6,12 ----
  1493.    ************************************************************************/
  1494.   #ifdef RCS
  1495.   static /*const*/char rcsid[]=
  1496. !  "$Id: misc.c,v 1.19 1993/02/10 17:08:03 berg Exp $";
  1497.   #endif
  1498.   #include "procmail.h"
  1499.   #include "sublib.h"
  1500. ***************
  1501. *** 356,365 ****
  1502.         }
  1503.        t=i;
  1504.        if(!strnIcmp(p,"on",(size_t)2)||!strnIcmp(p,"y",(size_t)1)||
  1505. !       !strnIcmp(p,"t",(size_t)1))
  1506.       t=1;
  1507.        else if(!strnIcmp(p,"off",(size_t)3)||!strnIcmp(p,"n",(size_t)1)||
  1508. !       !strnIcmp(p,"f",(size_t)1))
  1509.       t=0;
  1510.      }
  1511.     return t;
  1512. --- 356,365 ----
  1513.         }
  1514.        t=i;
  1515.        if(!strnIcmp(p,"on",(size_t)2)||!strnIcmp(p,"y",(size_t)1)||
  1516. !       !strnIcmp(p,"t",(size_t)1)||!strnIcmp(p,"e",(size_t)1))
  1517.       t=1;
  1518.        else if(!strnIcmp(p,"off",(size_t)3)||!strnIcmp(p,"n",(size_t)1)||
  1519. !       !strnIcmp(p,"f",(size_t)1)||!strnIcmp(p,"d",(size_t)1))
  1520.       t=0;
  1521.      }
  1522.     return t;
  1523. -------------------
  1524. -- 
  1525. Sincerely,                                  berg@pool.informatik.rwth-aachen.de
  1526.            Stephen R. van den Berg (AKA BuGless).    berg@physik.tu-muenchen.de
  1527.  
  1528. I've never been superstitious!  Knock on wood.
  1529.  
  1530. exit 0 # Just in case...
  1531.