home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / unix / volume26 / kit / pch16 < prev    next >
Encoding:
Text File  |  1993-05-04  |  35.3 KB  |  1,187 lines

  1. Newsgroups: comp.sources.unix
  2. From: ram@acri.fr (Raphael Manfredi)
  3. Subject: v26i221: kit - the ultimate mailing kit, Patch16
  4. Sender: unix-sources-moderator@efficacy.home.vix.com
  5. Approved: WhoAmI@efficacy.home.vix.com
  6.  
  7. Submitted-By: ram@acri.fr (Raphael Manfredi)
  8. Posting-Number: Volume 26, Issue 221
  9. Archive-Name: kit/pch16
  10.  
  11. [The latest patch for kit version 2.0 is #28.]
  12.  
  13. System: kit version 2.0
  14. Patch #: 16
  15. Priority: LOW
  16. Subject: fixed incorrect extraction message for badtar manpage
  17. Subject: minor typo fix in mkdir_p in install.SH
  18. Subject: new range expansion library script
  19. Subject: new option -S to set maximum part size
  20. Subject: there can now be multiple occurences of -l
  21. Subject: -p is now the default option unless -c is used
  22. Subject: kit now invokes mailkit with -c to force clean up
  23. Subject: mailkit asks for unsent part disposal when needed
  24. Subject: now pays attention to EDITOR and MAILER env vars
  25. Subject: new -r option to specify range of parts to be sent
  26. Subject: added -c option to force cleanup of parts
  27. Subject: documents new -r option for mailkit and -S for kit
  28. Subject: added example using mailkit -r
  29. Subject: maximum part size can now be specified via -s
  30. Date: Sat May  2 14:21:15 PDT 1992
  31. From: Raphael Manfredi <ram@eiffel.com>
  32.  
  33. Description:
  34.     Kit now has a new option -S to set maximum part size. This feature
  35.     has been requested by Christian Bertin <bertin@acri.fr>.
  36.  
  37.     There can now be multiple occurences of -l in mailkit command line
  38.     to include addresses from more than one file.
  39.  
  40.     Kit now invokes mailkit with -c to force clean up. Indeed, the -p option
  41.     is now the default when -c is not used. This means mailkit will not
  42.     remove files sent by default when invoked from a shell. Moreover,
  43.     mailkit now asks for unsent part disposal when needed (shall they be
  44.     removed or kept for later perusal?).
  45.  
  46.     Mailkit now pays attention to EDITOR and MAILER env vars. Another
  47.     feature suggested by Christian Bertin.
  48.  
  49.     Maikit also has a new -r option to specify range of parts to be sent.
  50.     For instance, 'mailkit -r 1,5-7,10,11,13 dist ram@eiffel.com' would
  51.     send me part 1, 5 through 7, and 10, 11 and 13 of a distribution called
  52.     'dist'. The range expansion is handled through a new library script.
  53.  
  54. Fix:    From rn, say "| patch -p -N -d DIR", where DIR is your kit source
  55.     directory.  Outside of rn, say "cd DIR; patch -p -N <thisarticle".
  56.     If you don't have the patch program, apply the following by hand,
  57.     or get patch (version 2.0, latest patchlevel).
  58.  
  59.     After patching:
  60.         Configure -d
  61.         make
  62.         make install
  63.  
  64.     If patch indicates that patchlevel is the wrong version, you may need
  65.     to apply one or more previous patches, or the patch may already
  66.     have been applied.  See the patchlevel.h file to find out what has or
  67.     has not been applied.  In any event, don't continue with the patch.
  68.  
  69.     If you are missing previous patches they can be obtained from me:
  70.  
  71.         Raphael Manfredi <ram@eiffel.com>
  72.  
  73.     If you send a mail message of the following form it will greatly speed
  74.     processing:
  75.  
  76.         Subject: Command
  77.         @SH mailpatch PATH kit 2.0 LIST
  78.                ^ note the c
  79.  
  80.     where PATH is a return path FROM ME TO YOU either in Internet notation,
  81.     or in bang notation from some well-known host, and LIST is the number
  82.     of one or more patches you need, separated by spaces, commas, and/or
  83.     hyphens.  Saying 35- says everything from 35 to the end.
  84.  
  85.     To get some more detailed instructions, send me the following mail:
  86.  
  87.         Subject: Command
  88.         @SH mailhelp PATH
  89.  
  90.  
  91. Index: patchlevel.h
  92. Prereq: 15
  93. 2c2
  94. < #define PATCHLEVEL 15
  95. ---
  96. > #define PATCHLEVEL 16
  97.  
  98. Index: kit/kit.SH
  99. Prereq: 2.0.1.9
  100. *** kit/kit.SH.old    Sat May  2 14:20:35 1992
  101. --- kit/kit.SH    Sat May  2 14:20:37 1992
  102. ***************
  103. *** 26,34 ****
  104.   !GROK!THIS!
  105.   $spitshell >>kit <<'!NO!SUBS!'
  106.   
  107. ! # $Id: kit.SH,v 2.0.1.9 92/04/20 17:35:03 ram Exp $
  108.   #
  109.   # $Log:    kit.SH,v $
  110.   # Revision 2.0.1.9  92/04/20  17:35:03  ram
  111.   # patch15: added support for -a option
  112.   # patch15: stamping now includes user and host infos
  113. --- 26,37 ----
  114.   !GROK!THIS!
  115.   $spitshell >>kit <<'!NO!SUBS!'
  116.   
  117. ! # $Id: kit.SH,v 2.0.1.10 92/05/02 14:13:45 ram Exp $
  118.   #
  119.   # $Log:    kit.SH,v $
  120. + # Revision 2.0.1.10  92/05/02  14:13:45  ram
  121. + # patch16: new option -S to set maximum part size
  122. + # 
  123.   # Revision 2.0.1.9  92/04/20  17:35:03  ram
  124.   # patch15: added support for -a option
  125.   # patch15: stamping now includes user and host infos
  126. ***************
  127. *** 75,80 ****
  128. --- 78,85 ----
  129.   mode="zag"                    # Mode is the 'A' part of the name
  130.   code="ba"                    # Code is the 'B' part of the name
  131.   mailkit=mailkit                # Mailing program to use with kit
  132. + maxsize=50000                # Default maximum part size in bytes
  133. + maxvalue=$maxsize            # Actual requested size
  134.   invoke=no                    # Do we have to invoke mailkit ?
  135.   tmpfile=/tmp/Kds$$            # Temporary file
  136.   tmpdir="."                    # Temporary directory used
  137. ***************
  138. *** 95,102 ****
  139.   
  140.   # Old Bourne shells do not have functions
  141.   usage='
  142. ! echo "Usage: kit [-BEFHMVXefhpx] [-a address] [-d dir] [-k key] [-m address]";
  143. ! echo " "" "" "" "" "" "" [-n basename] [-l file] [-s name] dirs | files";
  144.   echo " "" -B : use btoa encoding (default).";
  145.   echo " "" -E : edit instructions for part #0 (passed to mailkit).";
  146.   echo " "" -F : feed instructions from stdin to part #0 (passed to mailkit).";
  147. --- 100,107 ----
  148.   
  149.   # Old Bourne shells do not have functions
  150.   usage='
  151. ! echo "Usage: kit [-BEFHMVXefhpx] [-S size] [-a address] [-d dir] [-k key]";
  152. ! echo " "" "" "" "" "" "" [-l file] [-m address] [-n basename] [-s name] dirs | files";
  153.   echo " "" -B : use btoa encoding (default).";
  154.   echo " "" -E : edit instructions for part #0 (passed to mailkit).";
  155.   echo " "" -F : feed instructions from stdin to part #0 (passed to mailkit).";
  156. ***************
  157. *** 103,108 ****
  158. --- 108,114 ----
  159.   echo " "" -H : use hex-encoding.";
  160.   echo " "" -M : include minikit in the distribution.";
  161.   echo " "" -V : print version and patch-level.";
  162. + echo " "" -S : set each part size in bytes or kbytes (default $maxsize bytes).";
  163.   echo " "" -X : use Electronic Code Block DES encryption.";
  164.   echo " "" -a : acknowledgment requested upon archive extraction.";
  165.   echo " "" -d : put temporary files in the specified directory.";
  166. ***************
  167. *** 110,117 ****
  168.   echo " "" -f : feed instructions from stdin in each part (passed to mailkit).";
  169.   echo " "" -h : to print this help message.";
  170.   echo " "" -k : sets the key used for data encryption.";
  171. ! echo " "" -m : invoke mailkit to mail the parts.";
  172. ! echo " "" "" "" "" "" "" There may be as many -m as necessary.";
  173.   echo " "" -l : file holding the recipient list (passed to mailkit).";
  174.   echo " "" -n : set the basename of the generated parts (default is $partname).";
  175.   echo " "" -p : preserve files sent (given to mailkit).";
  176. --- 116,122 ----
  177.   echo " "" -f : feed instructions from stdin in each part (passed to mailkit).";
  178.   echo " "" -h : to print this help message.";
  179.   echo " "" -k : sets the key used for data encryption.";
  180. ! echo " "" -m : invoke mailkit to mail the parts (multiple occurrences combine).";
  181.   echo " "" -l : file holding the recipient list (passed to mailkit).";
  182.   echo " "" -n : set the basename of the generated parts (default is $partname).";
  183.   echo " "" -p : preserve files sent (given to mailkit).";
  184. ***************
  185. *** 145,150 ****
  186. --- 150,159 ----
  187.       -E|-e|-F|-f|-p) mailopt="$mailopt $1"
  188.           shift
  189.           ;;
  190. +     -S) maxvalue="$2"
  191. +         shift
  192. +         shift
  193. +         ;;
  194.       -X) desopt="-b"
  195.           mode="zec"
  196.           shift
  197. ***************
  198. *** 241,246 ****
  199. --- 250,267 ----
  200.   '') subject=$1
  201.   esac
  202.   
  203. + # Compute maximum kit size (can be given in bytes or in kbytes)
  204. + maxvalue=`echo "$maxvalue" | sed -e 's/^\(.*\)[kK]/\1 \\\\* 1024/'`
  205. + maxvalue=`eval expr $maxvalue 2>/dev/null`
  206. + maxsize=${maxvalue:-$maxsize}
  207. + # The number of lines to be kept in each splited file is computed based on the
  208. + # average of 80 characters per line, and 2500 bytes are removed from the actual
  209. + # size for header overhead.
  210. + split=`expr $maxsize - 2500`
  211. + split=`expr $split / 80`
  212. + split=${split:-600}
  213.   # We have two encoding methods for binary datas:
  214.   # - hexencode: brute force (mogenix)
  215.   # - btoa: binary to ascii (ram)
  216. ***************
  217. *** 317,325 ****
  218.   
  219.   # Check whether we can use cshar or not
  220.   if (makekit -v) >/dev/null 2>&1; then
  221. !     makekit="makekit -k100 -n $partname ${split_file}* $others"
  222.   else
  223. !     makekit="$libdir/makeshar -n $partname ${split_file}* $others"
  224.   fi
  225.   
  226.   echo "Coding with $coding"
  227. --- 338,346 ----
  228.   
  229.   # Check whether we can use cshar or not
  230.   if (makekit -v) >/dev/null 2>&1; then
  231. !     makekit="makekit -k100 -s $maxsize -n $partname ${split_file}* $others"
  232.   else
  233. !     makekit="$libdir/makeshar -s $maxsize -n $partname ${split_file}* $others"
  234.   fi
  235.   
  236.   echo "Coding with $coding"
  237. ***************
  238. *** 326,332 ****
  239.   # Beware: 'eval $coding < $tmpfile' is not portable
  240.   status=1
  241.   cat $tmpfile | eval $coding |
  242. ! split -600 - $split_file &&
  243.   eval $makekit && status=0
  244.   rm ${split_file}* $others $tmpfile
  245.   case "$status" in
  246. --- 347,353 ----
  247.   # Beware: 'eval $coding < $tmpfile' is not portable
  248.   status=1
  249.   cat $tmpfile | eval $coding |
  250. ! split -$split - $split_file &&
  251.   eval $makekit && status=0
  252.   rm ${split_file}* $others $tmpfile
  253.   case "$status" in
  254. ***************
  255. *** 378,384 ****
  256.   
  257.   # If -m option used, invoke mailkit
  258.   if test $invoke = yes; then
  259. !     $mailkit -n $partname $mailopt "$subject" $address
  260.   fi
  261.   !NO!SUBS!
  262.   chmod 755 kit
  263. --- 399,405 ----
  264.   
  265.   # If -m option used, invoke mailkit
  266.   if test $invoke = yes; then
  267. !     $mailkit -n $partname -c $mailopt "$subject" $address
  268.   fi
  269.   !NO!SUBS!
  270.   chmod 755 kit
  271.  
  272. Index: man/kit.SH
  273. Prereq: 2.0.1.8
  274. *** man/kit.SH.old    Sat May  2 14:20:55 1992
  275. --- man/kit.SH    Sat May  2 14:20:57 1992
  276. ***************
  277. *** 18,26 ****
  278.   .TH KIT $manext ram
  279.   ''' @(#) Manual page for mailing kit -- (c) ram July 1990
  280.   '''
  281. ! ''' $Id: kit.SH,v 2.0.1.8 92/04/20 17:42:36 ram Exp $
  282.   '''
  283.   ''' $Log:    kit.SH,v $
  284.   ''' Revision 2.0.1.8  92/04/20  17:42:36  ram
  285.   ''' patch15: documents the new -a option
  286.   ''' patch15: older kits will not honor -a or -M (new paragraph in BUGS)
  287. --- 18,32 ----
  288.   .TH KIT $manext ram
  289.   ''' @(#) Manual page for mailing kit -- (c) ram July 1990
  290.   '''
  291. ! ''' $Id: kit.SH,v 2.0.1.9 92/05/02 14:19:05 ram Exp $
  292.   '''
  293.   ''' $Log:    kit.SH,v $
  294. + ''' Revision 2.0.1.9  92/05/02  14:19:05  ram
  295. + ''' patch16: documents new -r option for mailkit and -S for kit
  296. + ''' patch16: mailkit now supports multiple -l options
  297. + ''' patch16: two environment variables are used: EDITOR and MAILER
  298. + ''' patch16: added example using mailkit -r
  299. + ''' 
  300.   ''' Revision 2.0.1.8  92/04/20  17:42:36  ram
  301.   ''' patch15: documents the new -a option
  302.   ''' patch15: older kits will not honor -a or -M (new paragraph in BUGS)
  303. ***************
  304. *** 62,74 ****
  305.   .SH NAME
  306.   kit, mailkit, unkit \- the ultimate mailing tools
  307.   .SH SYNOPSIS
  308. ! \fBkit\fR [ \fB\-EFHMBVXefhpx\fR ] [ \fB\-a\fI address\fR] [ \fB\-k\fI key\fR]
  309.   [ \fB\-d\fI dir\fR ] [ \fB\-m\fI address\fR ] [ \fB\-n\fI basename\fR ]
  310.   [ \fB\-l\fI file\fR ] [ \fB\-s\fI name\fR ] \fIdirectories\fR | \fIfiles\fR
  311. ! .br
  312. ! \fBmailkit\fR [ \fB\-EFVefhp\fR ] [ \fB\-l\fI file\fR ]
  313.   [ \fB\-n\fI partname\fR ] \fItitle\fR [ \fIaddress(es)\fR ]
  314. ! .br
  315.   \fBunkit\fR [ \fB\-bhlprV\fR ] [ \fIfiles\fR ]
  316.   .SH DESCRIPTION
  317.   \fIKit\fR is the ultimate mailing tool. It enables you to mail
  318. --- 68,81 ----
  319.   .SH NAME
  320.   kit, mailkit, unkit \- the ultimate mailing tools
  321.   .SH SYNOPSIS
  322. ! \fBkit\fR [ \fB\-EFHMBVXefhpx\fR ] [ \fB\-S\fI size\fR ]
  323. ! [ \fB\-a\fI address\fR ] [ \fB\-k\fI key\fR ]
  324.   [ \fB\-d\fI dir\fR ] [ \fB\-m\fI address\fR ] [ \fB\-n\fI basename\fR ]
  325.   [ \fB\-l\fI file\fR ] [ \fB\-s\fI name\fR ] \fIdirectories\fR | \fIfiles\fR
  326. ! .sp
  327. ! \fBmailkit\fR [ \fB\-EFVcefhp\fR ] [ \fB\-l\fI file\fR ]
  328.   [ \fB\-n\fI partname\fR ] \fItitle\fR [ \fIaddress(es)\fR ]
  329. ! .sp
  330.   \fBunkit\fR [ \fB\-bhlprV\fR ] [ \fIfiles\fR ]
  331.   .SH DESCRIPTION
  332.   \fIKit\fR is the ultimate mailing tool. It enables you to mail
  333. ***************
  334. *** 129,134 ****
  335. --- 136,147 ----
  336.   end has at least the 2.0 PL15 release. You will receive a short message with
  337.   a \fIjunk\fR precedence, telling you who extracted the archive and when.
  338.   .PP
  339. + The default part size generated by kit is currently 50000 bytes. However, this
  340. + can be changed throughout the \fB\-S\fR option, which expects a part size as
  341. + argument. It can be given in bytes (e.g. \fI\-S 40000\fR to set the maximum
  342. + part size to 40000 bytes) or in kbytes by appending a \fIk\fR at the end
  343. + (i.e. \fI-S 60k\fR would produce parts with size ranging up to 61440 bytes).
  344. + .PP
  345.   \fIMailkit\fR takes "Kit*" files and sends them to a list of addresses.
  346.   The \fB\-n\fR option can be used to change that base name, if necessary.
  347.   Each message sent corresponds to one part and has its \`Subject:'
  348. ***************
  349. *** 153,159 ****
  350.   as a file whith recipients addresses in it and adds the optional addresses that
  351.   may be given on the command line. Addresses in the recipient file are
  352.   separated with spaces, commas or new lines. Shell-style comments starting with
  353. ! a pound sign (#) are allowed.
  354.   .PP
  355.   \fIUnkit\fR is used to restore the original files. The argument is
  356.   a list of archive files (or mail files, as \fIunshar\fR(1), which
  357. --- 166,199 ----
  358.   as a file whith recipients addresses in it and adds the optional addresses that
  359.   may be given on the command line. Addresses in the recipient file are
  360.   separated with spaces, commas or new lines. Shell-style comments starting with
  361. ! a pound sign (#) are allowed. More than one \fB\-l\fR can be used to get
  362. ! addresses from multiple files (duplicates will not be removed by \fImailkit\fR
  363. ! but should be taken care of by the underlying transport mechanism).
  364. ! .PP
  365. ! If \fImailkit\fR is invoked by \fIkit\fR via \fB\-m\fR options, it will be
  366. ! given the \fB\-c\fR flag to clean up parts when they are successfully sent,
  367. ! unless \fB\-p\fR was also provided. However, when invoking \fImailkit\fR
  368. ! directly from a shell, the default action is to not remove the parts when they
  369. ! have been sent (that is to say, \fB\-p\fR is the default action unless you
  370. ! add the \fB-c\fR option yourself). If for some reason one part could not be
  371. ! sent and \fImailkit\fR was directed to remove parts when sent, then the
  372. ! file is not removed immediately. If the input and output are connected to a
  373. ! terminal, \fImailkit\fR will ask you at the end whether you wish to keep the
  374. ! unsent parts, on an individual basis. Otherwise, (e.g. standard output
  375. ! redirected to a file), the unsent parts will be removed without asking.
  376. ! .PP
  377. ! Another useful feature when invoking \fImailkit\fR manually is the ability
  378. ! to send only a subset of all the kit parts by using the \fB\-r\fR option
  379. ! and supplying a range list of parts to be sent. A \fIrange list\fR
  380. ! is a set of ranges comma separated. A \fIrange\fR is a part number by itself or
  381. ! a set of two numbers
  382. ! separated with a minus sign, indicating the lowest and the largest bound, hence
  383. ! specifying an interval. If the lowest bound is missing, 1 is assumed. If the
  384. ! largest bound is missing, the total number of parts is substituted. Thus,
  385. ! a range of \fI1-\fR means all the parts, while \fI1,4-7,10\fR would send parts
  386. ! 1, 4 trough 7 and 10. Finally, \fI-5,8-\fR would send parts 1 through 5 and
  387. ! 8 up to the end. If you introduce spaces in your range list specification,
  388. ! do not forget to quote the whole list for the shell...
  389.   .PP
  390.   \fIUnkit\fR is used to restore the original files. The argument is
  391.   a list of archive files (or mail files, as \fIunshar\fR(1), which
  392. ***************
  393. *** 221,228 ****
  394.   $privlib/rshar
  395.   a simple shell archive maker.
  396.   .PD
  397.   .SH NOTES
  398. - .PP
  399.   Kit may now be used as a standalone package, i.e. without the help of
  400.   the \fIcshar\fR distribution.
  401.   This was not true before version 2.0 PL10. Two simple shell scripts
  402. --- 261,278 ----
  403.   $privlib/rshar
  404.   a simple shell archive maker.
  405.   .PD
  406. + .SH ENVIRONMENT
  407. + The following environment variables are paid attention to by \fImailkit\fR. If
  408. + they are not set, a default determined at configuration time will be used:
  409. + .TP 15
  410. + EDITOR
  411. + the name of the editor to call when -E option and friends are used.
  412. + .TP
  413. + MAILER
  414. + the name of the program to invoke to send mail. This program must be
  415. + ready to take a list of addresses as argument and the whole message
  416. + (with some headers already computed) from standard input.
  417.   .SH NOTES
  418.   Kit may now be used as a standalone package, i.e. without the help of
  419.   the \fIcshar\fR distribution.
  420.   This was not true before version 2.0 PL10. Two simple shell scripts
  421. ***************
  422. *** 241,247 ****
  423.   not smart at all in case of errors. However, this is useful if
  424.   you do not have \fBcshar\fR, but still want to use \fIunkit\fR.
  425.   .SH EXAMPLES
  426. - .PP
  427.   To mail \fIram@educ.emse.fr\fR a directory called XLOCK and all what it may
  428.   hold, do:
  429.   .sp
  430. --- 291,296 ----
  431. ***************
  432. *** 256,261 ****
  433. --- 305,318 ----
  434.   .sp
  435.   .in +5
  436.   .B kit \-m ram@educ.emse.fr XLOCK
  437. + .in -5
  438. + .sp
  439. + Assuming the XLOCK package has 5 kit parts, you could send only parts 3 and 5
  440. + by using:
  441. + .sp
  442. + .in +5
  443. + .br
  444. + .B mailkit -r 3,5 XLOCK ram@eiffel.com
  445.   .in -5
  446.   .sp
  447.   If you have no write permissions in the current directory, you can
  448.  
  449. Index: kit/mailkit.SH
  450. Prereq: 2.0.1.7
  451. *** kit/mailkit.SH.old    Sat May  2 14:20:43 1992
  452. --- kit/mailkit.SH    Sat May  2 14:20:45 1992
  453. ***************
  454. *** 18,26 ****
  455.   # @(#) Mailer for kit files
  456.   # @(#) (c) R. Manfredi, 1990 1991
  457.   
  458. ! # $Id: mailkit.SH,v 2.0.1.7 92/04/20 17:37:36 ram Exp $
  459.   #
  460.   # $Log:    mailkit.SH,v $
  461.   # Revision 2.0.1.7  92/04/20  17:37:36  ram
  462.   # patch15: added the bulk Precedence and X-Mailer headers
  463.   # patch15: fixed incorrect help message regarding -l
  464. --- 18,35 ----
  465.   # @(#) Mailer for kit files
  466.   # @(#) (c) R. Manfredi, 1990 1991
  467.   
  468. ! # $Id: mailkit.SH,v 2.0.1.8 92/05/02 14:17:01 ram Exp $
  469.   #
  470.   # $Log:    mailkit.SH,v $
  471. + # Revision 2.0.1.8  92/05/02  14:17:01  ram
  472. + # patch16: there can now be multiple occurences of -l
  473. + # patch16: -p is now the default option unless -c is used
  474. + # patch16: kit now invokes mailkit with -c to force clean up
  475. + # patch16: mailkit asks for unsent part disposal when needed
  476. + # patch16: now pays attention to EDITOR and MAILER env vars
  477. + # patch16: new -r option to specify range of parts to be sent
  478. + # patch16: added -c option to force cleanup of parts
  479. + # 
  480.   # Revision 2.0.1.7  92/04/20  17:37:36  ram
  481.   # patch15: added the bulk Precedence and X-Mailer headers
  482.   # patch15: fixed incorrect help message regarding -l
  483. ***************
  484. *** 63,68 ****
  485. --- 72,78 ----
  486.   # Which patch-level is it ?
  487.   pl='$PATCHLEVEL'
  488.   version='$VERSION'
  489. + libdir='$privlib'
  490.   !GROK!THIS!
  491.   $spitshell >>mailkit <<'!NO!SUBS!'
  492.   
  493. ***************
  494. *** 70,93 ****
  495.   edit=no
  496.   added=no
  497.   feed=no
  498. ! preserve=no
  499.   recipients=''
  500.   
  501. ! # Default part's name
  502. ! partname="Kit"
  503.   
  504.   # Old Bourne shells do not have functions
  505.   usage='
  506. ! echo "Usage: mailkit [-EFVefhp] [-n base] [-l file] prog_name [address_list]";
  507.   echo " "" -E : edit a message that will be sent as part #0";
  508.   echo " "" -F : feed message from stdin and sent it as part #0";
  509.   echo " "" -V : print version and patch-level";
  510.   echo " "" -e : edit a message that will be added to every part";
  511.   echo " "" -f : feed message from stdin to every part";
  512.   echo " "" -h : to print this help message.";
  513. ! echo " "" -l : get recipients from a file.";
  514.   echo " "" -n : set the basename of parts to be sent (default is $partname).";
  515. ! echo " "" -p : preserve files sent.";
  516.   exit 1;
  517.   '
  518.   
  519. --- 80,107 ----
  520.   edit=no
  521.   added=no
  522.   feed=no
  523. ! preserve=dflt
  524.   recipients=''
  525.   
  526. ! partname='Kit'            # Default part's name
  527. ! range='1-'                # Default range (all parts)
  528. ! unsent=''                # Parts which could not be sent
  529.   
  530.   # Old Bourne shells do not have functions
  531.   usage='
  532. ! echo "Usage: mailkit [-EFVcefhp] [-n base] [-l file] [-r range]";
  533. ! echo " "" "" "" "" "" "" progname [address_list]";
  534.   echo " "" -E : edit a message that will be sent as part #0";
  535.   echo " "" -F : feed message from stdin and sent it as part #0";
  536.   echo " "" -V : print version and patch-level";
  537. + echo " "" -c : clean up after each part sent.";
  538.   echo " "" -e : edit a message that will be added to every part";
  539.   echo " "" -f : feed message from stdin to every part";
  540.   echo " "" -h : to print this help message.";
  541. ! echo " "" -l : get recipients from a file (multiple occurences allowed).";
  542.   echo " "" -n : set the basename of parts to be sent (default is $partname).";
  543. ! echo " "" -p : preserve files sent (default, unless -c specified).";
  544. ! echo " "" -r : define parts to be sent (default is 1-).";
  545.   exit 1;
  546.   '
  547.   
  548. ***************
  549. *** 102,107 ****
  550. --- 116,126 ----
  551.           added=no
  552.           shift
  553.           ;;
  554. +     -c) case "$preserve" in
  555. +         dflt) preserve=no;;
  556. +         esac
  557. +         shift
  558. +         ;;
  559.       -e) edit=yes
  560.           added=yes
  561.           shift
  562. ***************
  563. *** 111,117 ****
  564.       -p) preserve=yes
  565.           shift
  566.           ;;
  567. !     -l) recipients="$2"
  568.           shift
  569.           shift
  570.           ;;
  571. --- 130,136 ----
  572.       -p) preserve=yes
  573.           shift
  574.           ;;
  575. !     -l) recipients="$recipients $2"
  576.           shift
  577.           shift
  578.           ;;
  579. ***************
  580. *** 119,124 ****
  581. --- 138,147 ----
  582.           shift
  583.           shift
  584.           ;;
  585. +     -r) range="${2:-$range}"
  586. +         shift
  587. +         shift
  588. +         ;;
  589.       -f)    feed=yes
  590.           added=yes
  591.           shift
  592. ***************
  593. *** 144,150 ****
  594.   fi
  595.   
  596.   # Save arguments before using set
  597. - this_prog=$0
  598.   prog_name=$1
  599.   shift
  600.   address=$@
  601. --- 167,172 ----
  602. ***************
  603. *** 156,162 ****
  604.           # The format of the file is simple: a list of addresses, one per
  605.           # line. Shell-style comments are allowed and multiple addresses on a
  606.           # single line may be separated with spaces or commas.
  607. !         set X `<$recipients sed -n -e '/^[^#]/ {'    \
  608.               -e 's/#.*//'    \
  609.               -e 's/,/ /g'    \
  610.               -e 's/\n/ /'    \
  611. --- 178,184 ----
  612.           # The format of the file is simple: a list of addresses, one per
  613.           # line. Shell-style comments are allowed and multiple addresses on a
  614.           # single line may be separated with spaces or commas.
  615. !         set X `cat $recipients | sed -n -e '/^[^#]/ {'    \
  616.               -e 's/#.*//'    \
  617.               -e 's/,/ /g'    \
  618.               -e 's/\n/ /'    \
  619. ***************
  620. *** 165,177 ****
  621.           shift
  622.           address=$@
  623.       else
  624. !         echo >&2 "$this_prog: can't open $recipients"
  625.           exit 1
  626.       fi
  627.   fi
  628.   
  629.   if test "x$address" = x; then
  630. !     echo >&2 "$this_prog: missing recipient list"
  631.       eval $usage
  632.   fi
  633.   
  634. --- 187,199 ----
  635.           shift
  636.           address=$@
  637.       else
  638. !         echo >&2 "mailkit: can't open $recipients"
  639.           exit 1
  640.       fi
  641.   fi
  642.   
  643.   if test "x$address" = x; then
  644. !     echo >&2 "mailkit: missing recipient list"
  645.       eval $usage
  646.   fi
  647.   
  648. ***************
  649. *** 212,219 ****
  650.       cat >>$message <<'EOM'
  651.   ------------------------------------------------------------------------
  652.   EOM
  653.       # Call the editor
  654. !     $editor $message
  655.   
  656.       # Now remove the 4 lines at the top
  657.       # Do not use tail +5, as this may not exist on every system
  658. --- 234,248 ----
  659.       cat >>$message <<'EOM'
  660.   ------------------------------------------------------------------------
  661.   EOM
  662. +     # If there is a part #0, append it before calling the editor
  663. +     if test -f ${partname}00; then
  664. +         echo "mailkit: using previously unsent instructions..." >&2
  665. +         sleep 2
  666. +         cat ${partname}00 >>$message
  667. +     fi
  668.       # Call the editor
  669. !     ${EDITOR:-$editor} $message
  670.   
  671.       # Now remove the 4 lines at the top
  672.       # Do not use tail +5, as this may not exist on every system
  673. ***************
  674. *** 226,231 ****
  675. --- 255,261 ----
  676.       then
  677.           rm -f $message
  678.           edit=no
  679. +         echo "mailkit: discarding empty message." >&2
  680.       fi
  681.   elif test $feed = yes; then
  682.       edit=yes            # No differences from now on
  683. ***************
  684. *** 233,259 ****
  685.   fi
  686.   
  687.   # Print recipient list
  688. ! echo "Mailing \"$prog_name\" to the following recipient list:"
  689.   echo $address | tr ' ' '\012' | sed -e 's/^/    /'
  690.   
  691. ! for i in $partname??
  692.   do
  693. !     # Extracts the part number (will it work on all systems ?)
  694. !     # Note that this does not rely on the leader part of the name.
  695. !     part=`expr $i : '[^0-9]*\(.*\)'`
  696. !     # Remove leading zero(s).
  697. !     # Is there a simpler way to do this ?
  698. !     part_num=`expr ${part:-1} + 0`
  699.   
  700. !     # Protect against unexisting/unreadable files matching "$partname*"
  701. !     if  test -f $i -a -r $i
  702.       then
  703. !         echo "Mailing $i..."
  704.           # System V /bin/mail does not recognize header correctly, unless the
  705.           # first line is a subject. Oh well...
  706.           cat > $topmsg <<EOH
  707. ! Subject: $prog_name - kit #$part_num / $nfiles
  708.   To: $address
  709.   Precedence: bulk
  710.   X-Mailer: mailkit [version $version PL$pl]
  711. --- 263,294 ----
  712.   fi
  713.   
  714.   # Print recipient list
  715. ! echo "Mailing \"$prog_name\" ($range) to:"
  716.   echo $address | tr ' ' '\012' | sed -e 's/^/    /'
  717.   
  718. ! # Expand given range
  719. ! range=`$libdir/range $nfiles $range`
  720. ! for i in $range
  721.   do
  722. !     # Add leading zero if number < 10
  723. !     if test $i -lt 10; then
  724. !         pn="0$i"
  725. !     else
  726. !         pn=$i
  727. !     fi
  728.   
  729. !     # Compute file name
  730. !     part=$partname$pn
  731. !     # Protect against unexisting/unreadable files
  732. !     if  test -f $part -a -r $part
  733.       then
  734. !         echo "Mailing $part..."
  735.           # System V /bin/mail does not recognize header correctly, unless the
  736.           # first line is a subject. Oh well...
  737.           cat > $topmsg <<EOH
  738. ! Subject: $prog_name - kit #$i / $nfiles
  739.   To: $address
  740.   Precedence: bulk
  741.   X-Mailer: mailkit [version $version PL$pl]
  742. ***************
  743. *** 276,286 ****
  744.   EOM
  745.               fi
  746.           fi
  747. !         cat $i >> $topmsg
  748. !         $mailer $address < $topmsg
  749.           rm -f $topmsg
  750.       else
  751. !         echo "$this_prog: could not open $i" >&2
  752.       fi
  753.   done
  754.   
  755. --- 311,329 ----
  756.   EOM
  757.               fi
  758.           fi
  759. !         cat $part >> $topmsg
  760. !         # Remove part sucessfully sent unless '-p' was used
  761. !         if ${MAILER:-$mailer} $address < $topmsg; then
  762. !             test "$preserve" = no && rm -f $part
  763. !         else
  764. !             echo "mailkit: could not send $part." >&2
  765. !             if test "$preserve" = no; then
  766. !                 unsent="$unsent $part"
  767. !             fi
  768. !         fi
  769.           rm -f $topmsg
  770.       else
  771. !         echo "mailkit: could not open $part" >&2
  772.       fi
  773.   done
  774.   
  775. ***************
  776. *** 298,310 ****
  777.   EOM
  778.       cat >>$topmsg <$message
  779.       echo "Mailing instructions..."
  780. !     $mailer $address < $topmsg
  781. !     rm -f $topmsg
  782.   fi
  783.   
  784. - # Clean up
  785. - rm -f $message
  786. - test $preserve = no && rm -f $partname??
  787.   !NO!SUBS!
  788.   chmod 755 mailkit
  789.   $eunicefix mailkit
  790. --- 341,379 ----
  791.   EOM
  792.       cat >>$topmsg <$message
  793.       echo "Mailing instructions..."
  794. !     if ${MAILER:-$mailer} $address < $topmsg; then
  795. !         rm -f $topmsg $message ${partname}00
  796. !     else
  797. !         echo "mailkit: could not send instructions." >&2
  798. !         cp $message ${partname}00
  799. !         if test "$preserve" = no; then
  800. !             unsent="$unsent ${partname}00"
  801. !         else
  802. !             echo "mailkit: instruction message saved as ${partname}00." >&2
  803. !         fi
  804. !         rm -f $topmsg $message
  805. !     fi
  806. ! fi
  807. ! # When there are some parts which could not be sent and the command is run from
  808. ! # a terminal, ask the user what should be done with those unsent files.
  809. ! # Otherwise simply remove them.
  810. ! if test "$unsent"; then
  811. !     if test -t 0 -a -t 1; then
  812. !         echo "mailkit: would you like to remove the following unsent parts?"
  813. !         echo "mailkit: (keeping them would allow you to try again later.)"
  814. !         rm -i $unsent
  815. !     else
  816. !         echo "mailkit: removing unsent parts." >&2
  817. !         rm -f $unsent
  818. !     fi
  819. ! else
  820. !     if test -f ${partname}00; then
  821. !         echo "mailkit: removing instructions held in ${partname}00." >&2
  822. !         rm -f ${partname}00
  823. !     fi
  824.   fi
  825.   
  826.   !NO!SUBS!
  827.   chmod 755 mailkit
  828.   $eunicefix mailkit
  829.  
  830. Index: kit/range.SH
  831. *** kit/range.SH.old    Sat May  2 14:20:49 1992
  832. --- kit/range.SH    Sat May  2 14:20:49 1992
  833. ***************
  834. *** 0 ****
  835. --- 1,82 ----
  836. + case $CONFIG in
  837. + '')
  838. +     if test ! -f config.sh; then
  839. +         ln ../config.sh . || \
  840. +         ln ../../config.sh . || \
  841. +         ln ../../../config.sh . || \
  842. +         (echo "Can't find config.sh."; exit 1)
  843. +     fi 2>/dev/null
  844. +     . config.sh
  845. +     ;;
  846. + esac
  847. + case "$0" in
  848. + */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  849. + esac
  850. + echo "Extracting kit/range (with variable substitutions)"
  851. + $spitshell >range <<!GROK!THIS!
  852. + $startsh
  853. + !GROK!THIS!
  854. + $spitshell >>range <<'!NO!SUBS!'
  855. + # Peform range expansion (first parameter is maximum value for open ranges)
  856. + # Numbers may be space or comma separated. Ranges are a-b. If a is missing,
  857. + # 1 is assumed. If b is missing, the maximum value is used.
  858. + # $Id: range.SH,v 2.0.1.1 92/05/02 14:17:22 ram Exp $
  859. + #
  860. + # $Log:    range.SH,v $
  861. + # Revision 2.0.1.1  92/05/02  14:17:22  ram
  862. + # patch16: created
  863. + # 
  864. + # The first parameter gives the maximum number allowed
  865. + maxspec=$1
  866. + shift
  867. + # Make sure every range is space separated
  868. + set X `echo "$*" | sed -e 's/,/ /g'`
  869. + shift
  870. + range=''
  871. + for i in $*; do
  872. +     # Deal with incomplete ranges (e.g. -5 or 10-)
  873. +     case "X${i}X" in
  874. +     X-*) i="1$i";;
  875. +     *-X) i="$i$maxspec";;
  876. +     esac
  877. +     # Add the range (expanded when necessary) into $range
  878. +     case "$i" in
  879. +     *-*)
  880. +         end=`expr $i : '[0-9]*-\(.*\)'`
  881. +         start=`expr $i : '\(.*\)-[0-9]*'`
  882. +         vector=`awk "
  883. +             BEGIN {for (i = $start; i <= $end; i++) printf(\"%d \", i);}"
  884. +             < /dev/null`
  885. +         range="$range $vector"
  886. +         ;;
  887. +     *)
  888. +         range="$range $i"
  889. +         ;;
  890. +     esac
  891. + done
  892. + # Now remove duplicates, sort numbers and discard values above the maximum
  893. + echo "$range" | tr ' ' '\012' | awk '
  894. + BEGIN {
  895. +     max = '$maxspec';
  896. + }
  897. + /^[0-9]+/ {
  898. +     val = $1;
  899. +     if (val <= max)
  900. +         num[val] = val;
  901. + }
  902. + END {
  903. +     for (i = 1; i <= max; i++)
  904. +         if (num[i])
  905. +             printf("%d ", i);
  906. +     printf("\n");
  907. + }
  908. + '
  909. + !NO!SUBS!
  910. + chmod 755 range
  911. + $eunicefix range
  912.  
  913. Index: shar/makeshar.SH
  914. Prereq: 2.0.1.3
  915. *** shar/makeshar.SH.old    Sat May  2 14:21:03 1992
  916. --- shar/makeshar.SH    Sat May  2 14:21:03 1992
  917. ***************
  918. *** 17,25 ****
  919.   $startsh
  920.   # (c) Raphael Manfredi, December 25th 1991
  921.   
  922. ! # $Id: makeshar.SH,v 2.0.1.3 92/03/24 13:37:34 ram Exp $
  923.   #
  924.   # $Log:    makeshar.SH,v $
  925.   # Revision 2.0.1.3  92/03/24  13:37:34  ram
  926.   # patch14: fixed a typo
  927.   # 
  928. --- 17,28 ----
  929.   $startsh
  930.   # (c) Raphael Manfredi, December 25th 1991
  931.   
  932. ! # $Id: makeshar.SH,v 2.0.1.4 92/05/02 14:19:45 ram Exp $
  933.   #
  934.   # $Log:    makeshar.SH,v $
  935. + # Revision 2.0.1.4  92/05/02  14:19:45  ram
  936. + # patch16: maximum part size can now be specified via -s
  937. + # 
  938.   # Revision 2.0.1.3  92/03/24  13:37:34  ram
  939.   # patch14: fixed a typo
  940.   # 
  941. ***************
  942. *** 44,49 ****
  943. --- 47,54 ----
  944.   
  945.   # Default settings
  946.   partname=Part
  947. + maxsize=50000
  948. + value=$maxsize
  949.   
  950.   # Option parsing
  951.   while test $# -gt 0
  952. ***************
  953. *** 53,58 ****
  954. --- 58,67 ----
  955.           partname="$1"
  956.           shift
  957.           ;;
  958. +     -s) shift
  959. +         maxsize="$1"
  960. +         shift
  961. +         ;;
  962.       -*) echo "unknown option $1"
  963.           exit 1
  964.           ;;
  965. ***************
  966. *** 78,87 ****
  967.   # put in the archives, each line counting for one part. The first line is
  968.   # the number of archives to be used.
  969.   BEGIN {
  970. !     maxsize = 50000;    # Maximum shar size
  971. !     kitover = 1700;        # Kit overhead
  972. !     file = 130;            # File overhead
  973. !     max = 1;            # Maximum part number
  974.   
  975.       # We mimic makekit as much as possible to avoid any surprise for user
  976.       print "   File Name            Archive #       Description";
  977. --- 87,96 ----
  978.   # put in the archives, each line counting for one part. The first line is
  979.   # the number of archives to be used.
  980.   BEGIN {
  981. !     maxsize = '$maxsize';    # Maximum shar size
  982. !     kitover = 1700;            # Kit overhead
  983. !     file = 130;                # File overhead
  984. !     max = 1;                # Maximum part number
  985.   
  986.       # We mimic makekit as much as possible to avoid any surprise for user
  987.       print "   File Name            Archive #       Description";
  988.  
  989. Index: kit/Makefile.SH
  990. Prereq: 2.0.1.4
  991. *** kit/Makefile.SH.old    Sat May  2 14:20:27 1992
  992. --- kit/Makefile.SH    Sat May  2 14:20:28 1992
  993. ***************
  994. *** 18,26 ****
  995.   # Makefile for kit (sub-directory kit)
  996.   #
  997.   
  998. ! # $Id: Makefile.SH,v 2.0.1.4 92/04/20 17:32:57 ram Exp $
  999.   #
  1000.   # $Log:    Makefile.SH,v $
  1001.   # Revision 2.0.1.4  92/04/20  17:32:57  ram
  1002.   # patch15: now creates directories before installing
  1003.   # patch15: minikit is now created via a .SH file
  1004. --- 18,29 ----
  1005.   # Makefile for kit (sub-directory kit)
  1006.   #
  1007.   
  1008. ! # $Id: Makefile.SH,v 2.0.1.5 92/05/02 14:13:13 ram Exp $
  1009.   #
  1010.   # $Log:    Makefile.SH,v $
  1011. + # Revision 2.0.1.5  92/05/02  14:13:13  ram
  1012. + # patch16: added rules for new range script
  1013. + # 
  1014.   # Revision 2.0.1.4  92/04/20  17:32:57  ram
  1015.   # patch15: now creates directories before installing
  1016.   # patch15: minikit is now created via a .SH file
  1017. ***************
  1018. *** 47,53 ****
  1019.   !GROK!THIS!
  1020.   $spitshell >>Makefile <<'!NO!SUBS!'
  1021.   bin = kit mailkit unkit
  1022. ! scripts = $(bin) minikit
  1023.   scriptsh = kit.SH mailkit.SH unkit.SH minikit.SH
  1024.   added = Makefile config.sh
  1025.   
  1026. --- 50,57 ----
  1027.   !GROK!THIS!
  1028.   $spitshell >>Makefile <<'!NO!SUBS!'
  1029.   bin = kit mailkit unkit
  1030. ! lib = minikit range
  1031. ! scripts = $(bin) $(lib)
  1032.   scriptsh = kit.SH mailkit.SH unkit.SH minikit.SH
  1033.   added = Makefile config.sh
  1034.   
  1035. ***************
  1036. *** 71,77 ****
  1037.           ../install -m 755 $$file $(binsh); \
  1038.       done
  1039.       ../install -d $(libdir)
  1040. !     ../install -m 644 minikit $(libdir)
  1041.   
  1042.   clean:
  1043.       $(RM) -f $(scripts)
  1044. --- 75,83 ----
  1045.           ../install -m 755 $$file $(binsh); \
  1046.       done
  1047.       ../install -d $(libdir)
  1048. !     -for file in $(lib); do \
  1049. !         ../install -m 755 $$file $(libdir); \
  1050. !     done
  1051.   
  1052.   clean:
  1053.       $(RM) -f $(scripts)
  1054.  
  1055. Index: install.SH
  1056. Prereq: 2.0.1.2
  1057. *** install.SH.old    Sat May  2 14:20:22 1992
  1058. --- install.SH    Sat May  2 14:20:22 1992
  1059. ***************
  1060. *** 18,26 ****
  1061.   # @(#) Installing script accepting bsd-style arguments
  1062.   # Derived from a script found in the X11R4 distribution.
  1063.   
  1064. ! # $Id: install.SH,v 2.0.1.2 91/07/30 17:20:35 ram Exp $
  1065.   #
  1066.   # $Log:    install.SH,v $
  1067.   # Revision 2.0.1.2  91/07/30  17:20:35  ram
  1068.   # patch6: new install.SH script
  1069.   # 
  1070. --- 18,29 ----
  1071.   # @(#) Installing script accepting bsd-style arguments
  1072.   # Derived from a script found in the X11R4 distribution.
  1073.   
  1074. ! # $Id: install.SH,v 2.0.1.3 92/05/02 14:12:31 ram Exp $
  1075.   #
  1076.   # $Log:    install.SH,v $
  1077. + # Revision 2.0.1.3  92/05/02  14:12:31  ram
  1078. + # patch16: minor typo fix in mkdir_p
  1079. + # 
  1080.   # Revision 2.0.1.2  91/07/30  17:20:35  ram
  1081.   # patch6: new install.SH script
  1082.   # 
  1083. ***************
  1084. *** 53,59 ****
  1085.   # simulates mkdir -p
  1086.   mkdir_p='
  1087.   name=$1;
  1088. ! create='';
  1089.   while $test $name; do
  1090.       if $test ! -d "$name"; then
  1091.           create="$name $create";
  1092. --- 56,62 ----
  1093.   # simulates mkdir -p
  1094.   mkdir_p='
  1095.   name=$1;
  1096. ! create="";
  1097.   while $test $name; do
  1098.       if $test ! -d "$name"; then
  1099.           create="$name $create";
  1100. ***************
  1101. *** 60,66 ****
  1102.           name=`echo $name | $sed -e "s|^[^/]*$||"`;
  1103.           name=`echo $name | $sed -e "s|\(.*\)/.*|\1|"`;
  1104.       else
  1105. !         name='';
  1106.       fi;
  1107.   done;
  1108.   for file in $create; do
  1109. --- 63,69 ----
  1110.           name=`echo $name | $sed -e "s|^[^/]*$||"`;
  1111.           name=`echo $name | $sed -e "s|\(.*\)/.*|\1|"`;
  1112.       else
  1113. !         name="";
  1114.       fi;
  1115.   done;
  1116.   for file in $create; do
  1117.  
  1118. Index: badtar/badtar.SH
  1119. Prereq: 2.0.1.1
  1120. *** badtar/badtar.SH.old    Sat May  2 14:20:16 1992
  1121. --- badtar/badtar.SH    Sat May  2 14:20:17 1992
  1122. ***************
  1123. *** 12,26 ****
  1124.   case "$0" in
  1125.   */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1126.   esac
  1127. ! echo "Extracting man/badtar.$manext (with variable substitutions)"
  1128.   $rm -f badtar.$manext
  1129.   $spitshell >badtar.$manext <<!GROK!THIS!
  1130.   .TH BABTAR $manext ram
  1131.   ''' @(#) Manual page for badtar -- (c) ram January 1992
  1132.   '''
  1133. ! ''' $Id: badtar.SH,v 2.0.1.1 92/01/11 19:12:35 ram Exp $
  1134.   '''
  1135.   ''' $Log:    badtar.SH,v $
  1136.   ''' Revision 2.0.1.1  92/01/11  19:12:35  ram
  1137.   ''' patch11: created
  1138.   ''' 
  1139. --- 12,29 ----
  1140.   case "$0" in
  1141.   */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  1142.   esac
  1143. ! echo "Extracting badtar/badtar.$manext (with variable substitutions)"
  1144.   $rm -f badtar.$manext
  1145.   $spitshell >badtar.$manext <<!GROK!THIS!
  1146.   .TH BABTAR $manext ram
  1147.   ''' @(#) Manual page for badtar -- (c) ram January 1992
  1148.   '''
  1149. ! ''' $Id: badtar.SH,v 2.0.1.2 92/05/02 14:10:56 ram Exp $
  1150.   '''
  1151.   ''' $Log:    badtar.SH,v $
  1152. + ''' Revision 2.0.1.2  92/05/02  14:10:56  ram
  1153. + ''' patch16: fixed incorrect extraction message
  1154. + ''' 
  1155.   ''' Revision 2.0.1.1  92/01/11  19:12:35  ram
  1156.   ''' patch11: created
  1157.   ''' 
  1158.  
  1159. Index: MANIFEST
  1160. *** MANIFEST.old    Sat May  2 14:21:08 1992
  1161. --- MANIFEST    Sat May  2 14:21:09 1992
  1162. ***************
  1163. *** 28,33 ****
  1164. --- 28,34 ----
  1165.   kit/kit.SH                 The main script-shell
  1166.   kit/mailkit.SH             Mails parts generated by "kit"
  1167.   kit/minikit.SH             The minikit script for kit extraction
  1168. + kit/range.SH               Run range expansion within specified bound
  1169.   kit/unkit.SH               Reversal of "kit"
  1170.   man/Makefile.SH            Makefile for manual pages
  1171.   man/atob.SH                Manual page for "atob"
  1172.  
  1173. *** End of Patch 16 ***
  1174.