home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.unix
- From: ram@acri.fr (Raphael Manfredi)
- Subject: v26i230: kit - the ultimate mailing kit, Patch18
- Sender: unix-sources-moderator@efficacy.home.vix.com
- Approved: WhoAmI@efficacy.home.vix.com
-
- Submitted-By: ram@acri.fr (Raphael Manfredi)
- Posting-Number: Volume 26, Issue 230
- Archive-Name: kit/pch18
-
- [The latest patch for kit version 2.0 is #28.]
-
- System: kit version 2.0
- Patch #: 18
- Priority: LOW
- Subject: badtar now correctly reports links
- Subject: recipient file was wrongly reported as missing
- Subject: instruction message now saved in case of error
- Subject: mailkit attempts to retrieve saved instructions if any
- Subject: new -k option, added by Steve Tynor <fugue!tynor@gatech.edu>
- Subject: do not start unkiting until all parts are here (Jaap Vermulen)
- Subject: unkit can now deal with files holding multiple kit parts
- Subject: now return a meaningful exit status
- Subject: documents new -k option for unkit
- Subject: unkit can now deal with multiple kit parts in a single file
- Subject: (the previous feature was suggested by Bertrand Meyer)
- Date: Mon Aug 17 18:01:35 PDT 1992
- From: Raphael Manfredi <ram@eiffel.com>
-
- Description:
- Badtar now correctly reports links. That is, 'badtar -v' will
- correctly report the link and the file it is linked to. Of course,
- this has nothing to do with kit, but badtar is part of the package
- and so it makes it way through the patch.
-
- The recipient file was wrongly reported as missing when -l option
- was used in mailkit. I inadvertantly quoted "$recipient" and the
- variable contains a trailing space character...
-
- The instruction message now saved in case of error, and mailkit
- will attempt to retrieve it if re-issued on the same package later on.
-
- New -k option for unkit, added by Steve Tynor <fugue!tynor@gatech.edu>.
-
- Do not start unkiting until all parts are here (Jaap Vermulen). This
- enables you to start unkiting the parts for a given package as soon
- as they arrive. Unkit will stop after the unsharing step and will not
- go further until all the parts are there.
-
- Unkit can now deal with files holding multiple kit parts. That is to
- say, you may save all the kit files for a single package in one folder
- and then run unkit on that folder. If you do mix kit parts between
- packages, this will not work properly, but that's better than nothing.
- This feature has been requested by Bertrand Meyer <bertrand@eiffel.com>.
-
- Unkit will now return a meaningful exit status.
-
- The manual page was updated to reflect those changes.
-
-
- Fix: From rn, say "| patch -p -N -d DIR", where DIR is your kit source
- directory. Outside of rn, say "cd DIR; patch -p -N <thisarticle".
- If you don't have the patch program, apply the following by hand,
- or get patch (version 2.0, latest patchlevel).
-
- After patching:
- Configure -d # To update version information in config.sh
- make
- make install
-
- If patch indicates that patchlevel is the wrong version, you may need
- to apply one or more previous patches, or the patch may already
- have been applied. See the patchlevel.h file to find out what has or
- has not been applied. In any event, don't continue with the patch.
-
- If you are missing previous patches they can be obtained from me:
-
- Raphael Manfredi <ram@eiffel.com>
-
- If you send a mail message of the following form it will greatly speed
- processing:
-
- Subject: Command
- @SH mailpatch PATH kit 2.0 LIST
- ^ note the c
-
- where PATH is a return path FROM ME TO YOU either in Internet notation,
- or in bang notation from some well-known host, and LIST is the number
- of one or more patches you need, separated by spaces, commas, and/or
- hyphens. Saying 35- says everything from 35 to the end.
-
- To get some more detailed instructions, send me the following mail:
-
- Subject: Command
- @SH mailhelp PATH
-
-
- Index: patchlevel.h
- Prereq: 17
- 2c2
- < #define PATCHLEVEL 17
- ---
- > #define PATCHLEVEL 18
-
- Index: kit/unkit.SH
- Prereq: 2.0.1.10
- *** kit/unkit.SH.old Mon Aug 17 18:01:28 1992
- --- kit/unkit.SH Mon Aug 17 18:01:29 1992
- ***************
- *** 19,27 ****
- # @(#) (c) E. Mogenet April 1990
- # @(#) (c) R. Manfredi, 1990 1991
-
- ! # $Id: unkit.SH,v 2.0.1.10 92/04/20 17:39:08 ram Exp $
- #
- # $Log: unkit.SH,v $
- # Revision 2.0.1.10 92/04/20 17:39:08 ram
- # patch15: added support for acknowledgment
- #
- --- 19,33 ----
- # @(#) (c) E. Mogenet April 1990
- # @(#) (c) R. Manfredi, 1990 1991
-
- ! # $Id: unkit.SH,v 2.0.1.11 92/08/17 17:59:42 ram Exp $
- #
- # $Log: unkit.SH,v $
- + # Revision 2.0.1.11 92/08/17 17:59:42 ram
- + # patch18: new -k option, added by Steve Tynor <fugue!tynor@gatech.edu>
- + # patch18: do not start unkiting until all parts are here (Jaap Vermulen)
- + # patch18: unkit can now deal with files holding multiple kit parts
- + # patch18: now return a meaningful exit status
- + #
- # Revision 2.0.1.10 92/04/20 17:39:08 ram
- # patch15: added support for acknowledgment
- #
- ***************
- *** 98,113 ****
- decoding=hexdecode # Default decoding program
- preserve=yes # Preserve input files by default
- usebtar='' # Do not use badtar
-
- # In case we are interrupted, remove all the temporary files
- trap 'test -f zzz.minikit && rm -f `cat zzz.minikit` zzz.minikit; \
- ! rm -f z??.[hb][ea]*.??; echo >&2 "Aborted."; exit 1' 1 2 3 15
-
- # Old Bourne shells do not have functions
- usage='
- ! echo "Usage: unkit [-bhlprV] [file1 ... filen]";
- echo " "" -b : force use of badtar ($badtar by default).";
- echo " "" -h : give this help message.";
- echo " "" -l : list the contents of a the kit files.";
- echo " "" -p : preserve input files (default).";
- echo " "" -r : remove input files if unshar succeeds.";
- --- 104,121 ----
- decoding=hexdecode # Default decoding program
- preserve=yes # Preserve input files by default
- usebtar='' # Do not use badtar
- + key='' # Key for DES decoding
-
- # In case we are interrupted, remove all the temporary files
- trap 'test -f zzz.minikit && rm -f `cat zzz.minikit` zzz.minikit; \
- ! rm -f z??.[hbtx][eamt]*; echo >&2 "Aborted."; exit 1' 1 2 3 15
-
- # Old Bourne shells do not have functions
- usage='
- ! echo "Usage: unkit [-bhlprV] [-k key] [file1 ... filen]";
- echo " "" -b : force use of badtar ($badtar by default).";
- echo " "" -h : give this help message.";
- + echo " "" -k : sets the key used for data decryption.";
- echo " "" -l : list the contents of a the kit files.";
- echo " "" -p : preserve input files (default).";
- echo " "" -r : remove input files if unshar succeeds.";
- ***************
- *** 134,143 ****
- shift;;
- -b) usebtar='true'
- shift;;
- --) shift
- break
- ;;
- ! -*) echo "Unknown option $i"
- eval $usage;;
- *) break;;
- esac
- --- 142,154 ----
- shift;;
- -b) usebtar='true'
- shift;;
- + -k) key="-k $2"
- + shift
- + shift;;
- --) shift
- break
- ;;
- ! -*) echo "unknown option $1"
- eval $usage;;
- *) break;;
- esac
- ***************
- *** 162,167 ****
- --- 173,237 ----
- then
- eval $unshar_cmd
- else
- + # More than one kit part can be held in the files given as argument.
- + # Loop over each of the supplied arguments and extract parts based on
- + # the leading #!/bin/sh put by the shell archiver.
- +
- + list=''
- + count=0
- +
- + for file in $*; do
- + num=`awk '
- + BEGIN { a = 0; file = "zag.tmp" }
- + /^#![ ]*\/bin\/sh/ {
- + a++;
- + file = sprintf("zag.tmp.%d", a);
- + print > file;
- + next;
- + }
- + { print >> file }
- + END { printf("%d\n", a) }
- + ' $file`
- + name=''
- + case "$num" in
- + 0)
- + rm -f zag.tmp
- + echo "unkit: warning: no kit part in $file (skipped)." >&2
- + ;;
- + 1)
- + rm -f zag.tmp.1
- + echo "unkit: one kit part found in $file."
- + name=$file
- + ;;
- + *)
- + echo "unkit: $num kit parts found in $file." >&2
- + # Each part is renamed into a zag.xtr.* file to free the name
- + # space for the next file (each awk extracts into zag.tmp.*).
- + for part in zag.tmp.*; do
- + count=`expr $count + 1`
- + new="zag.xtr.$count"
- + mv $part $new
- + name="$name $new"
- + done
- + ;;
- + esac
- + list="$list $name"
- + done
- + set X $list
- + shift
- + case $# in
- + 1) ;;
- + *)
- + case "$count" in
- + 0)
- + echo "unkit: found a total of $# kit parts." >&2;;
- + *)
- + echo "unkit: found $# kit parts ($count parts extracted)." >&2;;
- + esac
- + ;;
- + esac
- +
- + # Loop over each identified kir part and unshar it
- for i
- do
- # The command expects "$a" to be the parameter
- ***************
- *** 168,177 ****
- eval "a=$i; $unshar_cmd" &&
- (test $preserve = no && rm $i)
- done
- fi
-
- # Now check for file names to find how to decode
- ! if test -f z[ace][gbc].ba.aa
- then
- decoding=atob
- else
- --- 238,250 ----
- eval "a=$i; $unshar_cmd" &&
- (test $preserve = no && rm $i)
- done
- +
- + # Clean up extracted parts (save disk space before tar extraction)
- + rm -f zag.[tx][mt]*
- fi
-
- # Now check for file names to find how to decode
- ! if test -f z[ace][gbc].ba.aa -a ! -f ark*isdone
- then
- decoding=atob
- else
- ***************
- *** 180,189 ****
- fi
- if test -f zcb.*.aa
- then
- ! decoding=$decoding" | des -d"
- elif test -f zec.*.aa
- then
- ! decoding=$decoding" | des -d -b"
- fi
-
- # Maybe we need badtar...
- --- 253,262 ----
- fi
- if test -f zcb.*.aa
- then
- ! decoding=$decoding" | des -d $key"
- elif test -f zec.*.aa
- then
- ! decoding=$decoding" | des -d -b $key"
- fi
-
- # Maybe we need badtar...
- ***************
- *** 210,216 ****
- sender=`cat zzz.ack`
- subject=`cat zzz.subject`
- echo "Sending acknowledgment to $sender..."
- - # There has to be a space between the two '(' for ksh.
- user=`(logname) 2>/dev/null || whoami`
- host=`(uname -n) 2>/dev/null || hostname 2>/dev/null`
- date=`date`
- --- 283,288 ----
- ***************
- *** 228,233 ****
- --- 300,316 ----
-
- test -f zzz.minikit && rm -f `cat zzz.minikit` zzz.minikit
- rm -f z??.[hb][ea]*.??
- +
- + # Emit error message if extraction was not successful
- + case "$status" in
- + 0) ;;
- + *)
- + echo "unkit: restoring failed." >&2
- + ;;
- + esac
- +
- + # Give a meaningful exit status
- + exit $status
- !NO!SUBS!
- chmod 755 unkit
- $eunicefix unkit
-
- Index: kit/mailkit.SH
- Prereq: 2.0.1.8
- *** kit/mailkit.SH.old Mon Aug 17 18:01:24 1992
- --- kit/mailkit.SH Mon Aug 17 18:01:25 1992
- ***************
- *** 18,26 ****
- # @(#) Mailer for kit files
- # @(#) (c) R. Manfredi, 1990 1991
-
- ! # $Id: mailkit.SH,v 2.0.1.8 92/05/02 14:17:01 ram Exp $
- #
- # $Log: mailkit.SH,v $
- # Revision 2.0.1.8 92/05/02 14:17:01 ram
- # patch16: there can now be multiple occurences of -l
- # patch16: -p is now the default option unless -c is used
- --- 18,31 ----
- # @(#) Mailer for kit files
- # @(#) (c) R. Manfredi, 1990 1991
-
- ! # $Id: mailkit.SH,v 2.0.1.9 92/08/17 17:55:16 ram Exp $
- #
- # $Log: mailkit.SH,v $
- + # Revision 2.0.1.9 92/08/17 17:55:16 ram
- + # patch18: recipient file was wrongly reported as missing
- + # patch18: instruction message now saved in case of error
- + # patch18: mailkit attempts to retrieve saved instructions if any
- + #
- # Revision 2.0.1.8 92/05/02 14:17:01 ram
- # patch16: there can now be multiple occurences of -l
- # patch16: -p is now the default option unless -c is used
- ***************
- *** 86,91 ****
- --- 91,97 ----
- partname='Kit' # Default part's name
- range='1-' # Default range (all parts)
- unsent='' # Parts which could not be sent
- + error='' # True when error occurred
-
- # Old Bourne shells do not have functions
- usage='
- ***************
- *** 174,180 ****
-
- # When a recipient file is provided, ignore the remaining of the command line
- if test "$recipients"; then
- ! if test -r "$recipients"; then
- # The format of the file is simple: a list of addresses, one per
- # line. Shell-style comments are allowed and multiple addresses on a
- # single line may be separated with spaces or commas.
- --- 180,186 ----
-
- # When a recipient file is provided, ignore the remaining of the command line
- if test "$recipients"; then
- ! if test -r $recipients; then
- # The format of the file is simple: a list of addresses, one per
- # line. Shell-style comments are allowed and multiple addresses on a
- # single line may be separated with spaces or commas.
- ***************
- *** 212,217 ****
- --- 218,229 ----
- # Count how many files there are
- set X $partname??
- shift
- +
- + # Remove instructions or number of parts will be off by 1
- + case $1 in
- + "${partname}00") shift;;
- + esac
- +
- nfiles=$#
-
- if test $edit = yes
- ***************
- *** 236,242 ****
- EOM
- # If there is a part #0, append it before calling the editor
- if test -f ${partname}00; then
- ! echo "mailkit: using previously unsent instructions..." >&2
- sleep 2
- cat ${partname}00 >>$message
- fi
- --- 248,254 ----
- EOM
- # If there is a part #0, append it before calling the editor
- if test -f ${partname}00; then
- ! echo "mailkit: using previously kept instructions..." >&2
- sleep 2
- cat ${partname}00 >>$message
- fi
- ***************
- *** 317,322 ****
- --- 329,335 ----
- test "$preserve" = no && rm -f $part
- else
- echo "mailkit: could not send $part." >&2
- + error='true'
- if test "$preserve" = no; then
- unsent="$unsent $part"
- fi
- ***************
- *** 324,329 ****
- --- 337,343 ----
- rm -f $topmsg
- else
- echo "mailkit: could not open $part" >&2
- + error='true'
- fi
- done
-
- ***************
- *** 342,357 ****
- cat >>$topmsg <$message
- echo "Mailing instructions..."
- if ${MAILER:-$mailer} $address < $topmsg; then
- ! rm -f $topmsg $message ${partname}00
- else
- echo "mailkit: could not send instructions." >&2
- ! cp $message ${partname}00
- ! if test "$preserve" = no; then
- ! unsent="$unsent ${partname}00"
- ! else
- ! echo "mailkit: instruction message saved as ${partname}00." >&2
- ! fi
- ! rm -f $topmsg $message
- fi
- fi
-
- --- 356,375 ----
- cat >>$topmsg <$message
- echo "Mailing instructions..."
- if ${MAILER:-$mailer} $address < $topmsg; then
- ! rm -f $topmsg
- else
- echo "mailkit: could not send instructions." >&2
- ! error='true'
- ! rm -f $topmsg
- ! fi
- ! fi
- !
- ! # Save instructions as part #0 in case of error
- ! if test "$error" -a -f $message; then
- ! cp $message ${partname}00 &&
- ! echo "mailkit: instruction message saved as ${partname}00." >&2
- ! if test $preserve = no; then
- ! unsent="$unsent ${partname}00"
- fi
- fi
-
- ***************
- *** 368,379 ****
- rm -f $unsent
- fi
- else
- ! if test -f ${partname}00; then
- echo "mailkit: removing instructions held in ${partname}00." >&2
- rm -f ${partname}00
- fi
- fi
-
- !NO!SUBS!
- chmod 755 mailkit
- $eunicefix mailkit
- --- 386,398 ----
- rm -f $unsent
- fi
- else
- ! if test -f ${partname}00 -a ! "$error"; then
- echo "mailkit: removing instructions held in ${partname}00." >&2
- rm -f ${partname}00
- fi
- fi
-
- + rm -f $message
- !NO!SUBS!
- chmod 755 mailkit
- $eunicefix mailkit
-
- Index: badtar/badtar.c
- Prereq: 2.0.1.2
- *** badtar/badtar.c.old Mon Aug 17 18:01:20 1992
- --- badtar/badtar.c Mon Aug 17 18:01:21 1992
- ***************
- *** 1,9 ****
- /*
- * I got that from net.sources and extended it -- RAM
- *
- ! * $Id: badtar.c,v 2.0.1.2 92/03/24 13:37:13 ram Exp $
- *
- * $Log: badtar.c,v $
- * Revision 2.0.1.2 92/03/24 13:37:13 ram
- * patch14: fixed some loose declarations
- *
- --- 1,12 ----
- /*
- * I got that from net.sources and extended it -- RAM
- *
- ! * $Id: badtar.c,v 2.0.1.3 92/08/17 17:53:34 ram Exp $
- *
- * $Log: badtar.c,v $
- + * Revision 2.0.1.3 92/08/17 17:53:34 ram
- + * patch18: badtar now correctly reports links
- + *
- * Revision 2.0.1.2 92/03/24 13:37:13 ram
- * patch14: fixed some loose declarations
- *
- ***************
- *** 28,33 ****
- --- 31,49 ----
- #define BLOCKF 20 /* Blocking factor */
- #define TAPEBLOCK (BLOCKF * TBLOCK) /* Blocksize */
-
- + /* Values used in linkflag field */
- + #define REGTYPE '0' /* Regular file */
- + #define AREGTYPE '\0' /* Regular file */
- + #define LNKTYPE '1' /* Regular link */
- + #define SYMTYPE '2' /* Linkflag for symbolic link */
- + #define CHRTYPE '3' /* Character special file */
- + #define BLKTYPE '4' /* Block special file */
- + #define DIRTYPE '5' /* Directory */
- + #define FIFOTYPE '6' /* Named pipe */
- + #define CONTTYPE '7' /* Reserved */
- +
- + #define islink(c) ((c) == LNKTYPE || (c) == SYMTYPE)
- +
- int verbose = 0; /* Verbose output control */
- int silent = 0; /* Silent output control */
- char *default_tape = TAPEDEV; /* Default device tape file */
- ***************
- *** 337,348 ****
- if (check_sum(hp) == chksum && hp->dbuf.name[0] != '\0') {
-
- if (verbose) {
- /* Write some informations about the header we've got */
- fprintf(logf, "*** Header found.\n");
- fprintf(logf, "*** Name: %s\n", hp->dbuf.name);
- fprintf(logf, "*** Size: %d\n", size);
- fprintf(logf, "*** Mode: %s\n", hp->dbuf.mode);
- ! fprintf(logf, "*** Link flag: %c\n", hp->dbuf.linkflag);
- }
-
- /* we have a header */
- --- 353,388 ----
- if (check_sum(hp) == chksum && hp->dbuf.name[0] != '\0') {
-
- if (verbose) {
- + char *type_flag;
- /* Write some informations about the header we've got */
- fprintf(logf, "*** Header found.\n");
- fprintf(logf, "*** Name: %s\n", hp->dbuf.name);
- fprintf(logf, "*** Size: %d\n", size);
- fprintf(logf, "*** Mode: %s\n", hp->dbuf.mode);
- ! switch (hp->dbuf.linkflag) {
- ! case AREGTYPE:
- ! case REGTYPE:
- ! type_flag = "regular file"; break;
- ! case LNKTYPE:
- ! type_flag = "hard link"; break;
- ! case SYMTYPE:
- ! type_flag = "symbolic link"; break;
- ! case CHRTYPE:
- ! type_flag = "character special file"; break;
- ! case BLKTYPE:
- ! type_flag = "block special file"; break;
- ! case DIRTYPE:
- ! type_flag = "directory"; break;
- ! case FIFOTYPE:
- ! type_flag = "named pipe (FIFO)"; break;
- ! case CONTTYPE:
- ! type_flag = "RESERVED"; break;
- ! default:
- ! type_flag = "UNKNOWN"; break;
- ! }
- ! fprintf(logf, "*** Link flag: %s\n", type_flag);
- ! if (islink(hp->dbuf.linkflag))
- ! fprintf(logf, "*** Link name: %s\n", hp->dbuf.linkname);
- }
-
- /* we have a header */
- ***************
- *** 362,374 ****
- }
-
- /* Remove the leading '/' to get non absolute path */
- ! if (relative && hp->dbuf.name[0] == '/') {
- ! sprintf(hp->dbuf.name, "%s", hp->dbuf.name + 1);
- ! sprintf(hp->dbuf.chksum, "%o", check_sum(hp));
- }
-
- /* Compute number of blocks used by the file */
- fblocks = (size%TBLOCK) ? size/TBLOCK + 1 : size/TBLOCK;
- lprintf(logf,"%s (%d bytes)\n", hp->dbuf.name, size);
- nblock++, write(1, hp, TBLOCK); /* Write the header */
- continue;
- --- 402,421 ----
- }
-
- /* Remove the leading '/' to get non absolute path */
- ! if (relative) {
- ! if (hp->dbuf.name[0] == '/') {
- ! sprintf(hp->dbuf.name, "%s", hp->dbuf.name + 1);
- ! sprintf(hp->dbuf.chksum, "%o", check_sum(hp));
- ! }
- ! if (islink(hp->dbuf.linkflag) && hp->dbuf.linkname[0] == '/') {
- ! sprintf(hp->dbuf.linkname, "%s", hp->dbuf.linkname + 1);
- ! sprintf(hp->dbuf.chksum, "%o", check_sum(hp));
- ! }
- }
-
- /* Compute number of blocks used by the file */
- fblocks = (size%TBLOCK) ? size/TBLOCK + 1 : size/TBLOCK;
- + fblocks = islink(hp->dbuf.linkflag) ? 0 : fblocks;
- lprintf(logf,"%s (%d bytes)\n", hp->dbuf.name, size);
- nblock++, write(1, hp, TBLOCK); /* Write the header */
- continue;
-
- Index: man/kit.SH
- Prereq: 2.0.1.9
- *** man/kit.SH.old Mon Aug 17 18:01:32 1992
- --- man/kit.SH Mon Aug 17 18:01:33 1992
- ***************
- *** 18,26 ****
- .TH KIT $manext ram
- ''' @(#) Manual page for mailing kit -- (c) ram July 1990
- '''
- ! ''' $Id: kit.SH,v 2.0.1.9 92/05/02 14:19:05 ram Exp $
- '''
- ''' $Log: kit.SH,v $
- ''' Revision 2.0.1.9 92/05/02 14:19:05 ram
- ''' patch16: documents new -r option for mailkit and -S for kit
- ''' patch16: mailkit now supports multiple -l options
- --- 18,31 ----
- .TH KIT $manext ram
- ''' @(#) Manual page for mailing kit -- (c) ram July 1990
- '''
- ! ''' $Id: kit.SH,v 2.0.1.10 92/08/17 18:01:16 ram Exp $
- '''
- ''' $Log: kit.SH,v $
- + ''' Revision 2.0.1.10 92/08/17 18:01:16 ram
- + ''' patch18: documents new -k option for unkit
- + ''' patch18: unkit can now deal with multiple kit parts in a single file
- + ''' patch18: (the previous feature was suggested by Bertrand Meyer)
- + '''
- ''' Revision 2.0.1.9 92/05/02 14:19:05 ram
- ''' patch16: documents new -r option for mailkit and -S for kit
- ''' patch16: mailkit now supports multiple -l options
- ***************
- *** 76,82 ****
- \fBmailkit\fR [ \fB\-EFVcefhp\fR ] [ \fB\-l\fI file\fR ]
- [ \fB\-n\fI partname\fR ] \fItitle\fR [ \fIaddress(es)\fR ]
- .sp
- ! \fBunkit\fR [ \fB\-bhlprV\fR ] [ \fIfiles\fR ]
- .SH DESCRIPTION
- \fIKit\fR is the ultimate mailing tool. It enables you to mail
- data without any consideration of possible escape sequences or
- --- 81,87 ----
- \fBmailkit\fR [ \fB\-EFVcefhp\fR ] [ \fB\-l\fI file\fR ]
- [ \fB\-n\fI partname\fR ] \fItitle\fR [ \fIaddress(es)\fR ]
- .sp
- ! \fBunkit\fR [ \fB\-bhlprV\fR ] [ \fB\-k\fI key\fR ] [ \fIfiles\fR ]
- .SH DESCRIPTION
- \fIKit\fR is the ultimate mailing tool. It enables you to mail
- data without any consideration of possible escape sequences or
- ***************
- *** 203,208 ****
- --- 208,219 ----
- If no file name is given to \fIunkit\fR, the standard input is processed.
- This is useful to process messages directly from a mail user agent.
- .PP
- + You may save more than one kit part into a file and give that file as an
- + argument to \fIunkit\fR, which will then identify and extract the embeded
- + parts to process them. The program lists on the standard error the files
- + as they are processed and tells you how many kit parts it found within each
- + file.
- + .PP
- Sometimes, \fItar\fR does not work well accross NFS and will fail restoring
- ownership on files, even with the \-\fBo\fR option. If you chose to install
- \fIbadtar\fR at configuration time, you may use \-\fBb\fR to instruct
- ***************
- *** 215,220 ****
- --- 226,235 ----
- ignored. You may also use \fIunkit\fR in place of \fIunshar\fR: it will
- stop after having unpacked the shell archives if it does not detect any
- kit file.
- + .PP
- + When unpacking crypted archives, the \fB\-k\fR option may be used to
- + specify the key to be used by DES. If you do not supply it, DES will
- + prompt you on the terminal.
- .PP
- For all of these commands, option \fB\-V\fR prints the version
- number with the current patch level and exits, while \fB\-h\fR gives
-
- *** End of Patch 18 ***
-