aboutsummaryrefslogtreecommitdiff
path: root/src/unalf.rst
diff options
context:
space:
mode:
Diffstat (limited to 'src/unalf.rst')
-rw-r--r--src/unalf.rst358
1 files changed, 0 insertions, 358 deletions
diff --git a/src/unalf.rst b/src/unalf.rst
deleted file mode 100644
index e94fc21..0000000
--- a/src/unalf.rst
+++ /dev/null
@@ -1,358 +0,0 @@
-.. RST source for unalf(1) man page. Convert with:
-.. rst2man.py unalf.rst > unalf.1
-
-.. include:: ver.rst
-
-.. |date| date::
-
-=====
-unalf
-=====
-
---------------------------------
-extract Atari 8-bit ALF archives
---------------------------------
-
-:Manual section: 1
-:Manual group: Urchlay's Atari 8-bit Tools
-:Date: |date|
-:Version: |version|
-
-SYNOPSIS
-========
-
-unalf [**--help**] [**-aehtklLopqtv**] [**-d** *dir*] [**-x** *wildcard*] *alf-file* [*wildcard* ...]
-
-DESCRIPTION
-===========
-
-**unalf** lists, extracts, or tests the contents of an *ALF* archive.
-
-*ALF* is a compressed archive format similar to **arc**\(1), though
-not compatible with it. It was used on the Atari 8-bit platform
-beginning in the late 1980s. The Atari executables are **LZ.COM**
-for the compressor and **DZ.COM** for the decompressor. **unalf** is a
-port of **DZ.COM** for modern operating systems, with added features.
-
-Extracted files are written to the current directory by
-default. Existing files are backed up by default (by adding a **~**
-suffix to the filename).
-
-If one or more *wildcard* arguments are provided, files will only be
-listed or extracted if they match one of the wildcards. See **WILDCARDS**
-below for details.
-
-Only one *alf-file* argument is allowed. It's impossible to process
-multiple ALF files per run of **unalf**. If you need bulk extraction,
-use e.g. a **for** loop in a shell script.
-
-**unalf** can't read an ALF file on standard input; *alf-file* must be
-a real file.
-
-OPTIONS
-=======
-
--a
- Convert text file line endings and tabs from ATASCII to ASCII. Text
- files are detected by looking at the first 2 bytes of the extracted
- file. If both are printable ASCII (including ATASCII EOL, aka **$9B**), the
- file is considered text.
-
- Note that *only* line-endings and tabs are converted. Other ATASCII
- characters are left alone. If you need anything more in-depth, use
- **a8cat**\(1).
-
-.. convert EOLs and tabs in text files.
-
-**-aa**
- Convert line endings and tabs in *all* extracted files. This will
- corrupt any executables or non-text data files, so use with caution.
-
-.. convert EOLs and tabs in ALL files.
-
--d output-dir
- Write extracted files to this directory, which will be created if it
- does not exist. The default is the current directory.
-
-.. set output directory (created if needed).
-
--e
- Extract files. This is actually a no-op, as extraction is the
- default action.
-
-.. extract files (redundant; this is the default action).
-
--f
- Fix (remove) junk at EOF. This option truncates the *alf-file*.
- It is the only **unalf** option that writes to the input file. No
- backup is made.
-
-.. fix (remove) junk at EOF.
-
--h, --help
- Show built-in help message.
-
-.. show this help message.
-
--k
- Keep trailing periods. In most (all?) ALF files, filenames that have no
- extension are stored with a trailing period, e.g. '**FOO**' would
- be stored as '**FOO.**'. On the Atari, the extracted file would be
- named '**FOO**', so **unalf** does the same by default. With **-k**,
- the file will be named '**FOO.**'.
-
-.. keep trailing periods (dots) in filenames.
-
--l
- List filenames in archive, one per line, but do not extract. Use
- **-v** for more information (file size, etc). Obeys *wildcards* and
- the **-x**, **-L**, **-k** options.
-
-.. list files in archive (filenames only).
-
--L
- Lowercase filenames. Example: **FOO.TXT** will extract to **foo.txt**.
-
-.. use lowercase filenames.
-
--o
- Overwrite files, if they already exist. The default is to rename
- existing files, adding a **~** suffix. Note that renaming **file**
- to **file~** *will* overwrite **file~** if it already exists.
-
-.. overwrite files (do not create file~ backups).
-
--p
- Extract to standard output. All the files that get extracted will be
- printed to stdout with no delimiters, so this is most useful when
- only extracting one file. **-q** is automatically enabled by this option.
-
- *Warning:* No checking is done to see whether stdout is a terminal.
- Printing binary files to a terminal is a good way to make a mess.
- Even text files with the EOLs translated can still contain ATASCII
- formatting/graphics codes that can confuse your terminal. You have
- been warned.
-
-.. extract to stdout (enables -q).
-
--q
- Quiet extraction or testing: do not print "Uncrunching *file*"
- or "Testing *file*" messages. Errors and warnings will still be
- printed. This is the default when **-p** is used. This option
- doesn't do anything when used with **-l** or **-v**.
-
-.. quiet: don't print filenames during extraction/testing.
-
--t
- Test archive. Same as extraction, except the files are not written
- anywhere.
-
-.. test archive.
-
--v
- Verbose listing of archive contents, with compressed and original
- sizes, compression ration, date/time stamps, and checksum. The
- output format is similar to that of **arc -v**, minus the *Stowage*
- column, since *ALF* doesn't support multiple compression types. The
- date and time are displayed, but in most .alf files these are the
- default values of "8 Jan 82 12:24a".
-
- Unlike **-l**, the **-v** listing shows the filenames exactly as
- stored in the archive (ignores **-L**, enables **-k**), and always
- shows all the files (ignores *wildcards* and **-x**).
-
-.. verbose listing of archive contents.
-
--V, --version
- Show **unalf** version number and exit.
-
-.. show version number.
-
--x wildcard
- Exclude (do not list or extract) files matching *wildcard*. See
- **WILDCARDS** below. This option can be given multiple times
- to exclude multiple patterns.
-
-.. exclude <wildcard>. may be given multiple times.
-
-.. ENDOPTS
-
-WILDCARDS
-=========
-
-Wildcard (aka glob) matching works like it does on the Atari: *\*.\**
-matches any filename (whether or not it has an extension), and *\**
-or *\*.* only match filenames with no extension.
-
-A *\** matches any number of characters (including zero). A *?*
-matches a single character. All other characters match themselves, so
-a wildcard with no *\** or *?* must match exactly.
-
-Like the Atari, anything in the name or extension following a *\** is
-ignored: **FOO\*BAR.TXT** is equivalent to **FOO\*.TXT**, and
-**FOO.T\*T** is equivalent to **FOO.T\***. **FOO\*TXT** is
-equivalent to **FOO\***, and *will not* match the file **FOO.TXT**.
-
-Unlike the Atari, matching is case-insensitive.
-
-To avoid your shell trying to expand the wildcards, always quote them!
-Example::
-
- unalf filename.alf '*.txt'
-
-EXIT STATUS
-===========
-
-0
- Success.
-
-1
- Fatal error (I/O or bad command-line arguments, stack under/overrun).
-
-2
- Processing completed OK, but at least one file in the archive
- has a bad checksum.
-
-DIAGNOSTICS
-===========
-
-Besides the standard error messages such as "no such file or directory":
-
-Fatal errors
-------------
-
-**unalf** will exit with status 1 immediately after these errors:
-
-**fatal: this is an ARC file, not ALF**
- Self-explanatory. Use the **arc**\(1) utility for this file.
-
-**fatal: not an ALF file**
- Self-explanatory. Either the file is too small (less than 29 bytes)
- or its first two bytes don't match the *ALF* signature **0x1a** **0x0f**\.
-
-**fatal: stack underrun/overrun**
- Generally means the archive is corrupt. Valid ALF files should never
- cause these errors.
-
-**fatal: compressed data is truncated, EOF before end marker**
- Self-explanatory. The ALF file ends before the compressed data does.
-
-Warnings
---------
-
-**unalf** will continue after these messages occur.
-
-**junk at EOF (ignoring)**
- Mostly harmless: does *not* imply data corruption.
-
- Usually this is caused by the .alf file being stored on a CP/M disk
- at some time, or by a dumb file transfer protocol. Either way, the
- file gets padded to the block size of the filesystem or protocol.
- Usually, the padding characters are **0x1a**, aka ASCII control-Z.
-
- This message means you can't append to the ALF file with **alf -a**
- or **LZ.COM**. You can, however, use **unalf -f** to remove the junk.
-
-**checksum error on** *<file>*
- The archive is corrupt. If *<file>* is a text file, it may be
- partially readable. If it's an executable or other binary file, it's
- probably unrecoverable. **unalf** will try to extract the rest of
- the archive, but will exit with status 2 when it's done.
-
- If you have an ALF file that does this, try it with the Atari
- **DZ.COM** and see if it has the same problem. If it doesn't,
- you've found a bug in **unalf**, please send me the .alf file via
- email (see **AUTHOR**, below). Actually, I'd be interested to see
- the .alf file even if it doesn't work on the Atari either.
-
-*<file>* **should be** *<size>* **bytes, but extracted to** *<size>*
- The archive is corrupt. If this happens on the last (or only) file, it
- probably means the ALF file was truncated. You'll almost certainly
- get a checksum error for *<file>*, too.
-
-**bad Atari filename** *<filename>* *<reason>*
- The filename stored in the ALF header doesn't follow the rules for
- Atari DOS filenames. *<reason>* will be something like "doesn't start
- with A-Z" or "invalid character". The filename will be printed with
- any unprintable characters as hex values (e.g. **$01**).
-
-**header #<n> (compressed|original) size is...**
- Followed by "impossibly large", "suspiciously large", or "too large
- to fit on a floppy disk". May indicate a corrupt archive, or someone
- really might have created an ALF file with files this big... though
- "impossibly large" means >=16MB. **unalf** can't extract a file
- that big.
-
-**filename has underscore, OK on Sparta/MyDOS, not Atari DOS 2.x**
- Not an actual problem, unless you try to extract this ALF file on
- an Atari running Atari DOS 2.0/2.5, or any other DOS that doesn't
- allow underscores in filenames.
-
-**ALF files don't normally contain other ALF files, are you trying to extract/list multiple ALF files at once?**
- You gave a *wildcard* argument that ends with *.alf*. This is OK if
- your *ALF* file actually contains another *ALF* file, but that would
- be a pathological case. Most likely, you're trying to extract multiple
- *ALF* files with one command, which doesn't work. Use one **unalf**
- command per file.
-
-NOTES
-=====
-
-This **unalf** is 100% compatible with the original Atari **DZ.COM**
-aka **UNALF.COM**, with the following differences:
-
-- There is no interactive mode. The file to extract must be given as
- a command-line argument, and the output directory must be given
- with the **-d** option.
-
-- This **unalf** is capable of listing or testing the contents of an archive
- without extracting it, plus other handy features such as extracting
- to standard output and text file EOL conversion.
-
-- Turning the screen off for speed makes no sense on modern operating
- systems, so there's no option for that.
-
-Neither this **unalf** nor **DZ.COM** actually use the dates/times
-stored in the archive. Extracted files will have their timestamps set
-to the current date/time.
-
-A note about the Atari filenames: **DZ.COM** is sometimes found on
-old disk images as **UNALF.COM**, and **LZ.COM** is sometimes called
-**ALF.COM** or **ALFER.COM**. I've used the original names partly
-out of respect for the original author, and partly to avoid confusion
-between my **unalf** and the Atari one.
-
-BUGS
-====
-
-A minor one: **unalf** can't correctly extract files larger than about
-15MB. This could be a problem in **alf** (though the archives look
-OK to me), or it could be a bug I introduced when porting **unalf**,
-or it could be a bug in the original **DZ.COM**. Files this large are
-a pathological case for *ALF*, anyway, since nobody ever used them on
-the Atari 8-bit.
-
-COPYRIGHT
-=========
-
-The original AlfCrunch (**DZ.COM** and **LZ.COM**) for the Atari
-8-bit was released into the Public Domain. Portions of the **DZ.COM**
-code are included in **unalf**, converted from 6502 instructions to
-C macros.
-
-**unalf** is released under the WTPFL: Do WTF you want with this.
-
-AUTHOR
-======
-
-The original AlfCrunch for the Atari 8-bit was written by Alfred, who
-can be reached via the AtariAge.com forums with the username "Alfred".
-
-This **unalf** was written by B. Watson <urchlay@slackware.uk>.
-
-SEE ALSO
-========
-
-**alf**\(1), **alfls**\(1)
-
-.. include:: manftr.rst