XDEVIEW(1)

🌸 XDEVIEW(1) β€” General Commands Manual 🌸

okay so bestie, you know how the manual name is xdeview(1) and it lives in the General Commands Manual? yeah. that's the vibe. this is that page, but make it make sense. πŸ’–


✨ NAME ✨

xdeview β€” a powerful decoder for binary files πŸ”₯


✨ SYNOPSIS ✨

xdeview [Xt options] [-- options] [file(s)]

✨ DESCRIPTION ✨

So. XDeview is a smart decoder for attachments that you got in encoded form, like, via electronic mail or from the usenet. it's basically the standard uudecode(1) command but with more comfort and more flexibility, and honestly? it ate. πŸ’…

XDeview supports these encoding methods, no cap:

  • uuencoding
  • xxencoding
  • Base64
  • BinHex

and it can also handle split-files (the ones that got sent in multiple parts) plus multiple files at once, which lowkey makes the whole decoding process so much simpler. Usually you will not have to manually edit files to prepare them for decoding. not even once. 🫢

If you don't really need a graphical frontend for these kinds of jobs, go have a look at uudeview(1) and uuenview(1). they're right there. πŸ‘‘

Once you invoke the program, it scans all the given files for encoded data. If any of them were directories, it will recursively dive into them 🌊. And you don't even need to give files on the command line β€” you can also select files later from within the program, main character energy fr fr. After the initial scan finishes, you get a list of files that seem like they can be decoded properly, and then you can pick files individually for decoding. iconic.


✨ OPTIONS ✨

ngl there's no real need to set options on the command line; you can set them from within the program too. but heads up: options must be preceded by a double-hyphen --, otherwise they might get mistaken for display options. πŸ™ˆ

  • -d β€” sets the program into desperate mode πŸ’€. It'll then offer to decode incomplete files for you. This is useful if you're missing the last part of, say, 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. so like, proceed with caution bestie.
  • -f β€” uses fast mode for file scanning. The program assumes 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, which probably causes 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. fr. 🚩
  • -o β€” gives the OK to overwrite files that are already there on decoding. The default is to prompt the user whether to overwrite, rename or skip the file.
  • -v β€” 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 this if these messages disturb you. πŸ™ˆ
  • -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.
  • -b β€” this changes xdeview's policy of finding a part number on a subject line, and may only be needed in some rare cases when part numbers are found in () parentheses as well as in [] brackets, like in a series of multi-part postings. By default, xdeview uses the numbers found in () parentheses first. But if this number indicates the file's number in the series and the part number is given in [] brackets, use this parameter to make the program read the other number first. This does not affect decoding of files with only one or neither type of brackets. If you prefer, you can also use the option as -b[]. πŸ’…
  • -s β€” read "minus smartness". This option turns off automatic part number detection from the subject line. Try this option if xdeview 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). Note: the correct part number found in proper MIME files is still evaluated.
  • -t β€” use plaintext messages. Usually, XDeview only presents encoded data for decoding. With this option set, text parts from MIME messages and non-encoded messages are also offered. Plaintext messages frequently don't have an associated filename, so they're assigned a unique name from a sequential four-digit number. πŸŽ€

The main window of xdeview is composed of six main elements. let's go through them, bestie, one by one:

  • At the top is the Menu Bar.
  • Centered is the File List, which lists all the files that have been detected in the encoded data and are ready for decoding.
  • Left of the File List is the Status List, which describes the status of each file. Usually this list will show "OK" for all files, since display of erroneous files is normally suppressed.
  • On the right is a bunch of short-cut buttons with the most heavily-used functions.
  • At the bottom of the window is the Save Path entry field.
  • And the status bar, also at the bottom.

Each of these items will be described individually in the following text. πŸ‘‘

File Menu πŸ’Ύ

  • Load ... β€” Loads encoded files. Then it scans them for encoded data and files, and those files get added to the File List. You can also select directories, which get recursively descended into. 🫢
  • Encode β€” Encode file(s), storing the encoded data on disk, sending them via email, or posting them to newsgroups. See below.
  • Helpers β€” Xdeview reads info from your .mailcap and .mime.types to figure out the right default action when you hit the "Execute" button. In this dialogue you can configure the locations of these files.
  • Save Setup β€” Saves all current options, the input and output file paths, etc. into the .xdeviewrc file in your home directory. This file is automatically read upon startup, so your saved settings will be the default in future sessions. Fun fact: the resource file is actually a Tcl script, so you can edit it with any editor. ✨
  • Quit β€” Exits the program. Bye bestie πŸ’…

Options βš™οΈ

Sets various options that modify how the program behaves. Heads up: most options only catch for files read afterwards. 🫠

Fast Scanning

Sets fast scanning mode. The program will then assume all input files contain at most one encoded part (true for files from a news spool, fr fr). The scanning engine speeds up because it doesn't have to read each input file completely β€” it stops scanning once encoded data has been found.

The decoder has to disable some safety options in fast mode, so certain problems with the file will only be detected when finally decoding the file. πŸ‘€

Automatic Overwrite

When decoding a file that's already present in the target directory, the user gets asked whether the file shall be overwritten. Enable this option and target files get overwritten without asking. No questions, no chill. πŸ’€

Desperate Mode

Usually you're only shown files where all parts have been found. Enable Desperate Mode and you'll also get to see the other files too, with an appropriate description of the problem in the Status List. In desperate mode, the decoder will also try to detect short Base64 files outside of MIME messages. This is normally disabled, because these desperate tries to find Base64 encoding may cause misdetection of encoded data β€” which again results in invalid files. 😭

Verbose Mode

Opens a separate text box where additional messages get written while scanning the input files. These messages are extremely helpful for finding out what went wrong if files can't be decoded properly. Detective mode activated πŸ•΅οΈ

Alternate Bracket Policy

Changes the heuristics by which the decoder tries to extract a part number from the subject line. The algorithm usually gives numbers in braces () higher priority than numbers in brackets []. If both kinds of brackets are present, and their use is conflicting (for example if both the part number and a series number are given), then you may have to explicitly select the bracket policy. If this option is false (default), then the "part number" is taken from the braces (), otherwise from the brackets []. Pick your fighter πŸŽ€

Dumb Mode

Disables automatic part number detection by parsing the subject line. Use if xdeview fails to pick up the correct part numbers. Note that with the option set, the parts must be correctly ordered in the input files. Also, missing parts will not be detected this way. πŸ™ˆ

Handle Text Files

Usually XDeview only presents encoded data for decoding. With this option set, text parts from MIME messages and non-encoded messages are also offered. Plaintext messages frequently don't have an associated filename, so they're assigned a unique name from a sequential four-digit number. πŸ”’

Auto Info

Opens up the information window whenever you click on a file in the File List. Iconic behaviour tbh.

Remove Input Files

With this option set, input files are removed if any file was successfully decoded from them.

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. ⚠️

MIME Compliance

Be more strict when reading MIME input files. Strictly business. πŸ’…


Actions 🎬

  • Decode β€” Decode the selected file(s).
  • Rename β€” Rename the selected file(s), for example if the filename conflicts with existing files, or if the name doesn't meet system limitations.
  • Decode All β€” Decode all files currently visible in the File List.
  • Info β€” Displays available info on the currently selected file (if more than one file is selected, only info for the first will be displayed). This is the zeroeth part of a file, if available, or the header of the first part up to the beginning of encoded data.
  • Execute β€” Runs an external program with the currently selected file. A program is selected by first looking at the Content-Type of the message, if available, then by checking the file's extension. The appropriate information is read from your .mailcap and .mime.types files (although the handling of information in .mailcap files is currently incomplete). If no matching type is found, a dialog box pops up where you can enter any command.
  • List Text File β€” This is for the rare cases when a text file has been sent through the net in encoded form. Use this action only when you know the file in question is in fact a text file β€” otherwise you'll get a load of trash on the screen. 😭

Help πŸ†˜

  • About β€” A short message from the Author. 🫢
  • License β€” Displays the license under which xdeview is distributed, the GPL. Read it, or you'll hear from my lawyers. πŸ‘‘

πŸ“‹ FILE LIST πŸ“‹

The File List is a list box displaying all the files that have been picked up while scanning the encoded data. These files are ready for decoding, previewing, or anything. The list can be scrolled using the scrollbar on the right of the list.

Individual files can be selected simply by clicking on them. Multiple files can be selected by holding down the CTRL key and clicking on the individual files. Cute, right? πŸ’–


🌈 STATUS LIST 🌈

The Status List notes the corresponding status for each file in the File List. Usually you'll just see "OK" here; otherwise, an error message is shown describing why the file cannot be decoded properly. There are the following states:

  • OK β€” All parts of the file have been found, and the encoded data looks correct on first sight. There are certain problems that might only appear when decoding the file, but usually everything is fine. ✨
  • Incomplete β€” This file is missing one or more parts. If you decode this file, the output data will be corrupt and usually unusable. πŸ’€
  • No Begin β€” The file doesn't have a beginning. The decoded file will be most certainly corrupt and unusable.
  • No End β€” No end was found on the file. This usually means that one or more parts at the end are missing. The degree of usefulness of a decoded file depends on the file type.
  • Error β€” A previous attempt to decode the file has failed.

πŸŽ€ SHORT-CUT BUTTONS πŸŽ€

The buttons on the right side of the window are short-cuts for the menu items. Read the discussion of the Main Menu items above for an explanation. Iykyk πŸ’…


πŸ“ SAVE PATH πŸ“

This is the path where decoded files will be written to. Choose wisely bestie 🫢


πŸ‘‘ STATUS πŸ‘‘

A short message what the program is currently doing or what it expects you to do.

πŸ’… ENCODING MENU πŸ’…

okay so when you're encoding files (that's "Encode" from the "File" menu, you know the vibe ✨), a big gorgeous dialog box opens up and it's giving options. So many options. If you selected multiple files to encode, there's a status line at the top showing how many files are left to go 🫢. And the dialog just... stays open until every single file has been handled. No early exits, she commits. πŸ’–


Filename

The current file you're encoding. You cannot edit this field, bestie. It is what it is. πŸ’€

Send As

The file name that the file will actually be sent as. Defaults to the filename with all the directory information stripped off. 🌸

Use Subject

When mailing or posting, this text gets used as the subject. The filename and part numbers are added automatically, so like β€” you can totally leave this line empty if you want. πŸŽ€

Lines per File

Sets how many encoded lines go in each part. Bigger files get automatically split into multiple parts. Use this if you're posting files to a newsgroup, or if the recipient's system can't handle large files. A good splitting size is 1000 lines. And "0" lines means don't split at all. ⭐

... Encoding

Selects which encoding method to use. If you're sitting there wondering which one's the best, you might find a clue in the article "Introduction to Decoding". iykyk πŸ¦‹

File In (Path)

Sets a directory to encode the file to. The encoding goes into files with the same base name as the original, but with extensions of .001, .002 (depending on the number of parts that are necessary, as enforced by the "Lines per File" setting). πŸ’œ

Email To

Give a comma-separated list of email addresses here. Heads up: this option might be disabled if your system doesn't allow sending emails. πŸ™ˆ

Post To

Here you can enter a comma-separated list of newsgroups to post the file to. Also might be disabled, if your system doesn't support posting news. 😭

NNTP Server

This field only shows up on some systems β€” specifically when a news host is needed but none was configured at compile-time. If this field does appear, you must enter a valid host name here in order for posting to work. And if you don't want to post the file anyway? Don't worry about it. πŸ’…

OK

Performs the selected action(s) on this file and skips to the next one. ✨

OK to All

Uses these settings for each file in question β€” no prompting for the other files β€” so it sends all the files at once. Slay. πŸ”₯

Next

Does not encode the file, and skips to the next one. (sorry, there's no button to skip backwards 😭 the past is the past)

Cancel

Cancels encoding and returns to the main menu. πŸšͺ


πŸŽ€ SETUP FILE πŸŽ€

If it exists, the file .xdeviewrc in your home directory gets executed in the Tcl interpreter during program initialization. It must be a valid Tcl program, and you can use it to set certain options by default. For those of us who are not Tcl-fluent (no shame, it's giving niche πŸ’€), variables can be set using this syntax:

set var_name value

The following variables (options) can be set β€” and yes, look at the text above for an explanation of what they're doing πŸ‘€:

  • OptionFast β€” If set to 1, use fast scanning mode. ⚑
  • OptionBracket β€” If set to 1, use the alternate bracket policy.
  • OptionOverwrite β€” If set to 1, assume it's Ok to overwrite files without asking. (bold of you 🫣)
  • OptionDesperate β€” If set to 1, switch into desperate mode. πŸ’€
  • OptionVerbose β€” If set to 1, print progress messages.
  • SaveFilePath β€” This is a string variable holding the default Save Path, aka where you want decoded files to go. πŸ’–
  • EncodeMaxLines β€” Maximum number of lines per file for encoding. "0" for unlimited.
  • EncodeEncoding β€” Default encoding to use. "0" for UUencoding, "1" for XXencoding and "2" for Base64 encoding. 🌈
  • NNTPServer β€” The address of your NNTP server (only needed on some systems). Can also be set β€” and preferably is set β€” in your environment variable NNTPSERVER.

🌸 RUNTIME MESSGAGES 🌸

If you've enabled verbose mode, progress messages will appear in their own little text window titled Runtime Messages. The messages generated during the scanning phase 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. But ngl, understanding this section is not necessary 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 get 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's 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
  3. No End
  4. No encoded data found.
  5. File looks Ok
  6. An error occurred during decoding of the file.
  7. File was successfully decoded.

⭐ NOTES ⭐

If you cannot execute xdeview, and it reports something like "command not found", but you're sure the file itself can be found β€” check the reference to the main file uuwish at the top of the file. πŸ•΅οΈβ€β™€οΈ


πŸ’– SEE ALSO πŸ’–


and that's the whole page, bestie!! this one's dated June 1996 and it's the XDEVIEW(1) manual β€” vintage icon behavior, she ate and left no crumbs πŸ‘‘πŸ’…πŸ«Άβœ¨