NAME
UUDeview - a powerful decoder for binary files
SYNOPSIS
uudeview [options] [@file] file(s)
DESCRIPTION
UUDeview is a smart decoder for attachments that you have received in
encoded form via electronic mail or from the usenet. It is similar to
the standard uudecode(1) command, yet with more comfort and
flexibility. UUDeview supports the uuencoding, xxencoding, Base64,
yEncoding and BinHex encoding methods, and is able to handle split-
files (which have been sent in multiple parts) as well as multiple
files at once, thus greatly simplifying the decoding process. Usually,
you will not have to manually edit files to prepare them for decoding.
After invoking uudeview, it will scan all given files for encoded data,
sort them and their parts and then present you with the list of files
that seem like they can be decoded properly. You can then pick files
individually for decoding.
OPTIONS
BEHAVIOR
-i Disables interactivity. After scanning the files and sorting
everything out, the program will not promt you for whether a
file shall be decoded or not, but batch-decodes all available
files. This is the default when reading from standard input.
-a Autorename option. If a target file already exists, and this
option is given, a dot and a unique sequence number is appended
to the file name. I.e., foo.gif becomes foo.gif.1 if decoded a
second time.
+a An alternative incarnation of autorename. If a target file
already exists, an underscore and a unique sequence number is
inserted into the filename before the first dot, i.e., foo.gif
becomes foo_1.gif.
-o Gives the OK to overwrite existing files when decoding. In
interactive mode, the default is to prompt the user whether to
overwrite, rename or skip the file. This option takes precedence
over -a. In non-interactive mode (using -f ), the default is to
overwrite files without asking.
+o Says it’s not OK to overwrite files. This is useful in non-
interactive mode, so that existing files are untouched. This has
lesser precedence than -a.
-c Autoclear. Remove all input files that were successfully
decoded. Use with care! UUDeview only checks if any data was
decoded from an input file, but does not care about any other
contents of that input file, or whether a file also held an
incomplete attachment.
-p path
Sets the path where decoded files shall be written to. This must
be a valid pathname, or you’ll get errors when trying to decode
anything. Defaults to the current working directory.
-m Ignore file mode. Uuencoded and xxencoded files have the
original file permissions stored on the begin line. Unless this
option is given, UUDeview will restore them without checking if
they are sensible. With this option, the permissions are reset
to a default of 0666.
TWEAKING
-z Enforces stricter MIME adherance. Normally, the program tries to
find encoded data even in "text/plain" plaintext parts of MIME
messages. With this option given, UUDeview will limit this
capability, and will not accept apparently incomplete encoded
messages (for example, seemingly uuencoded data without begin or
end lines). You can tighten this option even more by using it
twice, or by using -z2. Then, UUDeview will not check plaintext
sections of MIME messages for encoded data at all and behave
fully MIME-compliant. Neither option affects the behavior on
non-MIME input files. This option needs a better name, but I’m
slowly running out of option letters.
-f Uses fast mode for file scanning. The program assumes that each
input file holds at most one part, which is usually true for
files in a news spool directory. This option breaks decoding of
input files with multiple articles. Also, certain sanity checks
are disabled, probably causing erroneous files to be presented
for decoding. Sometimes you’ll get error messages when
decoding, sometimes you’ll just receive invalid files. Don’t use
-f if you can’t live with these problems.
-r Ignore reply messages, i.e. all messages whose subject starts
with Re:
-t Use plaintext messages. Usually, UUDeview only presents encoded
data for decoding. Plaintext messages are only shown if they
have an associated file name. With this option set, unnamed text
parts from MIME messages and non-encoded messages are also
offered. Unnamed messages are assigned a unique name in the form
of a sequential four-digit number.
-d Sets the program into desperate mode. It will then offer you to
decode incomplete files. This is useful if you are missing the
last part of a 50-parts posting, but in most cases the
desperately-decoded files will simply be corrupt and unusable.
The degree of usefulness of an incomplete file depends on the
file type.
-b This changes UUDeviews "bracket policy." UUDeview looks at a
message’s subject line, and reads numbers in brackets as the
part number, as in (3/7), which is read as the third message in
a series of seven. By default, numbers in parentheses () are
preferred over numbers in brackets []. You can change this using
either -b or, for clarity -b[].
-s Read "minus smartness". This option turns off automatic part
number detection from the subject line. Try this option if
UUDeview fails to parse the subject line correctly and makes
errors at guessing part numbers, resulting in incorrect ordering
of the parts. With this option, parts are always put together
sequentially (so the parts must be correctly ordered in the
input file). Also, with this option, the program cannot detect
that parts are missing. Note: The correct part number found in
proper MIME files is still evaluated. If this option is given
twice, the subject itself is ignored, too, and won’t be used to
group parts. Use if the messages that the parts come delivered
in have different subject lines.
OTHER OPTIONS
-q (Quiet) Disables verbosity. Normally, the program prints some
status messages while reading the input files, which can be very
helpful if something should go wrong. Use if these messages
disturb you. Disables progress bars. See -n option.
-v (disables Verbosity) Disables verbose messages, i.e. notes are
not displayed, but does not remove warnings and errors. Is not
as quiet as the -q (Quiet) option.
-n No progress bars. Normally, UUDeview prints ASCII bars crawling
up to 100 percent, but does not check if your terminal is
capable of displaying them. Use this switch if your terminal
isn’t, or if you find the bars annoying.
+e exts
Selects only the files with the given extensions for decoding,
others will be ignored. +e .gif.jpg would decode all gif and
jpeg files, but not tif or other files. The list of extensions
works case-insensitive.
-e exts
The reverse of the above.
You will experience unwanted results if you try to mix +e and -e
options on the command line.
INPUT OPTIONS
file(s)
The files to be scanned for encoded files. You can also give a
single hyphen ´-´ to read from standard input. Any number of
files may be given, but there is usually a limitation of 128
options imposed by the shell. If you are composing the list of
files with wildcards, make sure you don’t accidentally feed the
program with binary files. This will result in undefined
behaviour.
@file Makes UUDeview read further options from the file. Each line of
the file must hold exactly one option. The file is erased after
the program finishes. This feature may be used to specify an
unlimited number of files to be scanned. Combined with the
powers of find(1), entire directory trees (like the news spool
directory) can be processed.
Options may also be set in the $UUDEVIEW environment variable, which is
read before processing the options on the command line.
DECODING
After all input files have been scanned, you are asked for each file
what do do with it. Of course, the usual answer is to decode it, but
there are other possibilities. You can use the following commands (each
command is a single letter):
d (D)ecode the file and write the decoded file to disk, with the
given name.
y (Y)es does the same as (d).
x E(x)tract also decodes the file.
a Decodes all remaining files without prompting.
n Skips this file without decoding it.
b Steps back to the previous file.
r Rename. You can choose a different name for the file in order to
save it under this new name.
p Set the path where decoded files shall be written to. This path
can also be set with the -p command line option.
i Displays info about the file, if present. If a multipart posting
had a zeroeth part, it is printed, otherwise the first part up
to the encoded data is printed.
e Execute a command. You can enter any arbitrary command, possibly
using the current file as an argument. All dollar signs ’$’ in
this command line are replaced with the filename of the current
file (speaking correctly, the name of a temporary file). You
should not background processes using this temporary file, as
programs might get confused if their input file suddenly
disappears.
l List a file. Use this command only if you know that the file in
question is a textfile, otherwise, you’ll get a load of junk.
q Quits the program immediately.
? Prints a short description of all these commands.
If you don’t enter a command and simply hit return at the prompt, the
default command, decoding the file, is used.
RUNTIME MESSGAGES
In verbose mode (that is, if you didn’t disable verbosity with the -v
option), progress messages will appear. They are extremely helpful in
tracing what the program does, and can be used to figure out the reason
why files cannot be decoded, if you understand them. This section
explains how to interpret them. Understanding this section is not
essential to operate the program.
First, there are "Loading" messages, which begin with the string
"Loaded". Each line should feature the following items:
Source File
The first item is the source file from which a part was loaded.
Many parts can be detected within a single file.
Subject Line
The complete subject is reproduced in single quotes.
Identifier
The program derives a unique identification for this thread from
the subject line, for grouping articles that look like they
belong to the same file. The result of this algorithm is
presented in braces.
Filename
If a filename was detected on the subject line or within the
data (for example, on a begin line, or as part of the Content-
Type information).
Part Number
The part number derived from the subject line, or, in the case
of properly MIME-formatted messages, from the "part"
information.
Begin/End
If a "begin" or "end" token was detected, it is printed here.
Encoding Type
If encoded data was detected within this part, either "UUdata",
"Base64", "XXdata" or "Binhex" is printed here.
More messages are printed after scanning has completed. A single line
will be printed for each group of articles. The contents of this line
are best understood by looking at an example. Here is one:
Found ’mailfile.gz’ State 16 UUData Parts begin 1 2 3 4 5 end 6 OK
This indicates that the file mailfile.gz has been found. The file was
uuencoded ("UUData") and consists of 6 parts. The "begin" token was
found in the first part, and the "end" token was found in the sixth
part. Because it looks like everything’s there, this file is tagged as
being "OK". The State is a set of bits, where the following values may
be or’ed:
1 Missing Part
2 No Begin
4 No End
8 No encoded data found.
16 File looks Ok
32 An error occured during decoding of the file.
64 File was successfully decoded.
NOTES
Because the program cannot receive terminal input when a file is being
read from standard input, interactivity is automatically disabled in
this case.
UUDeview is aware of MIME messages, but normally ignores strict MIME
compliance in favor of finding unproperly encoded data within them,
e.g. to succeed when individual parts of a uuencoded file have been
sent with a MIME mailer as MIME messages. For that, it subjects all
"text/plain" parts of a message to encoding detection. You can use the
-z option (see above) for more strict RFC2045 compliance.
The scanner tends to ignore short Base64 data (less than four lines)
outside of MIME messages. Some checks for this condition are used in
desperate mode, but they may cause misdetection of encoded data,
resulting in some invalid files.
Files are always decoded into a temporary file first, then this file is
copied to the final location. This is to prevent accidentally
overwriting existing files with data that turns out too late to be
undecodeable. Thus be careful to have twice the necessary space
available. Also, when reading from standard input, all the data is
dumped to a temporary file before starting the usual scanning process
on that file.
uudeview tries to derive all necessary information from the Subject:
line if present. If it holds garbage, or if the program fails to find
a unique identification and the part number there, uudeview might still
be able to decode the file using other heuristics, but you’ll need
major luck then.
Yet this is only a concern with split-files. If all encoded files only
consist of single parts, don’t worry.
If you rename, copy or link the program to uudecode, it may act as a
smart replacement for the standard, accepting the same command-line
options. This has not been well-tested yet.
SEE ALSO
uuenview(1), uudecode(1), uuencode(1).
The UUDeview homepage on the Web,
http://www.fpx.de/fp/Software/UUDeview/
BUGS
To read a file whose name starts with a hyphen ’-’, prepend a path
name, for example ’./’.
The checksums found in BinHex data are ignored.
The program cannot fully handle partial multipart messages (MIME-style
multipart messages split over several mail messages). The individual
parts are recognized and concatenated, and the embedded multipart
message is "decoded" into a plain-text file, which must then be fed
again to uudeview. Don’t worry, these kinds of messages are rare.
UUDeview cannot decipher RFC 1522 headers.
June 2001