Description

  This version of uuencode/uudecode is based on `Almost foolproof 
  uuencode/uudecode', versions 3.1 and 3.4, resp., from 1987/88, which 
  in turn were derived from the original Berkeley UN*X program. It had 
  (and still has) the following features:
  
  - Trailing blanks which have been removed by mailservers and/or 
    gateways are restored.

  - Two common internetwork transpositions are accepted, i.e. tilde 
    instead of circonflex, and accent grave instead of blank. (The 
    latter is not a gateway/network thing, but a feature of some UN*X 
    uuencode, to avoid the blank compression by some protocols.)

  - Multiple-file decoding. If the files to be included do not exist, 
    uudecode.ttp will attempt to go on with the same file, in case the 
    multiple files have just been concatenated upon reception.

  - Line sequence checking, allowing the detection of missing, 
    duplicate, or corrupted lines or files. This feature is enabled if 
    the first line of the first uuencoded file is postfixed with a 'z' 
    (this is done automatically by the uuencode.ttp companion 
    program).

  - Complete check of the uudecoding process by use of the -d flag. 
    This will give a detailed account of what the program does, and in 
    addition enables a complete character-by-character check of the 
    file to be decoded.

  - If a file starts with a character table, it will be used; this 
    table is also produced by the companion uuencode.ttp.

  - Instant decoding of multiple uuencoded files in one file.

  - Complete compatibility with true UN*X uuencoded files (but not if 
    the multiple part option of uuencode.ttp is used).
  
  
  The present version has the following additions and modifications:
  
  - The file to be decoded is loaded entirely into memory. If you have 
    insufficient RAM, the file must be split in multiple parts, using 
    `include <filename>' as the last line of the individual parts 
    (minus the last part) and `begin <filename>' as the begin line.
  
  - Full pathnames are truncated to filename only for use in begin 
    line of encoded files (uuencode).
    
  - Command line parsing is done by the GNU getopt function and a 
    few options have been added.
    
  - Commands can be read from a file. Useful for large (background) 
    jobs.
  
  - Speed is improved. This version of uudecode is easily twice as 
    fast as Esscode, and even eight times faster than Esscode when 
    decoding multiple files.
    
  - The most important and useful addition, however, is that the 
    uudecode program will skip garbage lines. This enables you to 
    decode binary files sent by ftp-mailservers in multiple parts, 
    without using an editor to remove the lines in between (no need, 
    therefore, for MURKS!). Of course, this method can never be one 
    hundred percent foolprove, since any interpretive device in the 
    universe - and that includes you! - can ultimatley be fooled 
    (variation 1 on Murphy's Law). Chances, however, that it will be 
    fooled by accident, are very small indeed, and if you use sequence 
    checking, plus, perhaps, the debug option, that small probability 
    will even be further reduced. But use an editor if you don't trust 
    this feature.

Usage

  uudecode -[vVhHnds<source dir>t<target dir>f<commands file>] {input files)
  uuencode -[l<nlines>dhHvt<target dir>f<commands file>] {input files} [-]
  
  Options may be specified separately or concatenated, i.e. `-v -h -d' 
  is the same as `-vhd'. Also, an option and its argument may be 
  concatenated, i.e. `-t c:\output' is the same as `-tc:\output'.
  
  Options common to both programs:
  
    -v Print version info and exit.
  
    -H Print usage and exit.
  
    -h Hold screen (press any key to continue).
    
    -d Debug mode. In this mode, uudecode will perform a 
       character-by-character check of the whole file and output 
       extensive information about the decoding and error checking 
       process; uuencode will be verbose.
    
    -t <directory name> Target directory. Output files will be put in 
       this directory. Trailing (back)slashes are optional. If the 
       directory doesn't exist, it will be created.
    
    -f <filename> Read commands from file; `filename' must be full path 
       if the file is in a different directory. Each line in the file 
       will be read as a command line and subsequently executed. In 
       addition, jobs may be executed conditionally by concatenating 
       them on the same line with the logical operators `&&' and '||',
       where `&&' means: execute next job iff former job returned 0, and 
       `||' means: execute next job iff former job returned non-0.
       The logical operators are parsed as normal commands, i.e. 
       surround them with spaces/tabs (or, in other words: this is not 
       C).
       Empty lines and lines beginning with `#' are ignored.
       NOTE: The logical concatenation of jobs is dependant on the 
       type of error in the former job. Some errors cause the program to 
       abort.
       
  Options uudecode:
    
    -V Verbose mode. The program will output succinct information 
       about the decoding process (see also option -d).
    
    -n No line sequence check.
    
    -s <directory name> Source directory for all input files (useful 
       when decoding multiple files).
    
  Options uuencode:
  
    -l n n = maximum number of lines per output file.
    
    -T Generate table.
    
  The name(s) of the file(s) to be en/decoded may appear anywhere on the 
  command line. There's no limit to the number of input files and the 
  input filenames may, in addition, contain the usual wildcards `*' and 
  `?'. Output filenames will be automatically created by both uuencode 
  and uudecode. Output is piped to stdout by uuencode when input files 
  on the command line are followed by `-' (disabled with option `-t').
  
  Examples
  
    The following will encode any file on drive `e' matching the 
    wildcard pattern foo*.ttp into multiple output files *.uaa, *.uab, 
    etc., containing a maximum of 500 lines each. The files will be 
    placed in directory d:\output:
    
      uuencode -l500 -td:\output e:\foo*.ttp
    
    The following will decode multiple files foo.uaa, foo.uab, etc., 
    plus multiple files oof.uaa, oof.uab, etc. in source directory 
    e:\input and place the output files in target directory d:\output, 
    with debug mode switched on and no line checking:
    
      uudecode -d -n -s e:\input -t d:\output foo.uaa oof.uaa
    
    The same can, of course, be achieved by
    
      uudecode -dnse:\input -td:\output *.uaa
      
    The following will execute the commands in file cmd.txt:
    
      uuen/decode -f cmd.txt
    
    Example of a commands file for uudecode:
    
      # decode all uue files in directory c:\uue and place the binaries
      # in c:\bin:
      -tc:\bin -sc:\uue *.uue
      
    Example of a commands file for uuencode:
    
      # encode file foo.ttp, with table, and place the result in
      # c:\uue; do the same with file oof.ttp IFF the encoding of
      # foo.ttp wasn't successful:
      -Ttc:\uue foo.ttp || -Ttc:\uue oof.ttp
      
Postcardware

  This software is "postcardware", so please send me a postcard if you 
  use it.
  
Bugs

  Every non-trivial program contains at least one bug, so, in that
  sense, I hope these have bugs too. Please report to me if you find 
  one.

Distribution

  uuencode.ttp and uudecode.ttp may be freely distributed, provided 
  this file is included in the distribution.
  
Disclaimer

  Use these programs at your own risk. I will not accept any liability 
  for damage caused by this software.

Tip

  For getting the most out of these programs in terms of ease of use, 
  install them with Holger Weets' `Pacshell'.


Jos den Bekker

Address:
Rhijnvis Feithstraat 35
1054 TV  Amsterdam
Netherlands

Email:
<josdb@xs4all.nl>

WWW:
http://www.xs4all.nl/~josdb

------------------------------------------------
History after first release:

05.10.96: Bug in checking integrity of line fixed

14.11.96: Option `-h' in uuencode didn't work; fixed for both 
          programs: it now works always, regardless of where it 
          appears on the command line.
          Target directory created when it doesn't exist.

Version 2.2:

  06.12.96: Filename may appear anywhere on the command line. First 
            release with version number :)
            Bug in parsing filename fixed.

  07.12.96: Yet another bug in command line processing fixed.

Version 2.3 (not released):

  12.12.96: Multiple input files on command line, plus use of wildcards.

Version 2.4:

  12.12.96  Read commands from file.

  15.12.96: Table only generated on request.
          